QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]9 U7 I& ]( x1 c1 @+ }

' {" f$ I& V9 _" L        
6 B' |5 R. s6 a+ ~6 x对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: ) y' Z" j) f) d) i' ~( x' A: J
BLOB字段的读取: 3 o' D0 S; y/ ?& H5 v) F9 q4 A2 {* ~
TBlobSTream* TemplateStream; * E, D0 r  Q" F" B
char* TempPlatePtr;              8 N3 G1 ^* L9 `1 ^2 t, h

9 y, h$ C2 U+ b9 A+ X TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName 3 D/ q8 J' O* |+ @8 B$ [
                        ("SearchTem"),bmReadWrite);
7 S# V( j4 c. P2 M TemplatePtr= new char[TemplateStream->Size]; ; P/ ]2 L9 B& H6 F
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
* b/ Q7 @5 u/ u' g+ @; O) T8 q * Z# i; A$ @0 f: T* Z8 l3 t
BLOB字段的写入: ( Z/ z7 C% d4 i, X' f
TBlobSTream* TemplateStream; * q( c# H! `. V3 K8 w- ?
char* TempPlatePtr;              & |' W# ?8 ~  Y5 ~# s

1 a1 q1 j, v- Z5 V TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
6 O  ]; |- U- A; f" p0 r* T: G                        ("SearchTem"),bmReadWrite); ' F. M3 Q8 n* D" `% F  _& f& O& ?9 ^) F
TemplatePtr= new char[TemplateStream->Size]; 7 \$ y% Q" R8 B
TemplateStream->Write(TemplatePtr, TemplateStream->Size);
4 G; x+ j8 b/ O5 v' p$ b
& N/ R: ~% a, {________________________________________________________________
- B" r; z. h  i. k补充:
' u( I: Y* O, h! u获得字段的大小用函数datalength ) {, l( G. ]: }; Q
& [) ?! Z: B' t. S0 Y6 v" p
SQL Server端要作一点设置:
! h6 Z3 a: P+ k/ W1 h* D! yBy default, WRITETEXT is a nonlogged operation. This means that  
* |9 S3 H0 B. F6 V2 o' S# V( Ntext or image data is not logged when it is written into the database.  " V9 ]5 `% X8 ~2 {9 g
To use WRITETEXT in its default, nonlogged state,  1 v+ b! Z7 E, D! r; B; A2 X' P1 i3 k
//注意!!
3 ~1 f" C6 M7 Z7 vthe system administrator must use the sp_dboption system stored  8 J; c! C4 U* o; I7 Y6 J
procedure to set select into/bulkcopy,  
, d' b# y+ x. e! R//
8 M% h3 d7 e' a5 ~- twhich allows nonlogged data to be inserted. - B5 O; S* r2 ^% X2 D

. i8 w( O- ^7 w  S  d. f0 b做了试验,直接写SQL语句好象不行.
3 S/ s( M7 ?6 U$ S& c( ?, L9 I____________________________________________________________________ 9 `" V( c5 j; `1 B1 U
        一些注意事项和一个例子 5 d; j0 d% C/ n* O/ X) R& \
在写入时:
( R1 G3 i/ \! F# f(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; ; o9 Q! [' {3 ?6 h; Q0 V( C* O
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; 6 S! Z% b+ h  H) q+ U1 x
使得TTable(TQuery)是可写的.   v& {" S0 E! j3 ?. i: R

( I4 E7 z4 m9 n) ?6 [! h下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
: N8 ~: X' }8 t5 W) t( M8 s7 kscript为一个BLOB字段: 9 J# O4 V/ t8 P% o% n6 g3 V
   TBlobStream *pScriptStream; . P2 J* g2 Z0 I  R. h4 ^6 l, K) B
  //插入一条记录
8 ]6 U# `7 z& h0 Y/ U+ F        strSQL1="insert  into  content(file_id,script,key_image) values('";
! }4 G+ F. R' f+ x  [        strSQL1=strSQL1+m_szFileID+"',null,null)";
8 T! p7 [( a7 e        dmStoryEditor->qryExec->SQL->Clear();
/ f5 ]3 I$ r& N: F+ r        dmStoryEditor->qryExec->SQL->Add(strSQL1);   o) c6 i3 o/ E: _! S  \5 U* ~+ m4 z
        dmStoryEditor->qryExec->ExecSQL(); 9 J. ^7 d7 t3 t- h: E" B' H
        dmStoryEditor->qryExec->Close();
4 }0 A( P( o2 e3 P& R. a: Q  //整理要写入的Blob数据   3 X+ v4 V6 d' N, X4 Q
        LockMemories(NewsScript); 4 y( y# v9 s3 H; p! w( @3 H
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
; d3 S1 V: f5 ?        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
" ~1 a1 a9 b7 z& D        if(NewsScript.m_pScript!=NULL)
4 T* u% W; u8 Y        {
* T" e* p5 K2 e5 n! V" Y3 Q* T   //再将刚插入的记录读出来,使该Query与该条记录关联
2 I' F. V$ x9 x( p0 {, T        strSQL1="select  file_id,script  from  content  where  file_id='"+
6 {7 a0 B# f1 B                m_szFileID+"'";
. \% A) M! R0 o7 J   //允许该Query写
6 d' n. W' y8 U- e8 \1 C0 D            dmStoryEditor->qryExec->RequestLive=true;
% s( U# k) S4 D; h$ d/ I8 ]+ ]            dmStoryEditor->qryExec->SQL->Clear();
& k1 a3 v1 M0 Y/ f% \- C# o            dmStoryEditor->qryExec->SQL->Add(strSQL1);
5 j- ?3 T$ C6 N# m6 f9 @            dmStoryEditor->qryExec->Open();
# a$ B( \& G4 z" @, @5 o* Y. E6 j) a& ~            dmStoryEditor->qryExec->First();
( Q, d; d. h; [6 x; \8 W   //将该Query置为可写
7 \. @. Q6 R% `! l5 a7 L1 k            dmStoryEditor->qryExec->Edit();
, _( {9 N$ n' I2 W' j            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
) M2 J$ ~- D! _; n9 z5 \, I                                qryExec->FieldByName("script"),bmReadWrite);
0 n; a( Z" a6 I- V6 P: Z- B, @            pScriptStream->Write(NewsScript.m_pScript,  
+ K6 r6 |& [1 O% O5 [9 P7 q* g& r4 _                                        NewsScript.m_lScriptRealSize); : i9 Q6 S# ~4 m' t4 h
            dmStoryEditor->qryExec-&gtost();
7 B' G  S! ~. {  j% [            dmStoryEditor->qryExec->RequestLive=false; 2 E, o' Z1 \4 s; G
            delete pScriptStream; , b8 Y4 T! z1 a, W. d* I& k
       } ; y, w  b- e: F4 Q6 e2 W% o9 ^
       GlobalUnlock(NewsScript.m_hScript);
4 J3 U, i- s$ R" y/ p       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-6-12 10:22 , Processed in 0.413554 second(s), 51 queries .

回顶部