QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]# j& ~8 T2 v  F7 E% B

& P) I5 h3 ^; F6 y. Y        
3 x9 U- e, x# N对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
6 e: @& F4 p6 q4 M- iBLOB字段的读取:
3 K) C3 B) ?% U9 O* t# ^ TBlobSTream* TemplateStream; + g- k; n1 s! ?9 L4 s( b( t3 n
char* TempPlatePtr;              3 q" k; u4 {- V/ t/ G6 P7 }

( A/ g, Q0 Q4 |" ?( Z6 Y TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
$ I: c3 F( B# l                        ("SearchTem"),bmReadWrite); + Y8 ~  `3 X: u
TemplatePtr= new char[TemplateStream->Size]; $ m' D* X$ m/ U- _4 N
TemplateStream->Read(TemplatePtr, TemplateStream->Size); * N: x4 Q, X9 ~/ W4 d8 M
  s9 E: K- \! J8 n
BLOB字段的写入: 2 t+ X6 C4 A! K& k/ ^: L
TBlobSTream* TemplateStream; 0 _7 A+ v# f7 L' N. ?! f
char* TempPlatePtr;              
$ I  Y7 g, i+ N' f' p $ U) Q1 s. P$ L# B4 |
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
- l  u" U/ l0 c+ y3 j  B5 X                        ("SearchTem"),bmReadWrite); 9 J  q4 D/ D5 P# `' f
TemplatePtr= new char[TemplateStream->Size]; & [9 e! \2 {) V4 \% B5 g
TemplateStream->Write(TemplatePtr, TemplateStream->Size);
, t8 W. L1 \8 w0 c4 `8 ]& r7 [ ) N+ S7 L5 V+ K, M: t3 H
________________________________________________________________ 5 s1 ^  w. X& M6 J4 O4 `
补充: $ N0 w& \% T9 c7 P' x
获得字段的大小用函数datalength
% B/ ~; Q: r( _/ |1 g4 t2 x  L% L2 r " B# }) J% Q2 a/ N% S
SQL Server端要作一点设置:
& r& j0 s+ _' y: u: i. bBy default, WRITETEXT is a nonlogged operation. This means that  
1 K" v& f3 H3 P$ _, p8 ^4 ptext or image data is not logged when it is written into the database.  
4 C5 P9 |: F; C$ w+ t" DTo use WRITETEXT in its default, nonlogged state,  
$ N- b- s" a2 s# v9 ]! E2 w//注意!! % d: _$ ]+ L8 ?* U+ r
the system administrator must use the sp_dboption system stored  5 ~0 L! e1 f9 C& L  O* [, C( `8 h
procedure to set select into/bulkcopy,  
( V, X& D* y8 [6 [//
0 s9 n( Q7 T1 [) b8 ^" Wwhich allows nonlogged data to be inserted.
; P, T( Q; {" @ ' @  `& ?4 @; ?: Z! o# V5 g4 s) p
做了试验,直接写SQL语句好象不行. 8 X. I. ]6 Q% y( Y& j$ @
____________________________________________________________________ , k& I5 {/ F4 `2 y4 c  l! c3 p
        一些注意事项和一个例子 ' z' P3 [% a( c2 X8 K) P
在写入时: 2 h1 z/ m6 g/ l! g3 S
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; 2 K" c# c; Z% n
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; 5 I0 ]! O) ^: Z
使得TTable(TQuery)是可写的.
+ w+ ~0 u7 V6 t7 g& B+ D1 N6 c ( Y9 r7 n9 H& ]/ e) c2 U0 `
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
: R+ B6 j; r# N& i8 |! k% Escript为一个BLOB字段:
& K" o3 w3 N5 t1 B& _% \1 W4 N   TBlobStream *pScriptStream; $ E, c( s2 P6 Y3 P' Z% }
  //插入一条记录 4 O0 L6 c2 l5 G3 H) X% l8 E. x
        strSQL1="insert  into  content(file_id,script,key_image) values('";
% p/ h; \! f$ C* I0 d" J        strSQL1=strSQL1+m_szFileID+"',null,null)"; . y4 ^  `2 _! C: O# M+ Q: F! d
        dmStoryEditor->qryExec->SQL->Clear();
; }" ]2 @1 b9 f) M6 _        dmStoryEditor->qryExec->SQL->Add(strSQL1);
7 M$ Z, _! b( R& h8 W        dmStoryEditor->qryExec->ExecSQL();
7 I0 n2 j1 c$ o5 T2 i4 e        dmStoryEditor->qryExec->Close();
# a' M9 |3 e. s, i$ n% E6 l  //整理要写入的Blob数据   , d; Y. h1 w# l
        LockMemories(NewsScript);
& O4 K' o* d5 C+ H; d6 B        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum); % g6 c- G5 \* x+ t  E* a# @
        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); ) o, F: o' G# z. l
        if(NewsScript.m_pScript!=NULL)
0 D2 Z% c1 r+ _6 @: G* n: K        { 7 k' A' }0 C9 H+ K" W% j# _
   //再将刚插入的记录读出来,使该Query与该条记录关联 & }5 e7 {. A  H2 M  L( r7 a" N
        strSQL1="select  file_id,script  from  content  where  file_id='"+ 8 S3 T% _* V2 |: k; T
                m_szFileID+"'"; 9 E; {3 T& P) _' r, `" R. f
   //允许该Query写 0 X' {) v) j: E3 {1 p
            dmStoryEditor->qryExec->RequestLive=true;   ^0 D5 R2 b& A, v, W0 n
            dmStoryEditor->qryExec->SQL->Clear();
, k; E2 ^8 v7 z7 e            dmStoryEditor->qryExec->SQL->Add(strSQL1);
1 v; [8 z0 {$ Q3 P( m            dmStoryEditor->qryExec->Open();
7 ^; y& j& a7 L            dmStoryEditor->qryExec->First(); - {1 M, M2 q/ T/ f
   //将该Query置为可写 2 |/ Q5 w& O; @# N0 [
            dmStoryEditor->qryExec->Edit(); # R2 z& p1 g- P# L) R
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
/ T3 D* K3 F' e, x8 R2 X                                qryExec->FieldByName("script"),bmReadWrite);
" x1 f8 v, \; H4 d6 A, Z6 g( A" Z            pScriptStream->Write(NewsScript.m_pScript,  
2 l, t# @' z) i1 u# x; d                                        NewsScript.m_lScriptRealSize);
# u9 O7 a  L& z. ^, E            dmStoryEditor->qryExec-&gtost();
& |" o( w6 F, P) ^1 p            dmStoryEditor->qryExec->RequestLive=false; 1 Y6 P' e- }; L1 E
            delete pScriptStream; $ {. z3 R/ I! T3 B& r, P9 _
       } . D8 v' V( k2 q: S' }
       GlobalUnlock(NewsScript.m_hScript);
/ O/ @' |% J2 F/ _3 b$ u0 a1 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, 2026-9-2 01:55 , Processed in 0.561542 second(s), 52 queries .

回顶部