QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
0 ^8 o4 d/ K; T. G
4 c% ^/ d% ]( M& F# d1 P        
5 P+ d$ k: c$ t! ?6 U/ f6 q. o对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: ( G' z% ~# ?- i0 k9 [! M; U% M: i; m
BLOB字段的读取:
$ A; q$ j1 E. m; ` TBlobSTream* TemplateStream;
6 `) M$ S2 e4 u5 o6 J  q char* TempPlatePtr;              
% e3 P' [) i  @, Q. ]8 \
% G+ N: ^, J, H- I( Z) W TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
; K& o. d/ E8 f/ U- u& {6 }2 E                        ("SearchTem"),bmReadWrite);
; o5 P! x3 [. c' m. @2 U8 N TemplatePtr= new char[TemplateStream->Size];
3 _/ ?* Q) I; f" |) r( n' d TemplateStream->Read(TemplatePtr, TemplateStream->Size);
2 O3 w- ^' L( d4 \9 [2 L6 E0 S " @  N  z0 [, F; z( @" c" r7 W
BLOB字段的写入:
; y7 C, |4 B# u6 }: G; n6 Q( S0 z1 N- g TBlobSTream* TemplateStream; & q! W9 f( g! i) j) Z
char* TempPlatePtr;              + p: o) g6 {+ Z4 x# E5 T
5 H2 l# y+ E% Q: x3 M
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
' E: t+ C' T3 s" U0 S& Q0 h2 T2 y                        ("SearchTem"),bmReadWrite); 4 f" o2 x, _5 E- \* M1 l
TemplatePtr= new char[TemplateStream->Size];
! ^$ Q9 D1 E1 ^ TemplateStream->Write(TemplatePtr, TemplateStream->Size); 9 U$ F8 S2 D) Z# j* ~. Q# e

. d/ I4 S7 A: h9 d________________________________________________________________ + }, l6 A7 T8 P2 b9 I  }' d
补充:
: z$ a& A5 b. m" Y8 ^获得字段的大小用函数datalength 6 d% W+ w; a0 x

3 z  p# {$ w6 [. z6 t1 iSQL Server端要作一点设置:
' Q9 |! j) ]' s; Q2 VBy default, WRITETEXT is a nonlogged operation. This means that  
  y% S% ~/ u8 w+ w5 f" ytext or image data is not logged when it is written into the database.  ' z( f! G5 C3 M9 l. J; f
To use WRITETEXT in its default, nonlogged state,  3 l- g% W- W/ s4 `1 ^& k
//注意!! 7 ?  d& y2 ^, ?. k2 D
the system administrator must use the sp_dboption system stored  0 n  p8 }# F) O4 _3 G3 U* K
procedure to set select into/bulkcopy,  
5 ^4 T% y9 p9 Q- v% u( J//
' q% ~( c( l) y$ P; U- Owhich allows nonlogged data to be inserted.
. p( i0 j) \. M# E  _
9 J7 R4 n- Y1 C8 w/ ]8 Y8 n% x& K做了试验,直接写SQL语句好象不行. ' E- H9 b; Q- q9 |: w
____________________________________________________________________
# R, t% F* T& Q1 t" l/ K        一些注意事项和一个例子 9 i# Q0 [" O; N: }6 f2 K' r
在写入时:
) X! O. X( R) w(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
- L9 y% t8 y( l/ v- r+ \! _9 Q(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;   _, t& a! B) |
使得TTable(TQuery)是可写的. 8 `* c' m. _* Z
3 W6 T8 D! p8 {# `) _. l1 N# R
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, + ~+ e+ R; M% z
script为一个BLOB字段:
8 Q9 s5 ?+ f5 g* S4 u" i0 f   TBlobStream *pScriptStream; 3 F4 n1 q7 \* ~' ?" _: D6 v6 ]% y
  //插入一条记录 2 D3 t0 b% D/ O" g/ f
        strSQL1="insert  into  content(file_id,script,key_image) values('"; & y1 J/ c' j0 V9 @6 Y
        strSQL1=strSQL1+m_szFileID+"',null,null)";
7 _: V5 \  j- A9 d& a/ d/ K        dmStoryEditor->qryExec->SQL->Clear();
  k+ a9 T' g' Z! i        dmStoryEditor->qryExec->SQL->Add(strSQL1);   q+ S  G/ I  k
        dmStoryEditor->qryExec->ExecSQL();
/ Q+ E. D0 n) I& L        dmStoryEditor->qryExec->Close(); 3 j0 |4 M( @. |* W" r
  //整理要写入的Blob数据   : D3 I1 j/ G% ?8 t% b% X
        LockMemories(NewsScript);
# l: K9 ]7 o0 [        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
6 r! ^7 Z7 L- f4 K        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
% s! u: g+ t7 q7 X9 w+ w  o3 `, T        if(NewsScript.m_pScript!=NULL) 9 J( I! F3 y+ }6 c8 ]
        {
/ @" l* P; ~3 F# Q1 l9 N* I   //再将刚插入的记录读出来,使该Query与该条记录关联
0 g- u. Q! n: q1 m" \1 s, N- u$ o2 l4 N        strSQL1="select  file_id,script  from  content  where  file_id='"+
1 s1 H; m- g7 @* c; }: W5 A                m_szFileID+"'";
' G, }* A# u# Z- B& w5 F" `9 T   //允许该Query写 0 X9 H, C' |3 a$ L, ~
            dmStoryEditor->qryExec->RequestLive=true;
& C; `# f3 q7 \6 w$ T- o            dmStoryEditor->qryExec->SQL->Clear(); 6 Z3 n/ ~* g9 }3 M- C( O# |7 S
            dmStoryEditor->qryExec->SQL->Add(strSQL1); % w. u3 B% I' L  O
            dmStoryEditor->qryExec->Open();
5 z5 ~9 _; S* A9 e# T% M* _            dmStoryEditor->qryExec->First();
1 _) e% ~; k( d# t   //将该Query置为可写 ) [0 C. x/ z+ k5 ~, p9 ?0 w! [! z
            dmStoryEditor->qryExec->Edit();
" D  l$ c6 r2 m1 Z3 g! h7 D- p            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
& _# `/ K6 g2 E                                qryExec->FieldByName("script"),bmReadWrite); ; b( H6 |- x7 V
            pScriptStream->Write(NewsScript.m_pScript,  & }+ Y( H) b6 n5 S& y( a
                                        NewsScript.m_lScriptRealSize); 5 l" v2 {* w6 |$ l8 a2 u" x
            dmStoryEditor->qryExec-&gtost(); 1 n, Q3 s  c- m& H, u! O7 Z! d
            dmStoryEditor->qryExec->RequestLive=false; / x" a5 E: q) N( w
            delete pScriptStream;
9 H! ^( t. T) m) p) m       }
# ~8 A- W5 G7 Q0 Z, |1 z: d       GlobalUnlock(NewsScript.m_hScript); * ?& F( c) n0 \9 k6 D7 p
       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-10 20:24 , Processed in 0.435864 second(s), 52 queries .

回顶部