QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]! F  e8 P3 w. a) E7 B% f, c2 D7 {
0 L! n) @0 @1 \4 |
        ; r" J/ y# K$ W/ E( `* E9 R
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:   _6 V( T# F5 z2 s+ d8 j" y4 Z
BLOB字段的读取:
' \' j7 ]; K+ V- T  Q7 ~" H* S TBlobSTream* TemplateStream;
/ V2 {; u4 d" T3 z9 V" H& m9 F  Y char* TempPlatePtr;              
* I  o) @* c2 R( q: P- J 4 @: z$ U: f2 \8 ^% \  M
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
. x7 l) Y- B; ^" G3 C- ~                        ("SearchTem"),bmReadWrite); 2 Q6 E9 m, ~* ^' \/ C2 M4 s: v1 ?
TemplatePtr= new char[TemplateStream->Size];
% P$ Z1 U9 h; A, Y' Z) y) Y" x TemplateStream->Read(TemplatePtr, TemplateStream->Size); ) I# `! I) \6 t# X) V
  t# M4 Q. Q4 d# H
BLOB字段的写入: . }; h4 U- s* N6 |" Y# ]
TBlobSTream* TemplateStream;
  `% M3 w* M4 ~! S2 s char* TempPlatePtr;              + ^! }- P4 J1 y$ M* g' U) Z

$ b: B8 Z' ^% O" X! W0 l TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName - H0 j$ _' `0 v
                        ("SearchTem"),bmReadWrite); ! C- n/ d! o9 H1 D
TemplatePtr= new char[TemplateStream->Size];
5 J  y# C% {2 ~4 G; @ TemplateStream->Write(TemplatePtr, TemplateStream->Size); " d8 B, k" H6 Q2 R! r2 F- g$ N' u$ E
5 k, I7 f+ E7 }# q% F( n' c' }1 M3 e
________________________________________________________________
' R: r/ e( s0 r! F补充: & M: q* C! x2 }  _8 n) p2 H
获得字段的大小用函数datalength
  y, b& }! T3 s" \2 [1 g% i : k" v2 s( h6 T6 q
SQL Server端要作一点设置:
+ H$ D; Z3 C" O1 q1 Z; q* HBy default, WRITETEXT is a nonlogged operation. This means that  
9 K5 ]2 T3 W; c, P4 q$ d0 |text or image data is not logged when it is written into the database.  & q" ]2 S. j( ^# H+ g2 y) {: ~
To use WRITETEXT in its default, nonlogged state,  7 t8 V' T: x5 ^
//注意!! 0 e6 c6 S5 U7 N( ^; j
the system administrator must use the sp_dboption system stored  
+ L; V  m, P% q! C3 F  Z* Uprocedure to set select into/bulkcopy,  
, A! B* d, p! W& }4 r# I/ |//
' _! T( `9 I( S& @, T! V2 iwhich allows nonlogged data to be inserted.
5 J+ ^8 ~9 c! N. a 0 `) F# `4 D9 D; G) n! V; W8 K4 ~
做了试验,直接写SQL语句好象不行.
4 P% m9 Z* |" B4 T. R____________________________________________________________________ ) x, K9 m7 ^0 ]( ~
        一些注意事项和一个例子
% n- k, s# ?1 L, ]3 A; L在写入时:
# |" E% ^! ~% m(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; 1 W% Y0 T2 `' A9 u
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; " ^: ]0 g% U( H$ r
使得TTable(TQuery)是可写的.
7 |9 d( P' z, I& R$ c 9 a! V( |: s/ K8 G8 p# b
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, : D6 ~# g6 R) Y% V2 f* ?9 c; N
script为一个BLOB字段: - |+ p' Q. x# H- f5 t# z: D% a/ M
   TBlobStream *pScriptStream; ; c+ Y3 G. e: u
  //插入一条记录
, B5 _6 I8 s7 h6 x, z        strSQL1="insert  into  content(file_id,script,key_image) values('";
  S0 w# l7 J$ g. t) d- Y5 X( |        strSQL1=strSQL1+m_szFileID+"',null,null)";
% ]) E$ W; P" p# C8 ]8 R        dmStoryEditor->qryExec->SQL->Clear(); / b1 f& o' ]. k7 d+ C# G
        dmStoryEditor->qryExec->SQL->Add(strSQL1); ' P: s4 }/ P! ?' _9 M/ V# G
        dmStoryEditor->qryExec->ExecSQL();
+ k5 n) [1 @+ _9 R) R        dmStoryEditor->qryExec->Close(); ' z3 Z3 \1 r; T  l/ ~. {
  //整理要写入的Blob数据   
- O3 l0 _7 z2 t  y8 h        LockMemories(NewsScript);
: i- O" a3 ?% P0 S        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
" S) u) R! W$ h* G& d        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); ( ?* Y- [( o0 v" }1 b+ W
        if(NewsScript.m_pScript!=NULL) ; V' m" `: G7 _: t' X7 X
        { * J& d1 W' F  C  n5 f: N
   //再将刚插入的记录读出来,使该Query与该条记录关联 ! w$ H4 ~0 g; L/ Z* d% Q$ }  J
        strSQL1="select  file_id,script  from  content  where  file_id='"+ 7 d1 {, W) w- V3 ~* n
                m_szFileID+"'";
) _2 R! T" @( R: _$ b4 r   //允许该Query写
0 R- W( |' j2 d            dmStoryEditor->qryExec->RequestLive=true; 0 s6 P& Y/ e- z+ R, @: }: D
            dmStoryEditor->qryExec->SQL->Clear(); : ?6 ~# g/ l* w* ?  g. z0 m
            dmStoryEditor->qryExec->SQL->Add(strSQL1);
  r8 u6 T, a2 M            dmStoryEditor->qryExec->Open();
; R0 H8 n, S# d9 D9 H2 b            dmStoryEditor->qryExec->First(); 9 A5 l- s5 R# C7 p7 a; r) q! G
   //将该Query置为可写 ' w9 }1 U+ ]4 k/ L- M
            dmStoryEditor->qryExec->Edit();
9 r$ f- T. M  Z$ ^7 y            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor-> + K" d. D2 A# n& F. m
                                qryExec->FieldByName("script"),bmReadWrite); ; C# g6 v/ ?2 C+ x' e
            pScriptStream->Write(NewsScript.m_pScript,  % I0 o* I% [( {; \' Q
                                        NewsScript.m_lScriptRealSize);
7 j; i/ l3 e  [& ?            dmStoryEditor->qryExec-&gtost();
: A( {  W5 a) b  s& B- W& M% `            dmStoryEditor->qryExec->RequestLive=false;
# R- h! D8 M0 m; @5 G            delete pScriptStream; + n! g8 n( v; n0 O. U
       }
3 I/ w  A& l, f3 e4 l       GlobalUnlock(NewsScript.m_hScript); 1 ^6 G) J, h9 a
       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-6-12 00:32 , Processed in 0.356696 second(s), 51 queries .

回顶部