QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
* S% \$ z+ T$ [4 r, C) s7 e! ]% Q) J
; d% Z  }8 t, ?* d+ E2 W; }( o        4 x0 _9 n8 M0 a+ U% @
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: + m2 _' ]# s6 X( n! W8 `% ~+ \& _+ X
BLOB字段的读取:
, p, }" O7 n. w. ?, k4 Y TBlobSTream* TemplateStream;
3 l, G: G+ ]7 Z: J0 W char* TempPlatePtr;              * H% B; [; ~! w  X5 I9 s0 D
+ j( K) `4 X$ O5 v
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName $ m$ d+ z8 @) f7 X
                        ("SearchTem"),bmReadWrite); ' K$ `9 @0 Z& `, y$ I
TemplatePtr= new char[TemplateStream->Size]; $ x5 O. ^" K) i; a
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
6 j  \  |9 l( g # {  Z, O( K' q* w- M
BLOB字段的写入:
  f5 I  G: r% T+ ? TBlobSTream* TemplateStream;
1 `' ], H# y  ~- l char* TempPlatePtr;              
+ \# i1 _# M4 B6 p* L+ H, E) Z% u & P/ h6 I( w1 x) {# d9 E. L
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
  C( F! o5 ~5 T9 T                        ("SearchTem"),bmReadWrite); ' ^( i6 z( [! G$ n4 L
TemplatePtr= new char[TemplateStream->Size]; 8 d% b8 r. O6 G3 a
TemplateStream->Write(TemplatePtr, TemplateStream->Size);
5 U0 F2 |9 U5 u3 f
: Z5 Z/ o+ z9 a: l, h/ \: g/ o________________________________________________________________ 8 C( ~  L( C4 U* c
补充:
7 m1 B) ~, N0 M  X" j9 D获得字段的大小用函数datalength 7 _8 ~# C6 s) N  Q8 |8 u

; a0 {8 o0 J+ N6 _& S# E2 x6 B' Z, mSQL Server端要作一点设置:
1 b9 v( G+ Q9 i8 IBy default, WRITETEXT is a nonlogged operation. This means that  
7 [( u. c( }) j. ftext or image data is not logged when it is written into the database.  
/ n' V# a1 D9 J4 i) wTo use WRITETEXT in its default, nonlogged state,  
: ]* @3 z+ r- e+ m$ K  l//注意!! , q& r- Z0 P; A! }1 o) v& D* c* Q
the system administrator must use the sp_dboption system stored  
( s& e* S1 l" f" N8 A. R5 s( Q& @procedure to set select into/bulkcopy,  & c8 G- y2 N% b) S) F
//
+ |* n( H1 ^' ]* @/ ]* Uwhich allows nonlogged data to be inserted. 6 z& u! Q9 y% t% ?
; m- U! Q/ O/ K/ d  N3 l
做了试验,直接写SQL语句好象不行.
  _* o! Z2 ]3 x____________________________________________________________________ 3 y7 v3 E% S# O6 g7 J5 V
        一些注意事项和一个例子 / o4 J. R" ?5 K4 }2 X" u  i
在写入时:
" [4 c1 D) E% ]1 t1 g& t(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
8 h9 w5 \3 K1 M2 Y2 g  O(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; , `: f! b/ H" k5 [
使得TTable(TQuery)是可写的. 1 q6 R, w; R( v& \

# M* r" [/ g; |7 n% c3 ^3 u0 y下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, 8 f9 M: o) f$ |1 j. n4 F# P. Y
script为一个BLOB字段:
8 d) u! ?7 C$ Y3 f6 J' G   TBlobStream *pScriptStream;
; M% s' u* t4 y6 C8 ], Q  //插入一条记录
: m, U* r' i% h" Y( V9 P        strSQL1="insert  into  content(file_id,script,key_image) values('";
. Q3 {, b1 [0 W4 r7 i) q" n; f        strSQL1=strSQL1+m_szFileID+"',null,null)"; 8 g( m4 c) h$ j
        dmStoryEditor->qryExec->SQL->Clear(); 3 e( V0 A; @' ^8 q
        dmStoryEditor->qryExec->SQL->Add(strSQL1);
0 ?3 a9 B7 L! R2 W  [        dmStoryEditor->qryExec->ExecSQL();
( T$ y1 h9 M8 t9 p        dmStoryEditor->qryExec->Close();
9 }+ g) U( A+ h8 J" }( Z  //整理要写入的Blob数据   4 B! e+ Y( T; n* n1 X3 S
        LockMemories(NewsScript);
; ]5 L/ w7 _6 W& u  E        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
) ?) O: Z* O* t        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); 9 H6 X1 b  n# v/ D" S: t5 F
        if(NewsScript.m_pScript!=NULL) - ^, E) g8 z* i/ r; u; o
        {
% Y+ e  i$ m+ y& j0 H1 L   //再将刚插入的记录读出来,使该Query与该条记录关联 5 P2 l, Q1 x8 n0 v
        strSQL1="select  file_id,script  from  content  where  file_id='"+ 6 m8 G, V% S3 y4 ]8 O
                m_szFileID+"'";   |8 i. c# ~) L0 Y1 u# _
   //允许该Query写 9 X; `- v$ S* Y& X' S5 g
            dmStoryEditor->qryExec->RequestLive=true;
9 D; H" Q+ t2 ]* J: `            dmStoryEditor->qryExec->SQL->Clear();
* W* N7 `7 @4 x3 T( Y; S, d8 \            dmStoryEditor->qryExec->SQL->Add(strSQL1); 5 x8 b9 l: ^. r9 `$ b6 i* w
            dmStoryEditor->qryExec->Open();
4 d* y( x6 {: J3 x% j3 M            dmStoryEditor->qryExec->First(); $ s: G2 \1 G( ~6 ^! R/ P
   //将该Query置为可写 7 g( ^3 W! {+ g% X1 [  D
            dmStoryEditor->qryExec->Edit();
8 K, ?5 I0 `; Z            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
1 y2 d1 F7 @- b! R; ^7 e5 \                                qryExec->FieldByName("script"),bmReadWrite); ! }  c, ~7 y3 e. R% s6 g* L
            pScriptStream->Write(NewsScript.m_pScript,  % A: u4 ]  y" y; |. s4 z7 u% ]7 e
                                        NewsScript.m_lScriptRealSize); 4 q/ v( v# l% z9 x. p
            dmStoryEditor->qryExec-&gtost(); 9 z) |7 Y& T. ^7 a  y
            dmStoryEditor->qryExec->RequestLive=false;
0 |/ i( ?" a( q1 P3 w+ H            delete pScriptStream;
  ]  K5 |- a4 {. t       } ; }" D7 l9 j/ d( _
       GlobalUnlock(NewsScript.m_hScript); & N2 J7 \2 P* Z' z4 q7 r
       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 10:49 , Processed in 0.543963 second(s), 52 queries .

回顶部