QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]9 \4 }7 h! A3 f' s9 @
8 N: s( r# v% ~
        2 [4 d5 `+ G: _2 Y! U6 l
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: , q; R! x2 n! ?  u  k
BLOB字段的读取:
# n, U  J; }9 y9 |. A TBlobSTream* TemplateStream;
5 n' h8 c' q2 A- ~1 b char* TempPlatePtr;              
2 A7 n' ^6 k$ l
3 a, x. ]  l9 F! H$ Z% x  ^ TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
$ b8 r; \1 O0 x6 `/ G% n! p9 w( A                        ("SearchTem"),bmReadWrite); ) O" S1 A( I0 p
TemplatePtr= new char[TemplateStream->Size];
% h/ G  H- I7 q5 s3 c0 Y: V TemplateStream->Read(TemplatePtr, TemplateStream->Size); 3 K& t3 d- s$ u
- Y" ]% X) e- o) c  m
BLOB字段的写入: 2 `1 c5 @3 N0 w1 D- a; @
TBlobSTream* TemplateStream;
8 p8 d  w: G7 w  ]/ w char* TempPlatePtr;              
+ M/ o4 M# f: L/ G: A3 k! m+ {
4 Y. J# O/ v$ k$ Q' {, ^7 M TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
! C$ A1 K0 N: w4 R2 K& [                        ("SearchTem"),bmReadWrite); ) M0 Y: S$ r6 S( o- O/ a
TemplatePtr= new char[TemplateStream->Size];
% a# w2 r; n3 p' j% q! Q) K TemplateStream->Write(TemplatePtr, TemplateStream->Size); # o) K0 I+ L2 V4 {: ]- a

* f  r" @  m' ~0 `0 A5 _' h1 ~________________________________________________________________
0 y# n, d8 [3 v- |. j3 t, A3 l补充:
9 h* U) \2 m9 ?获得字段的大小用函数datalength ; O2 {) k/ m3 ~( Y& p- ^
- V7 ^; m! A. G) k6 G) y
SQL Server端要作一点设置: 0 F8 c8 N# {) R8 U* U
By default, WRITETEXT is a nonlogged operation. This means that  
; `$ ]3 B# V) i1 \text or image data is not logged when it is written into the database.  # n4 B5 T/ F1 t3 S7 W
To use WRITETEXT in its default, nonlogged state,  + Q2 J0 `0 e) K: E  b
//注意!! # P: S1 Y/ H! o& q2 n! ?6 V' \! E
the system administrator must use the sp_dboption system stored  0 G& {& v; `8 }* ~/ r
procedure to set select into/bulkcopy,  2 e9 N7 Q& ?; e& O3 y+ U" q
// ( k1 J; c6 g- y
which allows nonlogged data to be inserted. ' m9 Y0 \8 u' n: e& r
; v: p9 G& R: @$ ?
做了试验,直接写SQL语句好象不行. * g% `* r& @% d7 Y
____________________________________________________________________
+ Y8 {: C( m) ~' _1 q3 @        一些注意事项和一个例子
. ?; Q1 J9 t7 w4 S0 O/ c) F在写入时: ! B1 o0 f/ U3 u+ \( e9 H2 g
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
6 Z0 W7 i" M4 B. q(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; : u+ b4 s6 s% A0 G, ?& J* G
使得TTable(TQuery)是可写的.
: O' j" I1 i" Q0 M- O4 t
; D. d6 r/ [& F, g% \3 ^0 ~: ?下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, 4 F" o  a" v4 p0 c! P  M
script为一个BLOB字段:
; o6 Y# }$ u2 E& a   TBlobStream *pScriptStream; . |$ R& Q2 e2 q" D. j  ]4 `9 T; d" I! Y9 `
  //插入一条记录 ) M+ S! \3 _3 f" Z
        strSQL1="insert  into  content(file_id,script,key_image) values('"; 3 k: P, Z* z. q
        strSQL1=strSQL1+m_szFileID+"',null,null)"; % i% n( h. |2 |7 _* A( Q
        dmStoryEditor->qryExec->SQL->Clear(); 2 i6 j: i# u! u* Z
        dmStoryEditor->qryExec->SQL->Add(strSQL1);
$ A: Z. h# C& M9 Q. F! t        dmStoryEditor->qryExec->ExecSQL();
! }. T9 J: V# O" a& W- A3 z        dmStoryEditor->qryExec->Close(); ) L7 X9 n* q( B4 u. U* t" Q4 \
  //整理要写入的Blob数据   
2 c. I1 f" J% L1 Y! ~. q        LockMemories(NewsScript); 8 I: Y# [) h4 F1 v+ o
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
' e5 [* `6 H5 N- F        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
1 z" B. y# l$ g  W9 y+ ]! q        if(NewsScript.m_pScript!=NULL) 4 u/ ?+ ^+ X6 U
        { & H4 i6 f. i! K9 s( P+ @# G0 ^
   //再将刚插入的记录读出来,使该Query与该条记录关联
, C+ A  r4 N, j: F7 p# @/ C7 q4 V        strSQL1="select  file_id,script  from  content  where  file_id='"+
; O4 \' g1 D& f2 R4 B' ~; R9 t1 Y                m_szFileID+"'";
- J2 v& ?/ a- Z: s, O   //允许该Query写
" r( r! j# s  G            dmStoryEditor->qryExec->RequestLive=true; # \" \4 Q$ b" w- i
            dmStoryEditor->qryExec->SQL->Clear();
3 |4 F$ B* I- ]- j& u% |$ }% C/ ?2 I            dmStoryEditor->qryExec->SQL->Add(strSQL1);
& I2 c& L1 T8 j$ o) H0 y; B, |: ~            dmStoryEditor->qryExec->Open();
- y& q7 Q, k6 g            dmStoryEditor->qryExec->First(); ( D, S, _  O4 A0 A& ?
   //将该Query置为可写 6 V4 H) \  j* X- E% N
            dmStoryEditor->qryExec->Edit(); 5 J( |8 E3 Q! S; |
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
  B9 r# ]; b& S5 D" E* C- h- M                                qryExec->FieldByName("script"),bmReadWrite);
( m4 w4 x+ w3 u3 f2 T  t0 B            pScriptStream->Write(NewsScript.m_pScript,  
& l! V6 L5 z% T3 g2 e8 x; Q( s% S                                        NewsScript.m_lScriptRealSize);
- u' A+ V% e0 }9 r            dmStoryEditor->qryExec-&gtost(); 0 D5 T+ r( U7 H7 g9 o6 s
            dmStoryEditor->qryExec->RequestLive=false; $ U6 n; N* T0 ?+ W3 g
            delete pScriptStream; % f! }; r/ R, s4 s. P- Z1 R
       }
3 J6 ^5 ]: ]8 h) c& i# J, n8 C% X       GlobalUnlock(NewsScript.m_hScript); 3 r4 J# Z* X1 m: @9 H7 G
       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 07:09 , Processed in 0.270500 second(s), 52 queries .

回顶部