QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:32 |只看该作者 |正序浏览
|招呼Ta 关注Ta
[摘自 水木清华站]
: L3 `  H0 F; z, b' {0 V 4 T  A# @1 i8 g" D+ R
        
) u: V+ w" D/ w/ {6 [3 e9 s对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:   _2 k+ n7 F' w4 |* g7 ^
BLOB字段的读取: 4 P7 n  L: Y; k) W0 `
TBlobSTream* TemplateStream; + X7 i# o& G5 Q& W6 j. O$ [2 `
char* TempPlatePtr;              9 f! T7 R1 ?8 v! ^7 A" N" c

, H' l8 p9 K  O! c7 {( U% O TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName 1 {7 u0 F% P1 S1 g  M
                        ("SearchTem"),bmReadWrite); , N" d# {( _+ J6 T( J
TemplatePtr= new char[TemplateStream->Size];
* e9 Y( a3 ~9 M TemplateStream->Read(TemplatePtr, TemplateStream->Size);
& V- v' l3 K; q$ J" G1 N: v
7 [; \7 U5 `  U* j0 u2 h7 r5 rBLOB字段的写入:
' ~7 N) l1 \9 a$ L# L/ f TBlobSTream* TemplateStream;
: ^# B6 j9 S* Z0 `: ]4 r' A3 D char* TempPlatePtr;              
+ g9 X+ A' z) p  S9 t: G: Z- L; m # W" G5 s: o& _0 p- ]0 n! f
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName # d, \  U& J' ~6 c( y2 A
                        ("SearchTem"),bmReadWrite);
! ]2 A% v$ Y$ [% {- j( q TemplatePtr= new char[TemplateStream->Size]; . E' U# E# a5 _& m
TemplateStream->Write(TemplatePtr, TemplateStream->Size); 9 N7 v8 `0 s) l7 X

" S. x: a2 m9 o" b6 E________________________________________________________________ 7 s  H9 Z, D7 Q+ ~/ c- q2 l
补充:
: }9 B: e& Y4 p  V  {获得字段的大小用函数datalength # H$ {+ g% j+ \& K

1 H% \0 k' d7 k) ISQL Server端要作一点设置:
: l5 m7 s# Y# KBy default, WRITETEXT is a nonlogged operation. This means that  4 e! i. T0 y' l  t7 y
text or image data is not logged when it is written into the database.  9 A9 M/ `2 T/ P$ E( C/ R; T
To use WRITETEXT in its default, nonlogged state,  : Q- h' f; O3 s
//注意!!
: A& ^. D. Y$ l6 }8 l# hthe system administrator must use the sp_dboption system stored  3 |% G9 c4 Y% s: Q# z
procedure to set select into/bulkcopy,  
0 j' E6 t) r+ ?0 F3 ~//
0 n% K# o- l0 Zwhich allows nonlogged data to be inserted. ! Q" i* X8 t7 q( ?

2 H' Z+ d1 w4 B& Z. v2 J做了试验,直接写SQL语句好象不行.
6 P: c) f1 L9 H9 [% z____________________________________________________________________
" c0 E- z* \! H: V7 s4 M$ v/ ^- k        一些注意事项和一个例子
: z7 N& U2 q% \& {  _, i" O4 n在写入时: + U0 b4 a+ O) `% B# g
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; , Z4 ^* O) Q' W$ _% h. g
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; 1 E* e( y* i5 ]* S% p" N
使得TTable(TQuery)是可写的. 5 X1 f8 a8 E$ n& c- Y0 j2 o
1 E/ m4 d. i# q8 x
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
* q5 z* g  `0 l; r" x5 h# [+ T6 oscript为一个BLOB字段: # m3 }( I+ n8 f) S
   TBlobStream *pScriptStream;
! \' y# d9 X; Q1 r8 Q7 v- S  //插入一条记录
+ v/ S- A6 U" j) }* b- v1 a        strSQL1="insert  into  content(file_id,script,key_image) values('";
" M$ _- F+ N* Q5 d. ?        strSQL1=strSQL1+m_szFileID+"',null,null)";
( t* j3 l% n5 x: {        dmStoryEditor->qryExec->SQL->Clear();
' A: t/ \3 [- N9 \# ]. G        dmStoryEditor->qryExec->SQL->Add(strSQL1);
4 R% O6 {, {7 j" _: v        dmStoryEditor->qryExec->ExecSQL();
' g' y' U: x! i; v1 w0 U6 w( C        dmStoryEditor->qryExec->Close();
( m4 y2 R% `% U* Y  }  //整理要写入的Blob数据   . n6 a9 T" @0 G+ F6 H
        LockMemories(NewsScript);
' I" n9 i$ v$ e, f- W! R8 W        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
6 ~. F  C  ?) m5 R3 d        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
3 D# P# d" [( T3 A7 G        if(NewsScript.m_pScript!=NULL) + J& u/ b. {7 {0 |
        {
3 u: s+ y" G: Q+ z- m1 d  h. a   //再将刚插入的记录读出来,使该Query与该条记录关联
6 @; T% U: @2 }, p        strSQL1="select  file_id,script  from  content  where  file_id='"+
# c( x/ M9 t/ ]8 \7 x0 N, X                m_szFileID+"'"; 8 S/ y) z* ]1 M" @0 e
   //允许该Query写
6 e( @& C" ?1 m- ?+ I6 D& x/ E+ d            dmStoryEditor->qryExec->RequestLive=true; ! m2 ^' {& V/ |: ?8 @, }7 E  O
            dmStoryEditor->qryExec->SQL->Clear(); ; R% b9 @0 E3 @5 I/ d" ~1 L; o
            dmStoryEditor->qryExec->SQL->Add(strSQL1); 1 ]0 T! W, c6 _8 w, L3 X0 s
            dmStoryEditor->qryExec->Open();
. y. Q9 K! L1 S' M            dmStoryEditor->qryExec->First();
- X% K( n5 n. j3 M' I   //将该Query置为可写
1 V* x& Z9 @" F7 E& S; x            dmStoryEditor->qryExec->Edit(); 2 p! x+ _9 j1 n" V5 I/ c
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor-> " P6 b/ a, X# [& n/ d* {$ u# P5 Q" N; N
                                qryExec->FieldByName("script"),bmReadWrite);
4 Q! V( Y; ]9 b3 e$ C            pScriptStream->Write(NewsScript.m_pScript,  
, }9 w1 E' z6 S: M* t+ K                                        NewsScript.m_lScriptRealSize); + R* G+ p& o+ s7 E# H
            dmStoryEditor->qryExec-&gtost(); $ ]3 L8 N$ ?; m8 w0 U/ C; I2 r
            dmStoryEditor->qryExec->RequestLive=false; & e: T* x/ h' k0 T
            delete pScriptStream; 5 e( k# z7 I" X: s
       } . N0 W* @( Y& i' c
       GlobalUnlock(NewsScript.m_hScript); " r: t$ [8 v* e& {8 K! V1 Z
       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-11 10:50 , Processed in 0.400536 second(s), 52 queries .

回顶部