QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3610|回复: 0
打印 上一主题 下一主题

在 C++Builder 中,如何自定义属性 [properties] ?

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
* y/ Q0 f  y# |% v2 O- W$ N
$ [" m# {& m: w        
. @; j, N$ p* H# a6 U0 R3 ^对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: , g6 x; ?% v9 t1 c  F' K" F8 V
BLOB字段的读取:
1 U9 _* k5 E$ b$ A) b* Y TBlobSTream* TemplateStream; 7 g% s0 t6 V) h4 v* t
char* TempPlatePtr;              
: n# F5 p& U- Q8 j
; Y, c$ i9 K' ^# J0 }7 e TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName ) N& ]& i$ |3 u- T, z& w2 m
                        ("SearchTem"),bmReadWrite);
5 J8 S5 ~4 |# d3 k7 h  ^8 C* e/ F TemplatePtr= new char[TemplateStream->Size]; 2 F2 a" w' v2 g& u  h
TemplateStream->Read(TemplatePtr, TemplateStream->Size); ) E4 i+ g4 {6 S

& W  ]0 _, T* e1 l; ?) @) CBLOB字段的写入:
1 u- @# b6 g+ x4 R, b8 X TBlobSTream* TemplateStream;
0 t& y0 Y& q5 [+ g8 w2 D- n char* TempPlatePtr;              
. A, L+ B' ?- `) O
' W- g$ M3 a( y" B TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName : ~$ D( U) u4 {1 X
                        ("SearchTem"),bmReadWrite); + D6 n; H+ M1 ^! n; D3 z4 }  s5 N
TemplatePtr= new char[TemplateStream->Size]; 8 J! J( a( m0 H$ _/ h) U+ E
TemplateStream->Write(TemplatePtr, TemplateStream->Size); 7 F8 }; `& J( D: ]: L- ~- o7 m$ Z  U
9 h$ @9 L/ A1 V9 u9 w) D; O! O3 y
________________________________________________________________
* j7 O& E: o- P2 x; Z5 u# S- y补充: - w. R# {2 \2 @4 A& S; l0 [/ N1 s( c0 L
获得字段的大小用函数datalength
  s/ ^4 D, p4 N% q$ M, b& T " {" Q; U: s9 l* j5 d7 V
SQL Server端要作一点设置:
2 d6 O8 f2 q# _By default, WRITETEXT is a nonlogged operation. This means that  0 @8 P3 c0 T, O, k  S
text or image data is not logged when it is written into the database.  & m+ Z9 l- c$ C" V" L
To use WRITETEXT in its default, nonlogged state,  $ ~; ]9 S2 v9 G5 L
//注意!! ! n) V9 S) E3 e4 c: L  ]" n1 v
the system administrator must use the sp_dboption system stored  ! h; A9 l1 X1 ?' M7 g; A: n
procedure to set select into/bulkcopy,  
3 {. B  ^* _6 z6 j" j// * l6 ~/ l: {* f$ T5 {
which allows nonlogged data to be inserted. 2 w- [: P3 Z- R4 X5 k# {

7 @& g& K, d& s8 w做了试验,直接写SQL语句好象不行. + V/ a* ?) w: R/ |$ B( \. f) f
____________________________________________________________________
1 P1 y2 \$ G& ?; F        一些注意事项和一个例子 , g5 I7 B, S3 k  P! Z
在写入时: % u( n( z5 L* K
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; ) e9 k+ n" d3 f7 y1 C- K0 E
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
2 `( B- S$ v7 J/ z$ a- X使得TTable(TQuery)是可写的.
0 Z7 I8 n( @# V' F6 q $ D  D8 X" i* B% Z
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
) `* ]' E2 T4 A7 pscript为一个BLOB字段: : u' n& L* }: l/ o! }) [: n* ~. \+ K
   TBlobStream *pScriptStream; : j' y" b" @, b; T
  //插入一条记录
7 l$ u' U" @+ U8 P1 s        strSQL1="insert  into  content(file_id,script,key_image) values('";
. H- n0 P2 b2 Z        strSQL1=strSQL1+m_szFileID+"',null,null)"; ! D+ A( }0 _6 }% N* E
        dmStoryEditor->qryExec->SQL->Clear();
( _0 o/ y# d5 A  ~+ K5 M1 J        dmStoryEditor->qryExec->SQL->Add(strSQL1);
2 j& G. I& C- n. k        dmStoryEditor->qryExec->ExecSQL();
  w" A- g, F$ G. S5 g, ?* w4 Y2 z. t        dmStoryEditor->qryExec->Close(); * b. G/ s- E- \, C' s
  //整理要写入的Blob数据   
' n7 o0 ^8 g. r        LockMemories(NewsScript);
! X8 G) n( X2 t5 h7 n/ e: k        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
: n2 T" H% e$ D7 @% Y        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
" }' a- p# R+ q" O7 V- D' @        if(NewsScript.m_pScript!=NULL) 8 E' h3 s, _% x4 |# s4 a, t- c
        { 2 o. n6 v( C4 [+ q0 Y
   //再将刚插入的记录读出来,使该Query与该条记录关联
/ j* ^' P3 N$ b' {        strSQL1="select  file_id,script  from  content  where  file_id='"+
, q+ b7 a# ~9 f6 E                m_szFileID+"'";
5 j" d% Y% y$ n* P* j- \( m2 Z   //允许该Query写 + H  [2 [7 b# q
            dmStoryEditor->qryExec->RequestLive=true; / t5 J" g/ ~; u/ m
            dmStoryEditor->qryExec->SQL->Clear();
/ J+ _1 P3 v% ?( S9 Y6 n            dmStoryEditor->qryExec->SQL->Add(strSQL1); 2 F8 J. c( e" N2 x* d0 _
            dmStoryEditor->qryExec->Open(); " \0 A) x$ d# I/ ~& X
            dmStoryEditor->qryExec->First();
* j5 j7 y+ M( Z0 l   //将该Query置为可写 5 G& O9 [: o  _2 z$ |+ J; R2 b
            dmStoryEditor->qryExec->Edit();
; o- _+ a& K* l* t" A4 R5 z7 o            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
" b0 S; m. [: W' B6 ~                                qryExec->FieldByName("script"),bmReadWrite);
$ M5 o: j, q; i8 A            pScriptStream->Write(NewsScript.m_pScript,  # o* C% M; t9 E
                                        NewsScript.m_lScriptRealSize); + D: {  M3 I0 H! P
            dmStoryEditor->qryExec-&gtost();
$ c5 G! y+ s1 _0 x9 P            dmStoryEditor->qryExec->RequestLive=false;
! C0 Q: d8 r" G+ [            delete pScriptStream; 1 \- W: I' ]3 L9 T0 S
       } ( [7 Y( X: d, d5 o  i! _
       GlobalUnlock(NewsScript.m_hScript); ) t! p! F$ `" T% p: W
       UnLockMemories(NewsScript);
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-12-29 03:15 , Processed in 1.047446 second(s), 52 queries .

回顶部