QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]: U2 X% `9 I5 ]

% \, Q4 G- Y+ N$ Z( U+ @9 e" z4 a) b        / U# @( ~" g9 y7 G: v5 e: W& W; j
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
5 E) x0 N- @- p% y$ `BLOB字段的读取: 3 [. j) f, S# x' X
TBlobSTream* TemplateStream; 1 `# @* k; W) t2 a; u
char* TempPlatePtr;              
" a7 @# D( P+ P1 a- V
' g6 e9 z3 y/ P' p4 \3 B, K TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName 4 v0 a6 |2 k9 k0 R& B" `/ A$ p
                        ("SearchTem"),bmReadWrite);
( U2 n  C2 @5 x# P7 v TemplatePtr= new char[TemplateStream->Size];
5 d" Z4 n+ Y6 s2 P7 k  m: o# u TemplateStream->Read(TemplatePtr, TemplateStream->Size);
9 ]8 s! S* M: z  ]% V& f. U
1 a% I* j$ s% w8 @BLOB字段的写入: ' G4 d$ H; j' z2 @$ \3 }
TBlobSTream* TemplateStream; % s, c8 `9 n! s4 j
char* TempPlatePtr;              7 O5 n6 O( y& G% B% b: b+ x( c5 }
1 a0 R9 A" K# u# L
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
) d$ x5 w1 \3 W$ P9 A                        ("SearchTem"),bmReadWrite); 2 g" Y5 o1 c$ y) i9 P
TemplatePtr= new char[TemplateStream->Size];
) a# x" n8 V1 B5 J! G TemplateStream->Write(TemplatePtr, TemplateStream->Size);
% q# w- y- f6 m- S& v
1 i* Y+ x$ ^( E- {, }" S8 e8 I, m- h  ?________________________________________________________________   d( ^- z0 V2 f. a9 R+ z
补充: 7 R: {; N* a% {  d9 C$ t) r- d
获得字段的大小用函数datalength 3 O) F+ d& R9 P* p" H6 w

# J8 @) h' N( \" p# {SQL Server端要作一点设置:
; {& k! r6 X7 C6 g( o  B0 \, |1 l& BBy default, WRITETEXT is a nonlogged operation. This means that  
, T$ ^* Q5 Z+ B4 m% gtext or image data is not logged when it is written into the database.  
2 `9 g! G  K; V3 _4 A2 F$ QTo use WRITETEXT in its default, nonlogged state,  
1 h2 b7 U9 W; c0 s5 x//注意!! ) X, Y& w* [2 D' h! H
the system administrator must use the sp_dboption system stored  / ]( C- x% e8 y" D) t% C- q# Z1 `
procedure to set select into/bulkcopy,  
( N" S( S' X* |% ]- y9 G( a( W0 }// $ E9 O" E, e2 l" Q. j& ?
which allows nonlogged data to be inserted.
/ E5 H7 f  H3 x# @9 T( m# y2 o ; @8 j- I& g- T+ W
做了试验,直接写SQL语句好象不行. ! C7 r! n8 z" i+ s
____________________________________________________________________ 4 ?) a6 z! p3 C) _1 U0 K
        一些注意事项和一个例子
8 q+ j6 c. @" H在写入时:
2 A* x- e* t- J; [* l$ F# q% J(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
: x* i. s3 e( o) v(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
+ L/ E; {) l# c% L. ^) f使得TTable(TQuery)是可写的.
& M( d3 [# g9 j: l  D% D 1 {5 I6 F# o8 R; O- B, K
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
; K3 ]$ V( i* O: j( cscript为一个BLOB字段: + a( F% m+ ?: H# d2 _& C
   TBlobStream *pScriptStream; # H- F% S' N1 I7 G$ }3 u, {
  //插入一条记录
  g. I( g* V# K1 Q& Q- L        strSQL1="insert  into  content(file_id,script,key_image) values('"; 6 \, r3 f6 I' [* \" \. [0 \$ b
        strSQL1=strSQL1+m_szFileID+"',null,null)"; 0 a% \4 @* {0 L0 f+ d2 @, |
        dmStoryEditor->qryExec->SQL->Clear(); ' l# }1 @" _3 o2 Z5 J  U
        dmStoryEditor->qryExec->SQL->Add(strSQL1);
" ~- c5 p* c  B; {8 u! H        dmStoryEditor->qryExec->ExecSQL();
" @; k8 ?& T% y8 E7 e        dmStoryEditor->qryExec->Close(); # Q; W4 G4 _& }1 r7 N4 n# D7 v8 b  o
  //整理要写入的Blob数据   
$ |8 E3 I5 X# ]        LockMemories(NewsScript);
$ O$ e, Q, g1 `7 Y6 |1 P7 |8 |2 Q        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
: b6 R: m+ |, W        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
- L3 v; R5 M# \- Z; [4 s        if(NewsScript.m_pScript!=NULL) 6 h; Q) n. X, G8 `. N+ g, W
        {
) T( C" U. I! [7 m" J* r   //再将刚插入的记录读出来,使该Query与该条记录关联
2 \0 y+ g+ l% Z4 Y        strSQL1="select  file_id,script  from  content  where  file_id='"+ ( d  u! V6 P( X' u/ i
                m_szFileID+"'";
0 B1 \+ A0 ]9 T- d% m   //允许该Query写 - p2 B5 z' y( Z9 a
            dmStoryEditor->qryExec->RequestLive=true;
1 P; W. W! v, a- x) v            dmStoryEditor->qryExec->SQL->Clear(); & M4 ~; y; f  N2 o- p2 n( v
            dmStoryEditor->qryExec->SQL->Add(strSQL1); 4 Q) O5 Q. h& `* Q* H6 q
            dmStoryEditor->qryExec->Open();
/ ?$ s% m# s& @- u2 {, O            dmStoryEditor->qryExec->First();   f  M7 g1 @0 ~7 u0 k' q
   //将该Query置为可写
' ]% t) W/ Q8 W' J6 y' i  n            dmStoryEditor->qryExec->Edit(); # w2 E. L6 I7 E' `8 W
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
7 g' E7 o0 k4 T: l9 m                                qryExec->FieldByName("script"),bmReadWrite);   F) P( Z* t% O9 H/ k
            pScriptStream->Write(NewsScript.m_pScript,  
1 u6 B5 K6 \8 J) a, @/ ~! `  E                                        NewsScript.m_lScriptRealSize); ( I( J" C( p5 I  F3 F' s2 p+ {
            dmStoryEditor->qryExec-&gtost();
$ j+ Z; v+ f) ^            dmStoryEditor->qryExec->RequestLive=false; 5 Q" s# l* c% ^# V; w6 c
            delete pScriptStream; 0 l, i1 b- W1 H2 S3 k. _3 ?
       }
5 f3 J9 s. X" C6 P7 ?       GlobalUnlock(NewsScript.m_hScript);
' {2 {# }9 P4 r/ f  D/ N, p. k       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-5-11 17:31 , Processed in 0.586235 second(s), 51 queries .

回顶部