QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]' w- r) P; z" X
6 h  ]3 h; h7 `
        8 B9 Y' g+ d3 U0 a. m/ x
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
* p4 N1 k, q! h4 j; T, p7 OBLOB字段的读取: " I: p+ x. Z! {5 ~0 k( j
TBlobSTream* TemplateStream;
% y# ~* _0 A4 ~9 I& M char* TempPlatePtr;              
4 Y. [- @' N) Q, k1 {+ C' }3 m. c7 k9 |
+ P. a, ^$ {$ w" ?( k; S) A TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName   A) f' y4 ]& X4 d
                        ("SearchTem"),bmReadWrite);
& O( M  O/ ~& D% Y TemplatePtr= new char[TemplateStream->Size];
& f& R5 e  y$ t" |3 }/ n TemplateStream->Read(TemplatePtr, TemplateStream->Size);
/ N7 z; O6 w' O* t, ~5 @# V: P ) [( \* ^' `! \4 |
BLOB字段的写入:
- y+ H( o) [% G! L7 g: M7 |1 ~; e TBlobSTream* TemplateStream;
2 X6 `9 {  w1 _2 d char* TempPlatePtr;              & a; A; R6 q! p1 w
# Z* M/ `. d: r" M3 H
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
" c* B) ]1 K* t  ~                        ("SearchTem"),bmReadWrite); " N7 s2 Q# K; w1 y) I) p9 ~9 r
TemplatePtr= new char[TemplateStream->Size];
& P8 V! K  j2 ~- i8 d# b% T TemplateStream->Write(TemplatePtr, TemplateStream->Size); 2 P& c1 G. X5 X! B$ {7 K2 s+ w

$ J$ V* |1 E5 o" n& l  K________________________________________________________________
; M% T7 K/ e: r" K( d9 w5 V补充:
! T% A* ~2 P( h$ f获得字段的大小用函数datalength
0 J2 T' L% c! g/ v9 o5 c* l. H
) U$ S; t+ |2 \# r0 y/ uSQL Server端要作一点设置: ) W0 P  c6 I; n$ ^* f; [$ |
By default, WRITETEXT is a nonlogged operation. This means that  
+ G3 \9 A$ a9 y2 ntext or image data is not logged when it is written into the database.  * V* M: _4 i7 U( U! {+ l& u+ O. a
To use WRITETEXT in its default, nonlogged state,  ; {. V5 Y: y( U8 R& x& L; R
//注意!!   L% Y  ]; l0 w6 p7 |: i) f
the system administrator must use the sp_dboption system stored  2 H: \3 L' V& R( f5 x5 G1 u
procedure to set select into/bulkcopy,  
! c7 J$ I# \& k2 M//
9 v! @* r8 c$ W& f  ]4 K+ J4 [which allows nonlogged data to be inserted. & D3 a7 j2 p5 a  I

( `9 U' M6 a* h& h. ]% q6 [做了试验,直接写SQL语句好象不行. 9 j) n9 [2 @2 V% H
____________________________________________________________________
$ {* e. y# n: d. o# e9 `! e: Q& Q( V        一些注意事项和一个例子
* J, B: P8 Y; i. I在写入时:
% _2 A% N" z; O  A3 @(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; 8 N) m; p5 e: t& `6 s% M7 @1 ~
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
: a& K' d0 G. _" j% \" E& o使得TTable(TQuery)是可写的. / ~+ P% |+ v) E! y/ J& S6 ~, Y  v

" p3 H5 n( T/ ^( s下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, 7 {# P+ o7 C+ ?& Q+ ^
script为一个BLOB字段:
: @9 c& X5 \' T) N7 k4 c+ s' F   TBlobStream *pScriptStream;
, k( O$ F" L7 H2 p( S* k  //插入一条记录
$ u  F4 n/ ~% X8 Q) @! i        strSQL1="insert  into  content(file_id,script,key_image) values('";
  m7 l* r8 f, s0 Z3 x. \        strSQL1=strSQL1+m_szFileID+"',null,null)"; ( f. u' z$ O$ q5 Y$ k! D. ^7 W
        dmStoryEditor->qryExec->SQL->Clear(); * ^) U: y: q0 [' x  b: O# q0 s
        dmStoryEditor->qryExec->SQL->Add(strSQL1); 9 w* |( \9 |: z$ ?
        dmStoryEditor->qryExec->ExecSQL(); * v* {6 Q& R8 W2 _( ^
        dmStoryEditor->qryExec->Close();
4 W! X8 n7 V0 J% T  //整理要写入的Blob数据   2 v) \4 j; Z; ?) n+ g
        LockMemories(NewsScript); $ ?* E  X2 Z7 [. t: G# K- a! f
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum); ! i( o( e( Y5 U
        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
1 m6 z1 U# p# X8 N  D        if(NewsScript.m_pScript!=NULL) 1 v6 ~- [: `- g# n- U' K* G
        {
0 ^+ ~$ t! |' M1 R4 s/ k8 V2 F   //再将刚插入的记录读出来,使该Query与该条记录关联
  [( S5 E/ i0 p  M/ }# e        strSQL1="select  file_id,script  from  content  where  file_id='"+ # |% z% ]0 i7 H8 C# D! s
                m_szFileID+"'";
; W% K9 N, s+ n* D0 P   //允许该Query写
' F) h! h8 l1 |; J' n8 Y- O" f            dmStoryEditor->qryExec->RequestLive=true;
' A% e% z, J% Y$ ~            dmStoryEditor->qryExec->SQL->Clear();
$ M4 b/ n4 U; p' O4 w            dmStoryEditor->qryExec->SQL->Add(strSQL1);
& L* |7 L% j2 r4 ?7 [4 l# v            dmStoryEditor->qryExec->Open();
4 F4 r. G/ C# u% v/ X& z            dmStoryEditor->qryExec->First();
8 T: J# S" i! `$ ~' F5 {   //将该Query置为可写
$ V4 h) s( |" f0 f+ E  i# g; \            dmStoryEditor->qryExec->Edit();
0 T, N* ]  k! E" @8 Z            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->   Q, I% O; O( k, X/ s$ F, O
                                qryExec->FieldByName("script"),bmReadWrite); * q9 O- h( B* u6 M6 c) p/ p2 d
            pScriptStream->Write(NewsScript.m_pScript,  1 M% O; q, k5 E5 U; O
                                        NewsScript.m_lScriptRealSize); . z, p) a2 |( w2 S) F6 P8 q4 I* J
            dmStoryEditor->qryExec-&gtost(); + h, G# N" {4 d/ W, K1 R
            dmStoryEditor->qryExec->RequestLive=false;
, V; {1 t# o/ {! A% _            delete pScriptStream;
  k# p3 ^# J) q6 g! o       }
% b/ T9 `6 }  q& v8 r  G* h/ I       GlobalUnlock(NewsScript.m_hScript);
) @9 x9 ~# X8 }$ L1 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-9-1 11:23 , Processed in 0.346768 second(s), 51 queries .

回顶部