QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]  `) j, K# r" Z
) U" D4 q+ M3 T  Q- U! ^: ?
        % T3 I. L" s0 x6 d. u
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
+ E$ U) n$ X: M1 A2 ?3 s) MBLOB字段的读取:
6 D; E' r8 o5 D9 K, W TBlobSTream* TemplateStream;
1 R' x/ \/ C  l char* TempPlatePtr;              
/ [* n+ }% C, l: _- N: G
8 P" L/ S+ K# b7 S1 w TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName " t9 l  n3 w1 q& z8 R9 _1 _3 u8 h
                        ("SearchTem"),bmReadWrite); 5 `! @9 b, U) I6 a2 t* ~4 @0 H! P$ Q
TemplatePtr= new char[TemplateStream->Size];
( x( x* T& D  L/ M+ F TemplateStream->Read(TemplatePtr, TemplateStream->Size);
( ?1 w/ u( g$ S6 {( |: c. t% Y
6 k/ X7 t& e/ f! J9 E0 zBLOB字段的写入:
5 `6 n2 p# b, @8 W9 r8 {; C TBlobSTream* TemplateStream;   A( Q2 t, T" }3 o9 {) `; |) W# I
char* TempPlatePtr;              
' y1 w6 u2 j) ?+ R8 [. H
, d+ C4 Q: @" H% p. B TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName # G. F7 Z9 a/ ]- ~1 F5 v, |
                        ("SearchTem"),bmReadWrite);
/ M9 ^2 H! s8 p+ s2 }4 @$ w TemplatePtr= new char[TemplateStream->Size]; 3 X4 w) r7 G9 ~$ Q$ r
TemplateStream->Write(TemplatePtr, TemplateStream->Size); / r" g. z; Z6 y1 ^+ K9 Q+ k

! N; y: `* C4 i2 I# a________________________________________________________________ , [* y6 K( W! E# u" ^/ u
补充:
7 h% o8 I! ]7 o0 z获得字段的大小用函数datalength
7 \. k% G7 e3 ^: I5 j* h3 u ' W; q8 k( p( x
SQL Server端要作一点设置: ' y/ v+ C- {- x* Y" B
By default, WRITETEXT is a nonlogged operation. This means that  . O, j6 ^" A9 \' v+ ]. V# R3 N
text or image data is not logged when it is written into the database.  
$ P7 I2 i& ]9 n  K; W) TTo use WRITETEXT in its default, nonlogged state,  
, ]( O! P9 a" x, M+ h//注意!! ( B9 y- ?% l8 \6 N; v, r0 @
the system administrator must use the sp_dboption system stored  ; U. ~' i( o& d$ Y
procedure to set select into/bulkcopy,  
3 Z$ C# N& M1 @  j, {4 j( e// 1 T  t; _, E, ~" {+ M& I
which allows nonlogged data to be inserted. % S3 S8 R' p9 ~: I  r

# n! v. }) s! {5 Q/ q5 K做了试验,直接写SQL语句好象不行.
" |  L# f0 R; z, @. _- c____________________________________________________________________ ( O, D/ q5 Z) P; z, j/ N+ f, G$ O
        一些注意事项和一个例子 ( o) R1 f9 o% ]4 `1 t* b0 Y  L6 ^
在写入时:
: z5 g2 }( ^8 e3 r* m3 N0 ], Q) y(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
8 X: \& h8 _6 l/ k& \; n, t4 t(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; ; R) X" O! e# `1 n  }
使得TTable(TQuery)是可写的.
7 e9 {# F7 J- E8 f8 s
/ L4 ^2 m3 c. k4 w6 k8 L* T8 j7 ~# Q下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
7 j. Z0 O+ F2 z: hscript为一个BLOB字段: " M4 |& z# n0 W6 f5 y
   TBlobStream *pScriptStream; # M- Y+ C9 w7 Q
  //插入一条记录   [% R) g9 e1 L( Y% c' p& A
        strSQL1="insert  into  content(file_id,script,key_image) values('"; ! ^! s/ G! B  g8 l, A# r9 c
        strSQL1=strSQL1+m_szFileID+"',null,null)";
' Y- F# R3 t. Z% ~3 d: a5 L* ^" a; E) C$ _        dmStoryEditor->qryExec->SQL->Clear(); * i! d7 f' B! _- z: `% y  e
        dmStoryEditor->qryExec->SQL->Add(strSQL1);
* p- e# C8 u, h8 E% l5 j        dmStoryEditor->qryExec->ExecSQL(); . u; M( E$ O& H! ?
        dmStoryEditor->qryExec->Close();
# M) ~8 C- N  d  //整理要写入的Blob数据   ( D0 J7 x' |2 x! m
        LockMemories(NewsScript); 9 \& g! T% C9 o/ f. B- q" R
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
6 E5 X. w" N' N& b- \+ U6 k6 O+ f        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); : f- k$ c( \/ _6 T' ^3 E) \2 x: s: J
        if(NewsScript.m_pScript!=NULL) 0 V* U& ^+ M, O$ g2 n$ `$ G- e
        {
( u% ~5 H# m) I4 b; Y& ]   //再将刚插入的记录读出来,使该Query与该条记录关联 ! M% ~+ Z* _0 B. m  k; t# X
        strSQL1="select  file_id,script  from  content  where  file_id='"+
9 Z7 P/ ]* k! h: ~  d5 j2 y5 {                m_szFileID+"'"; 4 f! P0 x% q7 E. e
   //允许该Query写
# b  A/ Y+ K4 y3 ]- s3 ?            dmStoryEditor->qryExec->RequestLive=true; ; n/ a5 H% ]$ u! _
            dmStoryEditor->qryExec->SQL->Clear(); ( z6 Y* L( H0 o( V+ \1 B
            dmStoryEditor->qryExec->SQL->Add(strSQL1);
0 X7 v! S% f" C, {9 L            dmStoryEditor->qryExec->Open();
, Q0 @/ e, R0 [            dmStoryEditor->qryExec->First(); + `) Q, t2 F6 M# P1 P
   //将该Query置为可写 $ `, t+ m- d7 l! g- F
            dmStoryEditor->qryExec->Edit(); + p1 k& i7 ~8 V: R$ j8 Q
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor-> . S1 C3 D  @! A/ ~
                                qryExec->FieldByName("script"),bmReadWrite);
# K/ n+ @! W3 A( e; o1 P3 f            pScriptStream->Write(NewsScript.m_pScript,  
: i* C$ Q/ v8 q% H; X* k                                        NewsScript.m_lScriptRealSize); % h3 I) @, E0 K: M3 L% m
            dmStoryEditor->qryExec-&gtost(); + }; S) E! H  B$ E1 s8 p; d/ s
            dmStoryEditor->qryExec->RequestLive=false; $ L, g; x  t& v+ N
            delete pScriptStream; 5 R  K- F: L3 i, i
       } 5 Y- n* P9 c/ G+ m- F
       GlobalUnlock(NewsScript.m_hScript); 9 k5 t, W- ^, f1 y  K0 F
       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-9-17 14:04 , Processed in 0.483158 second(s), 52 queries .

回顶部