QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |正序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]2 R+ s' T) ^8 _7 C
4 k: f/ l/ m- J, W! s4 X. O
        1 K" @1 @& J0 D; I5 k! Y5 O
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: * R, j1 {1 t+ ~
BLOB字段的读取: , M7 G8 E6 M9 m5 C' B/ }
TBlobSTream* TemplateStream; ! C4 s# P* E, ~* l4 Q
char* TempPlatePtr;              
0 \. Y) b# {! n, Q  K) u
2 U0 V9 O6 {+ J8 s" @8 e& B: f TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName + U3 D" e; S# j! C, x) Q
                        ("SearchTem"),bmReadWrite);
6 s  w5 A* H5 y" `: q TemplatePtr= new char[TemplateStream->Size];
& Q* |: e  K9 F- u2 E TemplateStream->Read(TemplatePtr, TemplateStream->Size); 6 q0 ^' `: k4 x

+ T  |  I" ^: V& @, p( @( P# r+ CBLOB字段的写入:
9 J. ?) Q2 V/ a9 ?9 K& z  \ TBlobSTream* TemplateStream;
# l8 f- C- S. h6 J  Z' \. `' t- Z char* TempPlatePtr;              
! B: N2 y/ v" Z* x( r
) s3 d' H1 }, }. A TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName   Q/ m6 x& r9 V
                        ("SearchTem"),bmReadWrite);
- w0 ?6 G) k8 p/ K. h4 G/ C TemplatePtr= new char[TemplateStream->Size]; " d7 D5 Q+ J! r0 T1 j4 Y
TemplateStream->Write(TemplatePtr, TemplateStream->Size);
& U3 e7 I2 M6 f
- x, \3 J+ Z6 B. `: Y6 _4 X& h% f& c________________________________________________________________ $ a, ~9 @$ T" y- P, f) y
补充:
( c: U" _8 A/ s6 f1 h. D获得字段的大小用函数datalength , P- w  V2 p8 ~5 v/ c$ i
5 O, F! X- M2 e, U
SQL Server端要作一点设置:
3 ]+ f% C$ y9 g* e# K& fBy default, WRITETEXT is a nonlogged operation. This means that  
% B* t9 L/ a, C) Mtext or image data is not logged when it is written into the database.  
9 N1 K, @+ f  F6 HTo use WRITETEXT in its default, nonlogged state,  
- z3 C* z/ q& B% {" c8 U/ `//注意!!
" \. T! Z% u' E* F, ythe system administrator must use the sp_dboption system stored    y  T+ W, U! V' Z1 A5 F6 L4 a
procedure to set select into/bulkcopy,  ( S2 `# s* c7 Y9 c* t- U
// 4 B& Y1 L5 F1 D
which allows nonlogged data to be inserted. - U+ {' @) J' w. V" e( y

/ a% j+ G0 ~% ~+ |9 Q: c1 Y做了试验,直接写SQL语句好象不行.
8 Q/ }2 i2 _0 w" M( h  H; x. V  s4 s____________________________________________________________________ - R! L  z' v( R
        一些注意事项和一个例子 % |2 C4 B! _3 c0 X
在写入时:
8 U% C% v' d* C3 e6 N# O3 `(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; / M* V% L8 O; }8 D9 U+ ?: M# a! D
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; ) S* m5 z  E8 \4 f
使得TTable(TQuery)是可写的.
1 N8 z! O, L  j# B6 Y4 J, R
" j( n) q/ I8 b6 k下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, ' I# L- C9 ]) U9 v& o' t* P( h
script为一个BLOB字段:
( c' h% R. O8 j- ?$ @; ?' I. n8 n1 {   TBlobStream *pScriptStream; 4 G, Y: E( `7 M0 w2 h
  //插入一条记录 ; A* [& N- h) q2 d" w! a  X: \! I
        strSQL1="insert  into  content(file_id,script,key_image) values('"; ( Z/ J$ [% y5 o3 c
        strSQL1=strSQL1+m_szFileID+"',null,null)"; $ E4 _) J% a7 `; I8 R7 g* Z& o
        dmStoryEditor->qryExec->SQL->Clear(); 2 }3 h% \; @7 z8 j4 f: q: g& ]
        dmStoryEditor->qryExec->SQL->Add(strSQL1);
! l0 K% L. j, t  F6 ~        dmStoryEditor->qryExec->ExecSQL(); 5 C/ w- u/ i. D7 D% Z
        dmStoryEditor->qryExec->Close();
. L. g# ^! s0 S4 @7 D  //整理要写入的Blob数据   4 Y7 }3 C* K+ v
        LockMemories(NewsScript);
9 b/ b/ e9 a) a        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum); * P4 [9 z9 Z# z4 z
        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
0 G% t, t3 i, e# {+ X( H        if(NewsScript.m_pScript!=NULL)
% ~# B# \) `, O0 Q        {
# }1 ]6 q) X% H* v   //再将刚插入的记录读出来,使该Query与该条记录关联
3 B* L8 R9 P! y0 o0 S        strSQL1="select  file_id,script  from  content  where  file_id='"+
% Y9 ^* k' D4 p# ?; n                m_szFileID+"'"; 6 E& B, s% g( y5 v8 S" X
   //允许该Query写 * W7 j9 u3 \8 i, u
            dmStoryEditor->qryExec->RequestLive=true;
  Z( e( [5 g% t7 s            dmStoryEditor->qryExec->SQL->Clear(); / C# ?" y8 s6 c) O& _6 F% G% k
            dmStoryEditor->qryExec->SQL->Add(strSQL1);
+ D9 H* j" _( m            dmStoryEditor->qryExec->Open(); " b+ V4 _! X: k8 z0 _' O
            dmStoryEditor->qryExec->First(); " v& H! B  h1 S) Z
   //将该Query置为可写 " P9 U% n* b2 [/ M
            dmStoryEditor->qryExec->Edit(); # M' G5 ]$ f0 H2 W$ L1 [! c
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor-> 0 m) r# B4 U/ P; ?! B$ u
                                qryExec->FieldByName("script"),bmReadWrite); 4 x% Y* q; G0 |
            pScriptStream->Write(NewsScript.m_pScript,  ) V3 ~, r, l/ I& K
                                        NewsScript.m_lScriptRealSize);
; R6 a8 ?+ F( b% s( a- S            dmStoryEditor->qryExec-&gtost();
2 o9 x  ]5 e; E8 q; f' P( g            dmStoryEditor->qryExec->RequestLive=false; : D; a8 u! \7 ?3 `" O
            delete pScriptStream; 0 ?  @0 f* X) v8 ?" N3 m' M
       } 1 M; v' _8 o# D$ P
       GlobalUnlock(NewsScript.m_hScript); 8 O0 t2 ~: T& }8 @6 J8 Q$ Q
       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-7-28 20:18 , Processed in 0.545738 second(s), 52 queries .

回顶部