QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
0 I: @; B! D- \8 b( Y; T& L
7 K4 u, X+ g3 d        
- S  E4 F3 i4 u3 _8 r. A对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: 0 O) E  M. m2 j  y- K
BLOB字段的读取:
( U- R# G* ]6 Z TBlobSTream* TemplateStream;
. f0 y5 \$ }& F6 q1 ^ char* TempPlatePtr;              
. z: c: m  `* [( D9 _3 A
( N; P# A2 N0 Y, @3 q' W! S* b TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName 3 ?0 k: i, S! t, Y
                        ("SearchTem"),bmReadWrite);
8 U6 \5 M9 k9 [- h, B# `. u# z TemplatePtr= new char[TemplateStream->Size]; . B* {7 }% x+ |! o8 o6 I
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
/ A8 x# l2 I/ K# u2 l$ h
7 d8 ~, c6 C- s: ], o0 t& Z: gBLOB字段的写入:
) k  F8 A% e' b) r! M: [: c( A TBlobSTream* TemplateStream;
2 {, Y# ~: L% R char* TempPlatePtr;              
# \( p8 r5 v) P
# j$ \0 f3 Q4 ^5 z8 f$ C# ?; x TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
) X: I" J% u2 v3 f$ g# j$ v0 U- ^                        ("SearchTem"),bmReadWrite);
  _1 d5 t! s" n' P TemplatePtr= new char[TemplateStream->Size];
& J3 F" p# X( E5 E) w6 F TemplateStream->Write(TemplatePtr, TemplateStream->Size); 5 i, Q7 D/ `9 g6 X, E* u
9 F  s/ h6 O0 ]4 t# k* _
________________________________________________________________   i: r; g- L& j/ l
补充: . G2 p2 x5 ]" q
获得字段的大小用函数datalength . V9 J. v, K: l" N; o, J' J7 M

1 V* e5 x  |' i9 k+ D3 E$ C6 QSQL Server端要作一点设置:
3 M5 u+ s# }  }9 s$ a+ |* MBy default, WRITETEXT is a nonlogged operation. This means that  . {/ u0 u6 r( u, w% V* Z9 X# }
text or image data is not logged when it is written into the database.  3 Z: i* L8 W/ r7 Z9 s
To use WRITETEXT in its default, nonlogged state,  / M9 g% G' P: S  ^
//注意!!
, C8 v& ~: S% t% O5 T' b8 Cthe system administrator must use the sp_dboption system stored  
' {; S8 `% A4 v, \: U$ oprocedure to set select into/bulkcopy,  1 N1 N% F, i7 B: G! x2 m$ s" M- H
// , g2 o* Q! I' l& T) P) }
which allows nonlogged data to be inserted. % J5 v6 p6 V3 Q/ A" p! d

) H% F2 r+ ~- w: H8 G4 a( K) F做了试验,直接写SQL语句好象不行. ; F7 }9 b- L6 Q5 V6 \* P0 S8 F
____________________________________________________________________ 3 }8 Q2 B7 \3 J9 h7 S/ b5 v
        一些注意事项和一个例子 5 f# E0 Z) _3 K; R
在写入时: 1 n9 A. j1 t( S. P
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; ) l3 M- T# |: w; f
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; ; ?6 Q: y# z: B* M& {& q7 N5 N
使得TTable(TQuery)是可写的.
" F1 t: c0 ~/ {% @ 2 {( c- u* T; c9 `0 P6 R4 J
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
& @* U; z. p) l) Tscript为一个BLOB字段:
) j$ R0 W! Q! B0 Y! J: \   TBlobStream *pScriptStream;
) z* j1 R1 B1 b5 ~9 |- }  //插入一条记录
& u; W5 T' }" ^/ P        strSQL1="insert  into  content(file_id,script,key_image) values('";
$ H6 L( Y$ Q# s* S3 v4 `        strSQL1=strSQL1+m_szFileID+"',null,null)"; . Y- `* ?# J! z! L
        dmStoryEditor->qryExec->SQL->Clear(); + H# _4 y7 q. @/ D+ Q
        dmStoryEditor->qryExec->SQL->Add(strSQL1); 3 K7 w! q' I& q
        dmStoryEditor->qryExec->ExecSQL();   m' u* b- D7 k
        dmStoryEditor->qryExec->Close(); 2 _- n6 }; g5 o; A( T
  //整理要写入的Blob数据   8 W, f3 ?) n5 l0 _+ t8 B: K
        LockMemories(NewsScript); / h' R, t5 f/ J6 x1 w6 {! y) A
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
$ J2 M, \  @1 a1 L# N1 \! W        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); 8 x0 n, Q7 H0 f3 d3 U4 u( i
        if(NewsScript.m_pScript!=NULL) " S/ _' r. U) ~0 P7 V
        {
) {0 L) x' g" P! D9 M9 @   //再将刚插入的记录读出来,使该Query与该条记录关联 # R1 @: @; X% p* y  i
        strSQL1="select  file_id,script  from  content  where  file_id='"+ ( z' _9 H8 Y% e: ?% c
                m_szFileID+"'";
5 I' L+ D. K6 a   //允许该Query写 2 Y* ~  n0 E2 V  H1 F4 a# J
            dmStoryEditor->qryExec->RequestLive=true; ; f! h4 j) ]' z/ C. d
            dmStoryEditor->qryExec->SQL->Clear(); 4 F5 @* e! {* x
            dmStoryEditor->qryExec->SQL->Add(strSQL1);
( Y& u( u9 C, z$ M$ ^0 N! f- H" `1 d            dmStoryEditor->qryExec->Open();
7 S! m: A4 V* p0 {' s            dmStoryEditor->qryExec->First(); 4 }, Z; o% j& f# F4 }" J  ]  Y
   //将该Query置为可写 8 L4 ^3 J4 ]2 \" X3 e& r7 S
            dmStoryEditor->qryExec->Edit(); 9 s( S3 ~8 E  ]" j
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
" F" l: \4 O2 }. g5 v7 p1 }                                qryExec->FieldByName("script"),bmReadWrite); " v. m& H. ^" U: u2 R# s
            pScriptStream->Write(NewsScript.m_pScript,  
: `( [  v; ~2 H2 N2 v7 }                                        NewsScript.m_lScriptRealSize);
: P. j" S3 }3 f" S3 x            dmStoryEditor->qryExec-&gtost(); - l* `5 K9 ^; {6 r7 ~
            dmStoryEditor->qryExec->RequestLive=false;
5 K  g6 a, w7 X& d5 d- v" L            delete pScriptStream;
) F. {! O# Z. @- Z4 L4 O+ ]+ a       }
, i% ?3 u) B3 U/ V* f       GlobalUnlock(NewsScript.m_hScript); & \! d3 O, z- l3 Y* L. 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, 2025-6-27 11:44 , Processed in 0.674683 second(s), 52 queries .

回顶部