QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]+ @7 h' p8 s  i
! D/ V! n( T( W7 I2 t: h% ]$ c  C
        . w7 a1 q" Y# c7 ?+ C6 I
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: ) i! B  T0 \: k+ m% P& k+ R6 z
BLOB字段的读取: * y6 I. y/ B! C
TBlobSTream* TemplateStream;
2 f2 `9 e( S  A$ y  z- v% H/ M$ n& Y char* TempPlatePtr;              
' e5 H0 d! ]3 [0 y& M( Y7 _
$ B: T4 I7 Q8 p7 B' L TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
3 R3 q! N2 w4 E  g) j6 |                        ("SearchTem"),bmReadWrite); 2 l* L, K; s: w; C9 g) t" q
TemplatePtr= new char[TemplateStream->Size];
9 V) o+ q8 y2 {  x5 _9 K TemplateStream->Read(TemplatePtr, TemplateStream->Size); * L4 a/ X: f$ C
( Q" V: D4 R% s* s+ d/ F, W! ~
BLOB字段的写入: 8 H* x! \0 T6 z, S) S0 M
TBlobSTream* TemplateStream;
9 A- t1 b7 n3 Q' o4 x char* TempPlatePtr;              
" k- l+ \+ w  ]( S
" P5 {5 w! q. u+ }! A: I9 j" ]) K TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName 9 j7 F( v2 N* @. b* [9 ~
                        ("SearchTem"),bmReadWrite);
$ g" e" z, y& M+ U& @& \4 D TemplatePtr= new char[TemplateStream->Size];
) J1 H# G% O+ p. M5 L TemplateStream->Write(TemplatePtr, TemplateStream->Size);
; [& }: d0 @, c& G- u# }
% _! {$ b; @  N% ^1 }6 A2 J________________________________________________________________
2 A' u4 w. @8 E7 A3 l4 R补充: ( N" f* g5 D3 k' L9 l6 o
获得字段的大小用函数datalength + \4 d# b$ m  @& e8 P

" W3 k1 p5 g9 `& A4 p: e$ h! t8 rSQL Server端要作一点设置:
$ H6 c" f$ ~7 c# r7 K1 s$ T" h3 UBy default, WRITETEXT is a nonlogged operation. This means that  
! @) v, G/ ~1 jtext or image data is not logged when it is written into the database.  
) A# h% F9 n7 eTo use WRITETEXT in its default, nonlogged state,  
: r) I, @1 t  ?, J//注意!!
" T$ l4 ]- j- O5 E  Uthe system administrator must use the sp_dboption system stored  + O, l. M4 o( s3 ^
procedure to set select into/bulkcopy,  4 w$ Y8 Q* B  D- D
// % D0 o: i7 W2 P: o" E
which allows nonlogged data to be inserted. ' \: a. k4 x: n$ q) o8 K1 q
( `/ D: O, j  _1 K) s: {: e
做了试验,直接写SQL语句好象不行. * b" m' l& c  b& `& h" q
____________________________________________________________________ ' X4 ?- U! a" j* w  h1 D. Y7 R
        一些注意事项和一个例子
& w9 w* `) S  S8 h4 J9 m1 H: g( Q1 G在写入时:
" `/ ?) @( o0 I4 H/ l' T(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
: L) c$ M, z* s; E% f: p: Y$ a$ S(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
5 i" b+ k- m. f使得TTable(TQuery)是可写的.
: g3 b$ E1 H: |. g  p$ L
2 \$ \$ n# |( s5 D5 g下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
- g  [' ]7 \  `& t$ Mscript为一个BLOB字段: * E9 x% a& G0 N" w( D, N/ I1 d
   TBlobStream *pScriptStream; 1 g: O* j- l# e; J
  //插入一条记录
$ ]8 e: [" w8 q6 X+ L        strSQL1="insert  into  content(file_id,script,key_image) values('";
5 i1 ]6 @: ]) ^: r7 ], G        strSQL1=strSQL1+m_szFileID+"',null,null)";
& w8 \. K/ l4 ?- J6 j" v9 y        dmStoryEditor->qryExec->SQL->Clear();
$ ~- Z9 q+ C7 T- s( }! t* ^        dmStoryEditor->qryExec->SQL->Add(strSQL1); ) h- S( t0 [( c; Y6 e
        dmStoryEditor->qryExec->ExecSQL(); ) `" \. \+ y. c% h  E9 B& E/ u. d
        dmStoryEditor->qryExec->Close();
) y/ i: P- x' i  //整理要写入的Blob数据   7 ], l" L- |/ g" s
        LockMemories(NewsScript); , @/ R1 }* W8 G1 O/ ^
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
( }- c% n# T! o3 B; u        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
4 k1 G) a* x8 |& d        if(NewsScript.m_pScript!=NULL) ) b1 ?, N! e1 I/ E  b: P8 {# o
        {
& t( Y5 v  A0 w0 \   //再将刚插入的记录读出来,使该Query与该条记录关联 / h) D1 k2 H& h; J' \. a
        strSQL1="select  file_id,script  from  content  where  file_id='"+ : K! c) ?" |* {5 Y6 \) |+ k
                m_szFileID+"'";   |! R7 ^5 J' A+ m* E) @: j
   //允许该Query写
. R7 H$ U. n2 t9 R  m* ]            dmStoryEditor->qryExec->RequestLive=true;
4 x) w9 Z4 i/ z& e. a) N9 \8 C            dmStoryEditor->qryExec->SQL->Clear(); + E& D' H5 T( s1 d5 R
            dmStoryEditor->qryExec->SQL->Add(strSQL1);
; ^" R2 d$ r/ _) e            dmStoryEditor->qryExec->Open(); / N8 j: z5 [, @# M! y& b
            dmStoryEditor->qryExec->First();
6 l' s3 q7 h. q2 k9 A   //将该Query置为可写 ' Z) \$ _: |" N6 G
            dmStoryEditor->qryExec->Edit();
3 Y$ v1 f, X* I9 W0 V            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->   a8 }1 S  u7 h% @2 K" H
                                qryExec->FieldByName("script"),bmReadWrite); + p1 X% P4 }( p
            pScriptStream->Write(NewsScript.m_pScript,  
) R$ q2 U( r4 e9 Z, p. z7 U" h% @/ Z' E                                        NewsScript.m_lScriptRealSize);
9 h4 Q- K/ R+ x8 @3 g            dmStoryEditor->qryExec-&gtost(); 0 @& N* ]" ?/ ~) B
            dmStoryEditor->qryExec->RequestLive=false;
8 D$ W; C; |: U+ p7 A            delete pScriptStream; . N% n/ T0 G6 r! m% K2 v
       }
# I6 D# k  C8 ?1 Q7 B. L       GlobalUnlock(NewsScript.m_hScript);
1 R. Y4 Y2 k* r3 {  ?& t       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, 2026-6-11 04:35 , Processed in 0.393688 second(s), 52 queries .

回顶部