QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
( {9 q  c7 `" s' w: \% L6 C4 | 8 Q$ t' W  x, `2 w2 ~% z
        3 u( N, |3 h& Q, F
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: # b( L2 @, M" k: ?) {0 W9 u+ A% U
BLOB字段的读取: ; n# p% S' l$ k
TBlobSTream* TemplateStream;
( z9 {  ?' y; _3 ?  f) H- \2 I( U6 o: m8 w char* TempPlatePtr;              
/ V7 d' x$ |% Y* c8 @! O
; F1 S" \% I5 W) o) o* M# p) m: m/ s TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName ' r4 ~$ t# ]0 s  r  F" U% \$ N
                        ("SearchTem"),bmReadWrite);
9 x" S8 E+ N7 @. Q# I TemplatePtr= new char[TemplateStream->Size]; " X1 J/ O, @3 a1 @
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
- {# q& p) E, S; ?0 j9 R ) B/ A8 L# @; X9 J# f8 Z9 i
BLOB字段的写入:
5 d( _. J" `; V, Z1 C% k( O! ~ TBlobSTream* TemplateStream;   @8 m5 f. b+ p
char* TempPlatePtr;              
& W7 x% ?% V6 j/ E# ] " `, h) j7 q1 @$ u0 d
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
3 n0 s" Y* K# X- p5 e3 q6 O                        ("SearchTem"),bmReadWrite); , |( s: c0 ^8 ?- c
TemplatePtr= new char[TemplateStream->Size]; 6 `% @+ n* V) [, Z
TemplateStream->Write(TemplatePtr, TemplateStream->Size); 3 o0 a% f7 d! Q/ m$ U  c
, _3 z6 ^+ ^' T' G
________________________________________________________________ # \6 ?, U5 ?- k
补充:
. I- W0 N% R* ^/ V* t8 i3 Z获得字段的大小用函数datalength
5 w" S+ ]# h/ {0 o8 k: q4 F1 |
# R2 p6 K: B; X. l" ESQL Server端要作一点设置:
' }; {8 t( ?9 N$ ]- pBy default, WRITETEXT is a nonlogged operation. This means that  * \8 E% `9 {; f1 S; a9 h6 K
text or image data is not logged when it is written into the database.  
6 X& l7 T$ e8 s' Q* X0 d. B. aTo use WRITETEXT in its default, nonlogged state,  
' E* _4 l* T" c$ @! F6 Z  N$ O//注意!! $ A- E/ r! S+ A' a# ]( B1 X
the system administrator must use the sp_dboption system stored  + U" M, @& ?2 M2 ?$ i% C
procedure to set select into/bulkcopy,  
0 G: D2 E0 l* g6 K4 M# G// 2 q+ N# q* y4 D, _; W4 Y! e7 o& U9 A
which allows nonlogged data to be inserted.
0 B! h, H9 i+ i. c: u% F3 X 9 V8 Z' I- V4 F2 g6 \& d
做了试验,直接写SQL语句好象不行.
8 E) ?( L  a0 n, [7 W____________________________________________________________________ + W; N) d$ ], Q6 [
        一些注意事项和一个例子
' C( ^9 h3 E& e; p2 h在写入时: 5 [- U: j" n! m. k( J8 P8 o
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
: Q+ B: q# C1 M. v(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
/ B. f0 S5 u+ F! A  ]: N使得TTable(TQuery)是可写的. 1 W" _6 K4 E: v4 e: I
# a  k( \8 a6 S5 H# a! s; q
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
/ ^+ n* x: W  \script为一个BLOB字段:
# T! m9 e/ S0 X! i3 _   TBlobStream *pScriptStream;
3 R, c- d" R- O2 c3 u0 e0 K1 B' ?  //插入一条记录
5 p0 O3 x& d2 G0 a5 S: G6 W        strSQL1="insert  into  content(file_id,script,key_image) values('";
" O; g2 H( O% Z8 e/ |        strSQL1=strSQL1+m_szFileID+"',null,null)"; 7 I$ g5 {8 M, F7 h9 o  w" b
        dmStoryEditor->qryExec->SQL->Clear();
6 A6 o) ^! `# K& Q* h        dmStoryEditor->qryExec->SQL->Add(strSQL1);
# |% K# w9 r9 H: s  P        dmStoryEditor->qryExec->ExecSQL(); 8 X) @  a1 f' @+ E: ^& v/ F* T4 x
        dmStoryEditor->qryExec->Close(); 1 h% ~  q7 h; U$ C1 L
  //整理要写入的Blob数据   
9 C9 p  A. A3 [6 B        LockMemories(NewsScript); 3 H" {8 g; c* s
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum); % l: |9 @2 f% V) x
        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
5 @* S8 |  |. i6 U# U+ W3 Q. ]4 j        if(NewsScript.m_pScript!=NULL) + W& y5 S4 @" ^# D0 N% G
        { ( F4 @2 X+ x* G7 ~. K# [
   //再将刚插入的记录读出来,使该Query与该条记录关联 - r+ r& W8 a  n" t5 O5 P
        strSQL1="select  file_id,script  from  content  where  file_id='"+ 2 ]7 z* d2 n6 `# b' r- z1 H3 l
                m_szFileID+"'"; ! J( a' t) `3 \& K0 B  \1 }
   //允许该Query写
3 ^3 h5 U/ f9 \. Q1 ?2 O2 i            dmStoryEditor->qryExec->RequestLive=true;
+ Q$ |4 X& o) D9 `: [% |$ Q7 M% x            dmStoryEditor->qryExec->SQL->Clear();
* j- H: |. g1 V- V0 J            dmStoryEditor->qryExec->SQL->Add(strSQL1);
2 G! L$ p6 p9 H& L8 X' e            dmStoryEditor->qryExec->Open();
: k! H. t! D8 V9 q            dmStoryEditor->qryExec->First(); ! c5 H3 t; [- V' m
   //将该Query置为可写 ' X7 F- d6 t) K5 H' p% q
            dmStoryEditor->qryExec->Edit();
% Q* L; u. [+ \# c            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
: R0 J. M/ p4 K" ]1 A" O                                qryExec->FieldByName("script"),bmReadWrite); . |3 ~4 d1 P& n4 j0 P
            pScriptStream->Write(NewsScript.m_pScript,  
& ~$ h: X! h! t( y( S! W                                        NewsScript.m_lScriptRealSize);
. X# W) r& L- g; [1 B( z* @8 h            dmStoryEditor->qryExec-&gtost();
6 ]7 D! [! ]% \0 E            dmStoryEditor->qryExec->RequestLive=false;
0 H# O1 i' q6 d0 y# ^6 s4 K3 K            delete pScriptStream;
/ l: J3 M3 U0 C- z# ]  Z       }
$ k0 Y" T6 J* o* N  x+ w       GlobalUnlock(NewsScript.m_hScript); 2 ?! M+ N4 o/ j6 B4 o
       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-8-9 01:38 , Processed in 0.349863 second(s), 51 queries .

回顶部