QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
: j1 a3 V! a- R  a . p+ T2 }  V. X0 N+ a1 p+ ~# N
        
3 Y; ~! l$ L7 X! H* f对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
6 F5 y" J8 [& C7 {BLOB字段的读取: : D( x8 b3 L  U3 X1 f
TBlobSTream* TemplateStream; 5 h. a2 h; X8 r/ A: C
char* TempPlatePtr;              , p1 E. W' R; _8 D
- _! _! e; e( R! `2 j, Z, @
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
! P5 X, D/ Z$ Q" ]- ^4 ~                        ("SearchTem"),bmReadWrite); ! x. b" b& b1 G# {7 s
TemplatePtr= new char[TemplateStream->Size]; 2 s6 ]0 c" u3 w+ i' V
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
1 @$ E/ V( J2 p/ ^  O+ r7 [
! e3 d+ y$ A) W$ kBLOB字段的写入: * {( b" x* k; S3 N. j. L; v
TBlobSTream* TemplateStream;
) X+ M0 ?) W1 \3 ~ char* TempPlatePtr;              
; x9 r- z, a+ V6 G, l2 G7 c4 g
5 Z$ m" j1 i1 T2 H# B7 M( A TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
% r! O# S3 _, e! M                        ("SearchTem"),bmReadWrite);
5 c' R) ^% Y+ f! |# @$ q. ?( t4 J5 Q TemplatePtr= new char[TemplateStream->Size];
$ ]! ~: t3 A- ^9 V8 F6 E+ K TemplateStream->Write(TemplatePtr, TemplateStream->Size);
2 C6 ?$ w+ S' S! W. n
8 z+ o$ r5 C6 T9 Z: W% d________________________________________________________________
1 A# X- K; ~2 j0 C3 p; c  l9 [补充:
- t" j" e- J! Z  X  B+ G) T* S获得字段的大小用函数datalength 2 |0 q% f* P" `7 m4 a! ~) H

3 E% q  ~  S' F9 }SQL Server端要作一点设置: ; }- _+ O6 U/ N3 V  C
By default, WRITETEXT is a nonlogged operation. This means that  6 Z& ~4 V4 H# J
text or image data is not logged when it is written into the database.  : t) X6 Q6 I& F
To use WRITETEXT in its default, nonlogged state,  6 Z" `% W+ n7 i7 t
//注意!! ) i& K- ]9 z2 x5 }
the system administrator must use the sp_dboption system stored  7 e5 [( }, n( ~7 }$ m6 k! H
procedure to set select into/bulkcopy,  9 F" q$ b+ U0 z2 d
//
# i* F- O- O$ C$ dwhich allows nonlogged data to be inserted.
8 t+ r9 t1 x7 L9 q5 P2 j- J " I+ |" m+ O" G% }- W4 E" t
做了试验,直接写SQL语句好象不行.
% x; D  \" `9 G* n( t____________________________________________________________________
' k1 H- ~$ E& D8 B+ o7 x6 l: \$ l        一些注意事项和一个例子 - f, w: v& f+ x" W3 y; z  P* i  i
在写入时: , G& l0 k/ B  U1 C- x
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
; x* R% T6 f& j. P$ p. l(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
) V2 W/ i" D! u使得TTable(TQuery)是可写的.
/ }1 t2 B" d" q: F' |1 `+ M6 |
4 Y9 ?! N% K& V* I5 S4 `% ]下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, / b. i3 n' S" J  i
script为一个BLOB字段: 6 \: |; f1 }( p- N2 l! I
   TBlobStream *pScriptStream;   H5 B1 L1 `8 L) M% r
  //插入一条记录 7 b: N0 y9 e' m4 r+ d; C
        strSQL1="insert  into  content(file_id,script,key_image) values('"; 2 U( k" I- J6 ~$ j# L- d5 f8 ^
        strSQL1=strSQL1+m_szFileID+"',null,null)";
, ~3 _) z4 c  `) s" w        dmStoryEditor->qryExec->SQL->Clear(); 3 @! ^4 v5 q/ ^8 e- n" n. ^6 J5 r
        dmStoryEditor->qryExec->SQL->Add(strSQL1);
4 \; E' q+ N; _- l' u        dmStoryEditor->qryExec->ExecSQL(); 5 o* W9 y. m  `/ p/ b
        dmStoryEditor->qryExec->Close(); . s. [- i& i& V3 ?+ n; a8 b8 Z  U
  //整理要写入的Blob数据   
9 n% b0 X7 s7 d  C        LockMemories(NewsScript);
8 _5 L% v* d) Y/ C' U6 R+ H- M* v        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
4 V5 ~9 {4 j( L) q        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
5 O( {5 m( u' M( O1 k        if(NewsScript.m_pScript!=NULL) ! X( l  p) s( W% G* B1 e' K
        {
: ~/ [# h: \, u0 `/ n& Z/ `   //再将刚插入的记录读出来,使该Query与该条记录关联 6 Z0 b5 ~; t/ p4 @. y! U& Q
        strSQL1="select  file_id,script  from  content  where  file_id='"+
. F7 I4 u/ u, e( k4 m                m_szFileID+"'";
0 L8 r) x4 T' v% Q* n   //允许该Query写
& ~4 H3 V0 o  \8 ~, u$ ]9 ~* R            dmStoryEditor->qryExec->RequestLive=true;
& d; U) q1 t4 f( X" D7 P: P/ i0 x            dmStoryEditor->qryExec->SQL->Clear();
& f- \. Q1 e. L            dmStoryEditor->qryExec->SQL->Add(strSQL1);
1 D$ e/ [3 A1 ?4 M            dmStoryEditor->qryExec->Open(); * l& I' w- A5 f* u
            dmStoryEditor->qryExec->First(); & c. }5 q$ [7 ?. f# S$ t2 A
   //将该Query置为可写 2 I% i8 v) u; P9 j
            dmStoryEditor->qryExec->Edit(); 4 w. S) ~- [$ o+ P  ?; _- W0 l+ \
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor-> , m8 G4 |* n1 c6 i! Y4 A
                                qryExec->FieldByName("script"),bmReadWrite); : l# T1 N3 K5 O7 A
            pScriptStream->Write(NewsScript.m_pScript,  
' O8 a! e% T2 p1 ?9 s9 i# X                                        NewsScript.m_lScriptRealSize); 9 Z2 s" F" z/ n- J, R
            dmStoryEditor->qryExec-&gtost();
9 d" B- @) H7 |; D4 D" n            dmStoryEditor->qryExec->RequestLive=false; ' T* {6 s( D$ F& {; e
            delete pScriptStream;
1 a# H0 w& z$ l3 i4 W  _$ ~       }
4 f" G8 t% D8 m       GlobalUnlock(NewsScript.m_hScript);
) {3 c% ~1 v$ ]: I3 \  Y       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-8-9 00:33 , Processed in 0.449257 second(s), 52 queries .

回顶部