QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
& Z; F; ^' E/ k# Q9 I- B; W 5 |# x7 e( |, e8 P
        
: [0 }4 ^' K8 h" [5 Q: H$ d; }对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
& c( y. p8 A& n+ f# b6 v. o' R7 M  xBLOB字段的读取:   m! ~) ]* N5 V: L2 }9 O
TBlobSTream* TemplateStream;
1 ~5 V+ _# t+ m( r% L char* TempPlatePtr;              ( @$ i( u' v' y/ [* {

$ l5 e3 Y0 ^0 @' T# S9 ~ TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
" ~8 h% ?( Q' L2 u# q                        ("SearchTem"),bmReadWrite);
$ l0 P1 M; |* h4 E8 @. n TemplatePtr= new char[TemplateStream->Size]; 6 K  v+ _1 `. n
TemplateStream->Read(TemplatePtr, TemplateStream->Size); 8 O  R$ J( [$ k/ e2 Q
- p( J! L7 K8 G3 E* t: v
BLOB字段的写入: 8 |; w* c6 N5 P% I) `+ \9 g* O4 O
TBlobSTream* TemplateStream;
' t6 S# c' q) ^: M char* TempPlatePtr;                [, v4 {, c+ K% l; q

9 N  v- f, U5 u) |" j' J- [ TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
4 m' {) a% v1 H8 _                        ("SearchTem"),bmReadWrite); " A- p! Z# E1 ]
TemplatePtr= new char[TemplateStream->Size];   T, _2 N! J# O4 F' p, n& X
TemplateStream->Write(TemplatePtr, TemplateStream->Size); ' Q+ e( k1 _0 z4 e. B8 U

" _8 a, ~) F( M6 T) o________________________________________________________________ 8 ?6 @! r  {" J1 ]9 k3 x/ K! r9 c
补充:
& E, n1 H; h9 i( j* M1 d& m获得字段的大小用函数datalength / a/ g! L% ?: g& B7 J% ~
) g# I' Z" z. O7 _- B. [/ Y2 T* m
SQL Server端要作一点设置: . S! H2 k6 ~$ |1 D6 N% ?
By default, WRITETEXT is a nonlogged operation. This means that  2 ]" W- s" Q0 K
text or image data is not logged when it is written into the database.  
; n8 w2 l9 _% r: f4 r! ETo use WRITETEXT in its default, nonlogged state,  & r: i+ ?; [6 |) q! K
//注意!!
8 y) x; U8 [% Q* w2 K0 mthe system administrator must use the sp_dboption system stored  
- `5 |" p; D. t& A2 dprocedure to set select into/bulkcopy,  $ V- k& m( w: m- B8 o
//
, t- Q* n3 R- `& }& x! Owhich allows nonlogged data to be inserted. / ?1 z& t! U/ C

& F0 F8 z1 C# o3 y( E1 _1 a做了试验,直接写SQL语句好象不行.
# u7 o- E. E! Q____________________________________________________________________ 2 B' S# ?/ r, y3 F1 K% |
        一些注意事项和一个例子 6 o8 @. F+ G0 o4 F8 u
在写入时: & M' q$ Z% V1 B% q! q
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; : k( O5 t" {& @
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; % B) Y2 ^2 V% Y- I( P3 E" a
使得TTable(TQuery)是可写的.
) e% l! [, K- m7 g 3 x# L2 Q2 f7 v6 [" i
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
7 {0 N2 R' V( n- f4 }+ |8 ^script为一个BLOB字段: 2 g6 x! R; r& Q7 p6 R3 p
   TBlobStream *pScriptStream;
$ @+ q$ K  w' K# b" d/ m  //插入一条记录
0 t& T" d$ @. M/ a        strSQL1="insert  into  content(file_id,script,key_image) values('"; $ v5 p8 u1 l$ S5 `
        strSQL1=strSQL1+m_szFileID+"',null,null)"; 5 U) r; T# n: ^" f
        dmStoryEditor->qryExec->SQL->Clear();
! D+ Y8 V& c! {( f' a1 c        dmStoryEditor->qryExec->SQL->Add(strSQL1); / ^0 W" d; |; ~
        dmStoryEditor->qryExec->ExecSQL(); - E: H* K9 a0 x3 l! M% Z9 |
        dmStoryEditor->qryExec->Close(); ' P8 D7 T8 R: O$ M0 E
  //整理要写入的Blob数据   0 A( L# y' l8 ?( y9 R1 E. t
        LockMemories(NewsScript); : ?. f. N1 H$ ^5 _) ]5 V
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum); " [) m2 |! T8 }5 v' J3 t. j
        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
" K7 y) K0 B) u" r8 p" m  `        if(NewsScript.m_pScript!=NULL) ! ^' I! w# Y8 o
        { ! z' Q4 q) B, I* R) ]
   //再将刚插入的记录读出来,使该Query与该条记录关联 0 m" i- {, z! b1 I+ N. M8 j, h: B
        strSQL1="select  file_id,script  from  content  where  file_id='"+
5 u4 _) j+ Y6 u& d" R6 z' j                m_szFileID+"'"; * i, T4 q5 O  E" B+ x
   //允许该Query写
+ _$ A: [) P9 [* Q$ F            dmStoryEditor->qryExec->RequestLive=true;
1 |: G1 _5 p% u            dmStoryEditor->qryExec->SQL->Clear();
5 J/ D4 u- h, \" W            dmStoryEditor->qryExec->SQL->Add(strSQL1);
! ^# B- G. n, R- m  y$ b            dmStoryEditor->qryExec->Open(); " x7 \# t% Y2 a+ y7 ]6 ~0 m
            dmStoryEditor->qryExec->First(); - X$ }6 t" z) R( [* K, k2 p
   //将该Query置为可写
+ f! d( D0 Y: y4 v' X            dmStoryEditor->qryExec->Edit(); ' a6 j" N0 b& @, m0 W: L
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
- ?! Q) m1 s$ q% C9 C% I' o                                qryExec->FieldByName("script"),bmReadWrite); 4 O) M. s; v* i& T) @
            pScriptStream->Write(NewsScript.m_pScript,  . J. n2 G; \/ u/ Y  k3 m  N" w5 b
                                        NewsScript.m_lScriptRealSize);   z9 I' ]3 t) O& u7 Q
            dmStoryEditor->qryExec-&gtost();   A- R( F  W1 o" g# V* {) g- x1 K
            dmStoryEditor->qryExec->RequestLive=false;
; R2 i2 ?$ I/ G0 a# Q7 {            delete pScriptStream;
8 V% N" ?' z- C' y7 L6 ]9 n       }
5 p* J1 ]0 v0 B5 w: Y3 r& K( [# t       GlobalUnlock(NewsScript.m_hScript);
. Q2 u8 x9 V+ D1 ]8 t9 i- y7 l       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-19 22:30 , Processed in 0.395188 second(s), 52 queries .

回顶部