QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
6 }' m% u; C5 g0 j+ L
7 o! d  i4 k$ m$ F        
* P+ i9 w* g: m' i/ p. L' _7 a1 a对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: / S/ X6 |. O" V. Y
BLOB字段的读取:
5 m& l# e# T/ {9 F1 S# k TBlobSTream* TemplateStream; % Z) x4 V$ ~- l' w2 ], I0 E
char* TempPlatePtr;              
9 s7 r+ {6 S9 M* v$ V
  V) v4 [1 `; i' B TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName   C0 [; F3 B' e! a. ]
                        ("SearchTem"),bmReadWrite); . W! A  e( B$ J6 ?
TemplatePtr= new char[TemplateStream->Size]; 6 I! K0 i* x% C# v% O$ ^. ?5 H
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
4 a" f$ N8 C5 B' r. B* ?) k  p
) M. e) Y' y$ z! N6 i7 h- M7 w* MBLOB字段的写入: - z9 i' A+ L5 x8 m
TBlobSTream* TemplateStream; - w' g8 ^! L5 d# o6 Q: ?6 _
char* TempPlatePtr;                U/ L& U; d2 N* ]" a  y

# D2 F6 |- L. N6 f1 V9 x4 s0 C# o TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName - @5 L+ [- ~$ n! ^) M* h
                        ("SearchTem"),bmReadWrite);
5 C' l- `7 Q9 D! N% v5 A8 d TemplatePtr= new char[TemplateStream->Size];
- X" I2 Z5 I! T. s TemplateStream->Write(TemplatePtr, TemplateStream->Size);
* t" m5 p% B2 v; W6 b
' |9 g0 c+ E: o# M+ n9 p9 K# e8 x________________________________________________________________
- J7 t' G4 y$ L5 |补充:
0 l+ o' b( v* R! x2 ~. {4 Y/ B* K& h% a+ I获得字段的大小用函数datalength 7 N3 D+ Q# F7 E  H) h/ {6 D5 ]

6 j8 t' A) y: `% K6 MSQL Server端要作一点设置: , [1 g" e* j) t/ ]/ X/ h
By default, WRITETEXT is a nonlogged operation. This means that  
/ l( B/ W. n; h4 e, o. S8 h: Gtext or image data is not logged when it is written into the database.  5 `( ^0 }1 p% q) R
To use WRITETEXT in its default, nonlogged state,  
% R  e8 _+ o, }1 B. x//注意!! ; \2 z* y8 A( e$ [. w. p& `
the system administrator must use the sp_dboption system stored  / \/ L' W, J. _
procedure to set select into/bulkcopy,  ; Z; V" \% P/ Q* Z2 a' X
//
; t1 p- b! T* b% Qwhich allows nonlogged data to be inserted.
& S2 U9 G# U+ o5 y, ]( D2 ^
% }' `7 {# r2 B+ _9 F做了试验,直接写SQL语句好象不行. 0 P1 v7 p5 O$ o" o* K& `
____________________________________________________________________ 3 \0 y3 q" E) Y5 _4 h/ a. X
        一些注意事项和一个例子 1 \" w  @1 a1 j* F
在写入时:
$ X/ p6 P. k! {, s9 r5 @3 J( O9 K(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; - s. R& B4 w2 j' T# z
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; + D7 F- g7 G) E* a
使得TTable(TQuery)是可写的.
4 J6 j6 y& d' |
0 J4 c6 k8 z" S) A下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
4 d+ E( ^7 H* Cscript为一个BLOB字段: $ I: r2 E: R1 n+ u
   TBlobStream *pScriptStream; 8 N* X/ Q4 p' w3 R7 v" I
  //插入一条记录
* l/ q/ [+ Y' |- ?' g8 u4 e. r        strSQL1="insert  into  content(file_id,script,key_image) values('";
5 ?, ?% e/ S5 K6 a" R: d) ~        strSQL1=strSQL1+m_szFileID+"',null,null)"; - F1 z# U! |, y  q1 Q7 w
        dmStoryEditor->qryExec->SQL->Clear(); " H/ Z) t( p& X! q4 n
        dmStoryEditor->qryExec->SQL->Add(strSQL1);
" i, l8 G0 `8 z, [- y  H        dmStoryEditor->qryExec->ExecSQL();
  p! @* j8 T/ f/ O5 v& e; n        dmStoryEditor->qryExec->Close(); + l& W7 j3 f; t5 |- `
  //整理要写入的Blob数据   $ |. t; `9 @  T+ A4 c" b# I0 D
        LockMemories(NewsScript); & U  f  @! V- q. p- G' s$ T+ a
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
/ d. c' g$ |% L: J        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); 8 R1 q( J, g, ?( [' q
        if(NewsScript.m_pScript!=NULL)
' W- S+ i# ]3 G4 _' }' ^        { 9 O) ^! `' K2 m7 [3 u1 L
   //再将刚插入的记录读出来,使该Query与该条记录关联
6 Z5 r% F# u! \- Q6 X; b- s/ [        strSQL1="select  file_id,script  from  content  where  file_id='"+
# ~" @# `* K- o7 ^                m_szFileID+"'"; 6 K' @2 [1 n: N( J: w
   //允许该Query写 6 K! f) }, c$ v! ]8 V! R, H. k
            dmStoryEditor->qryExec->RequestLive=true;
4 I. C8 D# e" ?) Y            dmStoryEditor->qryExec->SQL->Clear(); / H+ ]2 l; k  b8 P7 _. m
            dmStoryEditor->qryExec->SQL->Add(strSQL1); 5 W8 ]6 t* D1 o" N- Q1 I& t4 j
            dmStoryEditor->qryExec->Open(); $ |& Q5 ]* \! T  T& k/ K: ~! x
            dmStoryEditor->qryExec->First();
* J: Z) B( i; Z) A   //将该Query置为可写 2 {4 y- C! o4 @) ?; T" G
            dmStoryEditor->qryExec->Edit();
9 n! q8 m  U9 ?8 D            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor-> & c& s. G& Q$ u6 H/ A. G& C
                                qryExec->FieldByName("script"),bmReadWrite);
4 U& a6 ^% m% N+ a2 P  B6 a            pScriptStream->Write(NewsScript.m_pScript,  / s3 j% k7 |5 L
                                        NewsScript.m_lScriptRealSize); 3 X/ A7 J+ r! K3 ~! T
            dmStoryEditor->qryExec-&gtost(); 1 z4 @; V% ]3 S/ N4 R
            dmStoryEditor->qryExec->RequestLive=false;
, X2 R+ \+ M4 P' f6 C1 |            delete pScriptStream; / l  `9 o) J- R2 Q7 [
       }
- i2 [+ M, ~3 Q! e" I5 D       GlobalUnlock(NewsScript.m_hScript); , @# |8 L6 [" 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-10-18 01:07 , Processed in 1.796464 second(s), 51 queries .

回顶部