QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
: \! C1 x: L; l2 F) [
6 C: W& W& [8 {, B/ J' f: y  V, t/ e        
( i6 T( f+ ~# x对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
% ?! M* W1 T/ G0 lBLOB字段的读取: 1 I9 w0 S. a- G' f% a
TBlobSTream* TemplateStream;
  T. k0 A# t6 [( z char* TempPlatePtr;              . G/ F$ i' B1 W$ d

, J6 q3 O" a( p, K TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName $ ~% @9 l# e# H1 E. o! w
                        ("SearchTem"),bmReadWrite); * o# k$ G+ B  Z+ Y8 L  H$ t
TemplatePtr= new char[TemplateStream->Size]; 6 w4 g  q9 a8 d' N& W. b3 Z
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
3 J( j/ v/ Y( q) H1 S 9 g5 [5 b3 Q4 R0 s* s+ F* C
BLOB字段的写入: - u0 T( K) M0 X8 G
TBlobSTream* TemplateStream; 8 i& F7 }0 z$ S' p% b
char* TempPlatePtr;              
  Q# e( R' _2 m2 ~' m& @ 2 B6 u3 G" X: Q4 x" m: V
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName 7 ~' o7 a, Y$ v- @7 m! g0 `
                        ("SearchTem"),bmReadWrite); " f9 G( k8 y, H' J) Y- H$ O1 B
TemplatePtr= new char[TemplateStream->Size];
  h9 ]3 T: a" t; c. _) v2 ]8 Y TemplateStream->Write(TemplatePtr, TemplateStream->Size); : ^' l! c# g( c# y5 O# {

: d- }+ B5 }# ]________________________________________________________________ $ M7 X, B2 t$ ^9 d+ D+ q
补充:
( [: B4 e8 g# B获得字段的大小用函数datalength
" j4 ~/ N9 f. |7 \ 3 h, S9 k' b% S) p3 J- J" f
SQL Server端要作一点设置:
* T2 U* H- E7 jBy default, WRITETEXT is a nonlogged operation. This means that  " J1 O, m' _$ A; U) ^
text or image data is not logged when it is written into the database.  
" |$ D% C. Q& L! X/ h( YTo use WRITETEXT in its default, nonlogged state,  
1 V! \" T- f. c+ g( d# Y//注意!!
0 f2 \- e* w0 ?7 d% Lthe system administrator must use the sp_dboption system stored  
: |: X' Y) t  h& eprocedure to set select into/bulkcopy,  
% p4 d- B9 y' ]//
) K. [1 R  n3 q3 G& Gwhich allows nonlogged data to be inserted. 8 @5 w; L! X' F8 d( K. V/ L! ?
3 Z) I( _5 b1 A1 E. m- |
做了试验,直接写SQL语句好象不行. 3 o6 z% F- t, L1 V8 W
____________________________________________________________________
$ r0 c8 h2 t3 ^, a" f$ `5 a  ?        一些注意事项和一个例子 & _4 s7 \" w$ Z# Z& ^" C
在写入时: % t7 R3 A4 g: p3 k5 ~
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
1 E; y) h, `$ Y(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; * ?$ j4 }7 q, P! p# A
使得TTable(TQuery)是可写的.
* [: M; R0 x8 `2 T# J5 V  E 2 ?0 s) w. C; _# P
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
. c$ `' J" E% q/ Vscript为一个BLOB字段:
- c5 |) K0 s' i1 h: P* R' W   TBlobStream *pScriptStream;
/ Z7 \$ p4 g: g3 o1 T4 c4 M1 B9 a0 J  //插入一条记录 ( Y" c$ f$ a: q- F" T& P, Y8 J
        strSQL1="insert  into  content(file_id,script,key_image) values('";
; a8 \1 B" ^6 R! ?8 E: V        strSQL1=strSQL1+m_szFileID+"',null,null)"; 5 U3 T$ N) M- ]6 I
        dmStoryEditor->qryExec->SQL->Clear();
) i: ?+ C5 G  i' m0 y        dmStoryEditor->qryExec->SQL->Add(strSQL1); 7 z* h0 i$ [4 m# e; H
        dmStoryEditor->qryExec->ExecSQL(); 3 a1 w% b& }3 D9 p7 y1 [1 M* W
        dmStoryEditor->qryExec->Close(); + y5 M0 C( A1 r5 G4 p
  //整理要写入的Blob数据   / }( F6 t* I& f4 _$ y
        LockMemories(NewsScript);
; C8 w9 ^5 A( L6 z6 M$ H        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
- [( J: a0 m& n        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); * T) p& z6 T& v
        if(NewsScript.m_pScript!=NULL)
8 c+ U- T/ c2 Z# E/ `4 |        { & N& v. T: ~1 G
   //再将刚插入的记录读出来,使该Query与该条记录关联 9 l7 ^3 w" `$ a1 T+ ]% K
        strSQL1="select  file_id,script  from  content  where  file_id='"+ 3 ^$ c+ G9 o5 R
                m_szFileID+"'"; / ~: C. E; C8 C; i
   //允许该Query写
# j0 V- ~$ T- \3 C/ U            dmStoryEditor->qryExec->RequestLive=true;
- Y' z) J. }( N, J            dmStoryEditor->qryExec->SQL->Clear(); 9 E- ~' W" Y  N) S, x, J2 f
            dmStoryEditor->qryExec->SQL->Add(strSQL1); 7 q- g' J2 z/ U0 i8 K9 z- D
            dmStoryEditor->qryExec->Open(); $ u5 ~: `8 \0 [$ K( Q
            dmStoryEditor->qryExec->First();
$ M* T* z  ^/ M, u# a* n5 ^   //将该Query置为可写
/ ~( j- F* r  o9 G            dmStoryEditor->qryExec->Edit(); * O3 \# l/ A: o7 t7 q
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor-> # M, _1 B4 u8 p& b. u7 t
                                qryExec->FieldByName("script"),bmReadWrite); ) V) _7 |  Z" x9 J5 b. N! {  k' U
            pScriptStream->Write(NewsScript.m_pScript,  
; @2 z# A& y/ c/ V! M, M                                        NewsScript.m_lScriptRealSize);
- g- F# n/ r, Z$ f! c            dmStoryEditor->qryExec-&gtost(); 4 @0 @' ]; M6 ?! V3 I
            dmStoryEditor->qryExec->RequestLive=false; 2 P8 b  \6 E4 g, d) D; B# M1 A5 _
            delete pScriptStream; * C; D0 N: _. F2 C0 u3 T
       }
4 s1 p1 Z" m' x( j' q, m# k/ e1 O. ~       GlobalUnlock(NewsScript.m_hScript); % z  Z4 d8 E- U  l3 l6 c
       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-20 16:28 , Processed in 0.408323 second(s), 51 queries .

回顶部