QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |正序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]) P1 T' z0 e& b# I; }
7 `. f( J9 W# T  ]
        / x2 D& Q( Z) m. X: L; j% |
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
. z- T0 P/ d; q7 j$ P4 L, n- gBLOB字段的读取:
+ y( X+ w. y" y& j+ Q$ e$ h TBlobSTream* TemplateStream;
9 n" t" t; o2 [! i char* TempPlatePtr;                c# j. r7 ~* G0 k

% }3 r" B2 @3 @. l/ Y+ d" I TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName 3 y1 E# x# G" @
                        ("SearchTem"),bmReadWrite);
% [6 a9 s8 p! V  z1 t" [ TemplatePtr= new char[TemplateStream->Size];
4 M+ B3 @; O! c$ t TemplateStream->Read(TemplatePtr, TemplateStream->Size);
* m6 |" d# y$ V1 r* U 6 }4 }  G5 ]: x7 V- o
BLOB字段的写入: * I  K7 w6 v* Q3 ]
TBlobSTream* TemplateStream; # M$ s6 Q2 n- q% N
char* TempPlatePtr;              4 h  q" E/ s/ c5 ^

) f! Q3 L: v  c4 @8 D/ U* B TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName # M7 B6 u* G: s+ Q) |; A
                        ("SearchTem"),bmReadWrite); / y+ i$ l+ _# v# H+ D2 \
TemplatePtr= new char[TemplateStream->Size]; 1 b4 G" e! }7 ?9 W) N) y& z
TemplateStream->Write(TemplatePtr, TemplateStream->Size); : {5 r) v% b+ D- U! i

% a' ~) L, p+ K; H* J4 D________________________________________________________________ ( P& \' w- [4 l# U# G; P; @2 N
补充:
# U! M$ |1 x& f2 h获得字段的大小用函数datalength
8 R7 ~# z0 T' b6 D' \: H
1 k  I" r4 @' \# q! ~1 d) m+ nSQL Server端要作一点设置:
- g5 ?0 c3 a& d0 X9 [6 T0 t" t* xBy default, WRITETEXT is a nonlogged operation. This means that  , o8 c% s! h% k4 w  u6 }7 V8 N  f
text or image data is not logged when it is written into the database.  
( G, O1 |1 w% ^8 a; U. R4 PTo use WRITETEXT in its default, nonlogged state,  ! I- z* y, j; Q5 \8 ~
//注意!!
2 t) Z+ w$ D7 g. o3 J) Uthe system administrator must use the sp_dboption system stored  
* x2 F: |5 N# ~4 G2 zprocedure to set select into/bulkcopy,  
! p( g$ Z, ], @// ! H3 N# T" n# P/ S
which allows nonlogged data to be inserted.
% D4 X* M" k* u; \
" b# G, Z' u. g4 Z) K/ x做了试验,直接写SQL语句好象不行. 0 u8 c! n. F1 m) M4 }0 Y5 G* t
____________________________________________________________________
, U6 b% q# b/ V+ y) s2 ~- v, h+ R; d        一些注意事项和一个例子 - d2 W3 E' t" N' l
在写入时:
  \' T* j; e5 `3 A, o(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; + W  I. y) T" w( X, e5 }& K: s
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
; Z: V* _7 ?: K* H! `" R7 G" M- ^使得TTable(TQuery)是可写的. ' n6 T& f3 S6 g% Z, [
0 @7 V; }; f, W) B3 W; m
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, ' l( x! U0 K. y; j" R; E7 f1 g+ s
script为一个BLOB字段: * L( a( V( q, J: x
   TBlobStream *pScriptStream; . j0 N9 m+ m5 e. d+ z3 m
  //插入一条记录 * e' h- ?- {5 R$ M3 j
        strSQL1="insert  into  content(file_id,script,key_image) values('"; , z, i7 g, b5 a5 x4 j" }7 w2 T
        strSQL1=strSQL1+m_szFileID+"',null,null)";
* e5 f: S& \% }- {/ _6 u" _7 r        dmStoryEditor->qryExec->SQL->Clear();
9 m! D8 p& d1 i' Y( k% o+ ?        dmStoryEditor->qryExec->SQL->Add(strSQL1);
; _+ p4 @# h" L& N. {5 k        dmStoryEditor->qryExec->ExecSQL();
7 Y7 t% b# Y8 h9 A& I) [        dmStoryEditor->qryExec->Close(); % ]' p% ?+ {' l1 z+ o
  //整理要写入的Blob数据   
. P5 r6 }& j- v8 ~% V; O9 Q        LockMemories(NewsScript);
* R' y* a% D1 |9 b% ~% Z        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
6 M9 t/ r! Z5 {; F9 @  ~        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); ' \- N7 b3 m1 U( {
        if(NewsScript.m_pScript!=NULL) " u/ y, n0 c1 z* D6 ~
        {
  G  \# o, T: A   //再将刚插入的记录读出来,使该Query与该条记录关联
  F: R$ K$ _  m        strSQL1="select  file_id,script  from  content  where  file_id='"+ # M$ Z; I" I% K" g6 z, R' U0 g
                m_szFileID+"'"; " o  N( ^6 @% p3 \
   //允许该Query写 + ]( `$ [  k' ?5 q1 S
            dmStoryEditor->qryExec->RequestLive=true; 2 w$ h  ?; @8 ~2 _
            dmStoryEditor->qryExec->SQL->Clear(); & G( |, ~, N9 N2 ^9 L
            dmStoryEditor->qryExec->SQL->Add(strSQL1); - K& P" V! }* V1 P; o6 `/ q9 }
            dmStoryEditor->qryExec->Open(); $ o4 Y1 a) X: M5 ^4 Q
            dmStoryEditor->qryExec->First(); - d$ t  E( t/ X: Q& z5 @( _4 V
   //将该Query置为可写 ( F+ Q' B( Z1 Y
            dmStoryEditor->qryExec->Edit();
5 M+ ?0 r) P: q  A% A( Y            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
) [4 i& `. z% Z                                qryExec->FieldByName("script"),bmReadWrite); 2 @# N' b% n# Q) E# p
            pScriptStream->Write(NewsScript.m_pScript,  2 e* d3 W% w; f& J3 K1 U
                                        NewsScript.m_lScriptRealSize);
: g* R+ l/ a/ A* @1 V8 K            dmStoryEditor->qryExec-&gtost(); / a/ P9 C9 V# _# z- Z
            dmStoryEditor->qryExec->RequestLive=false;
+ ]$ X7 t  ]# U, r& Z- Q  @) m+ d            delete pScriptStream; ; s/ O- \& G" Y6 {7 z
       }
2 C9 P, F2 y0 P' y/ V8 V       GlobalUnlock(NewsScript.m_hScript); / v. @) P$ o- C" L1 r2 U& Z
       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-4-20 00:13 , Processed in 0.441115 second(s), 53 queries .

回顶部