QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]& O7 w; w- O# L1 O# m% K9 V
2 r! s+ F! Y; J/ M9 k( d- Q: g
        
  v- i) o: X& K) z对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
0 i6 m! E( @; Q6 F7 B  m$ [BLOB字段的读取:
4 w( n4 ]  Z$ _+ y8 G5 M% k& h TBlobSTream* TemplateStream; ( @+ t$ E, m! L) U! i
char* TempPlatePtr;              9 H7 R% t7 F! q7 u4 I) W4 Z' @
+ b$ s# L/ ~8 Z. d7 [
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
! \! W  S! E- }4 P3 U; `                        ("SearchTem"),bmReadWrite); 0 [0 ]2 D, o$ F3 z
TemplatePtr= new char[TemplateStream->Size]; ( }8 Z% P% h4 X
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
& U$ e2 D5 z! i/ z) i
, ], G/ H6 N" u& Z5 |  WBLOB字段的写入: ( b! l* Y$ n5 l: ?4 ~) k
TBlobSTream* TemplateStream;
: v+ S2 n1 T1 ] char* TempPlatePtr;              3 _; E8 m& ]  ?: U6 L. o5 j

% N- n$ V; W, n( Z  w; f- Q TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName ! p) q6 x0 ]* n/ K8 C$ f
                        ("SearchTem"),bmReadWrite); & `& O; t( ~$ ~
TemplatePtr= new char[TemplateStream->Size];
4 M% c8 f3 C: z! O TemplateStream->Write(TemplatePtr, TemplateStream->Size); , C/ b( y( t7 A! E9 l4 K6 K

; |$ v& O; ?$ i7 e5 D/ K- ^________________________________________________________________
. a% U5 y+ z" Z$ ~5 W补充: , o4 Y4 s: h1 M: |
获得字段的大小用函数datalength 5 N, M2 V2 D6 O' p: r
% y& U0 ~! u; g
SQL Server端要作一点设置: ; E3 P. O; f: v6 r* P% u
By default, WRITETEXT is a nonlogged operation. This means that  
! z3 j; L* ]0 s1 n) l) |* r% s4 n. |text or image data is not logged when it is written into the database.  
1 }. s* K+ T* U2 ^To use WRITETEXT in its default, nonlogged state,  
, z; c; \! L# @& X2 L//注意!! 8 p/ C/ B' D, i9 r) m. G6 E8 x
the system administrator must use the sp_dboption system stored  
+ t+ W# i% C0 ^( E5 ]7 L* ~% P4 bprocedure to set select into/bulkcopy,  
( Z! m$ U9 L) c% W. M/ {// 6 E, j2 a  Z# Z, C0 h! v
which allows nonlogged data to be inserted. 0 s5 o( Y& H4 Q
8 R6 m. ], [+ H7 X" j6 E
做了试验,直接写SQL语句好象不行.
4 U, d( A, k0 a  [- v" c( Z____________________________________________________________________
5 }) G$ F' M2 U5 q; e0 t3 D        一些注意事项和一个例子
( I. w+ W$ Z/ H4 w在写入时: ' h/ `4 z& ?- R- o: t9 g2 }
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
0 f8 P0 D& {- o9 ?/ ?7 \' B(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
2 b- c+ `: j# i6 o使得TTable(TQuery)是可写的.
: o1 n/ a# f" y4 M7 U6 D
$ R. V) ?% g+ H下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
# q0 r2 V- z) ~% s& wscript为一个BLOB字段:
% |. |* p  g1 z9 o7 b5 M. e3 n   TBlobStream *pScriptStream; 5 ]& N1 Q5 s) D" u
  //插入一条记录
8 Q0 W, f% J" b/ W% k        strSQL1="insert  into  content(file_id,script,key_image) values('"; $ J6 K" G6 O5 J5 l
        strSQL1=strSQL1+m_szFileID+"',null,null)";
8 [( W* t; p" E2 @1 t        dmStoryEditor->qryExec->SQL->Clear();
3 C" U9 m$ ]5 n) ~0 m        dmStoryEditor->qryExec->SQL->Add(strSQL1);
' h- S% Y% g5 p) @; [        dmStoryEditor->qryExec->ExecSQL();
5 S3 w7 N- i8 ?/ `- W$ {        dmStoryEditor->qryExec->Close();   G6 ]6 F: J7 r4 R7 z
  //整理要写入的Blob数据   . C8 k1 I! Q# t! a3 W7 z
        LockMemories(NewsScript); 3 }0 r; R7 c: k8 F5 B
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
0 d' \* m+ O* n% C: |$ b        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); ! f6 G) @8 M4 Q+ p* o" I, f. Z
        if(NewsScript.m_pScript!=NULL) ' {& C7 p% }2 H! }) {
        { % b7 t  V; F$ p3 r  `& J
   //再将刚插入的记录读出来,使该Query与该条记录关联
* f% P2 [: R8 y/ f/ w        strSQL1="select  file_id,script  from  content  where  file_id='"+ 6 j/ t" m% B$ m
                m_szFileID+"'"; ! \# c5 k, e& c' o
   //允许该Query写 % l9 X5 ~+ v% M! X0 i! W
            dmStoryEditor->qryExec->RequestLive=true;
7 o! j% r0 z4 J+ D            dmStoryEditor->qryExec->SQL->Clear(); 8 W2 t! Q: _7 Q* S
            dmStoryEditor->qryExec->SQL->Add(strSQL1); / H9 S. Q" x% q$ n
            dmStoryEditor->qryExec->Open();
( H6 @* q3 o7 {0 z& s$ G  ?% _7 Y( m            dmStoryEditor->qryExec->First();
* f6 q; c1 `; U) B: f2 C) E   //将该Query置为可写 4 p: R) g; k: K) O: C- v
            dmStoryEditor->qryExec->Edit(); ' j$ U& {. D3 L! i0 m
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
# G# X1 t6 h$ [' N) d3 Y                                qryExec->FieldByName("script"),bmReadWrite); 6 P8 s) Y3 W" I! H, A! Q2 @! J
            pScriptStream->Write(NewsScript.m_pScript,  
* p- w2 [6 p5 s. \. W                                        NewsScript.m_lScriptRealSize); % }3 m* u9 j( m! q7 Q4 \  o
            dmStoryEditor->qryExec-&gtost(); 9 J5 K1 s0 q. E8 Y
            dmStoryEditor->qryExec->RequestLive=false; 9 O2 k) t: \: W: |- o. G' C3 J) V" r
            delete pScriptStream;
% d# T- h( `5 o9 ^( A# ^: m* @. k       } 6 `* |7 C* F, K/ s: N/ \& ]
       GlobalUnlock(NewsScript.m_hScript);
2 S( k8 W  J# 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, 2026-7-17 19:20 , Processed in 0.343709 second(s), 52 queries .

回顶部