QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |正序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
2 c3 ^- o2 j" O% U; c) b  O + K: j4 |" F, s& Q" w" f
        & i- D1 K3 s8 X" v: U2 P3 l- E- q* t
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:   _3 h2 h4 A. N
BLOB字段的读取:
) c9 v" L2 @9 Y: j# j$ Z6 B TBlobSTream* TemplateStream;
1 z: H4 Q. m, j# j/ r& O- Q char* TempPlatePtr;              
9 N- T* l) |& y4 E) N+ W
5 m! v3 P0 J7 ^; v/ _% E TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
2 r# `. x* Q, {$ i3 A% a8 n                        ("SearchTem"),bmReadWrite); : P2 e8 w, R" A/ C0 S
TemplatePtr= new char[TemplateStream->Size];
5 a% d# Z) e( Z! j TemplateStream->Read(TemplatePtr, TemplateStream->Size); 8 E# u! n4 k7 [8 }% k0 ~4 ]5 P% L( X
6 J( e" g) s) R/ m" I* i
BLOB字段的写入:
- I7 j! i* i) M$ q. M0 n TBlobSTream* TemplateStream; ! l4 ~+ D. S4 _; R% [' m
char* TempPlatePtr;              1 n& ]2 }3 k$ o( @+ h
( Z$ J5 n/ f6 p  a( \
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName : n0 {* ~( V% X  W+ J# {5 C2 }
                        ("SearchTem"),bmReadWrite); + ^) o* \5 C5 ~) J7 l% M
TemplatePtr= new char[TemplateStream->Size]; 8 |6 E5 R/ O+ L
TemplateStream->Write(TemplatePtr, TemplateStream->Size); 8 V3 q7 A7 }9 I

+ q) B. n% z5 ?% n6 b& W- B________________________________________________________________ $ i5 p; y9 n1 N' J7 v& x# j# A
补充:
, {6 V& a2 R- j获得字段的大小用函数datalength 7 g; ?' D0 z+ |- D8 F

, H, l5 u8 ~; cSQL Server端要作一点设置:
# b# B* R) o6 L0 nBy default, WRITETEXT is a nonlogged operation. This means that  # C) E+ d! Y$ @0 ?- X% p7 U6 U% z
text or image data is not logged when it is written into the database.  
2 w4 N  V! x. [; f" R$ Z* `, }To use WRITETEXT in its default, nonlogged state,  & g7 T) e& p& |0 @
//注意!! ' S, t' m% d4 m! u6 M" W4 Z; X
the system administrator must use the sp_dboption system stored  - G% E9 ~  l( m; ^4 ]1 P
procedure to set select into/bulkcopy,  ' D' x  K: Q# g: w3 ^
//
) Z- W2 ?- R( d! Z- jwhich allows nonlogged data to be inserted. 2 Y0 A% @% u( n4 O' Q& R- [0 I
/ s& G6 }4 Z7 h3 o( a
做了试验,直接写SQL语句好象不行. % ?; i. w6 K! S! @8 j! a
____________________________________________________________________
# `. R) n1 @& a. y0 T        一些注意事项和一个例子
' I* E2 K/ W- e$ U$ F, R+ U8 w在写入时: + S8 W' u: z$ k% N
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
5 V: B  S1 g) G, r(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
' d" p4 y; [" a* O使得TTable(TQuery)是可写的. 4 \) `+ L1 a- I/ s# y! e( f

8 [. U/ z4 |( B9 q0 h* {* B下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, . Y; d( e) K3 O- L6 M
script为一个BLOB字段:
* }! V# l8 |& _( N7 E1 U   TBlobStream *pScriptStream;
5 O" N/ t: H. K  //插入一条记录 + p( H7 p1 k: Y; u  u+ N
        strSQL1="insert  into  content(file_id,script,key_image) values('"; ! x7 z/ _! k0 Y* V; P$ J) c/ I
        strSQL1=strSQL1+m_szFileID+"',null,null)";
5 E3 x/ j1 @3 G1 M3 d+ @/ v        dmStoryEditor->qryExec->SQL->Clear(); * \! e" p7 V3 f! @; R  c8 v6 p
        dmStoryEditor->qryExec->SQL->Add(strSQL1); & K/ l9 U9 C5 p* ~! q! f/ e+ B7 [3 e2 b
        dmStoryEditor->qryExec->ExecSQL();
# x9 Z1 M8 f4 }6 j6 Q' D        dmStoryEditor->qryExec->Close();
5 b; W2 C3 H4 _  //整理要写入的Blob数据   
0 U) g% I# {# w        LockMemories(NewsScript);
1 p8 F. i; s" @        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);   G: z' u" Y) s& Q/ w( N1 @
        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); : r! |# w, E8 E; y$ W3 a  j: l
        if(NewsScript.m_pScript!=NULL) 0 R* p- m7 o3 k) U0 O! c) g& x4 g; u& d
        { % q/ X8 C! W. _2 e2 Y2 f( T/ h
   //再将刚插入的记录读出来,使该Query与该条记录关联
& S6 l' }4 |5 }4 V        strSQL1="select  file_id,script  from  content  where  file_id='"+ * f3 K9 Q7 J) a3 ^
                m_szFileID+"'";
. M' F0 D( c7 f   //允许该Query写
, B2 @, I2 e! p9 o            dmStoryEditor->qryExec->RequestLive=true; 1 `0 j/ @/ ?9 W0 v. D$ B" |  H
            dmStoryEditor->qryExec->SQL->Clear();
. v0 s8 Y, O+ i5 F* y" v! R            dmStoryEditor->qryExec->SQL->Add(strSQL1);
" p8 @. L8 a7 i! m1 ?! A3 f            dmStoryEditor->qryExec->Open();
8 }, s! \- K$ f) e$ U0 w( T. R            dmStoryEditor->qryExec->First();
) b3 N( x4 U0 F) [) Y. |   //将该Query置为可写
# r& _$ R& g9 h. d0 W1 t4 Z            dmStoryEditor->qryExec->Edit(); : l0 L) [  W: d  y' K
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor-> 2 G6 Z: S, Y2 `" J: E
                                qryExec->FieldByName("script"),bmReadWrite); - t, r& @' s! z( s) u* s  n0 h
            pScriptStream->Write(NewsScript.m_pScript,  6 p7 u8 x5 n; u: U' ]  f0 x
                                        NewsScript.m_lScriptRealSize); 3 H; g& S& E; [& F) K
            dmStoryEditor->qryExec-&gtost();
9 v* s  Y7 P: P; w* R5 P& e            dmStoryEditor->qryExec->RequestLive=false; . W! y# ~2 T- t* u7 _& q
            delete pScriptStream; 2 b1 |$ Z+ p' |6 u' m: N
       }
, \+ ^. x2 S1 {" ~( u       GlobalUnlock(NewsScript.m_hScript); % I/ O0 J. j9 Y- r5 O! ~* [2 L! n
       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-8-9 02:44 , Processed in 0.580176 second(s), 52 queries .

回顶部