QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

' k0 w; [4 O  R4 i1 h8 S        
, {# W8 u, X, k  x6 `/ T/ |4 x对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
* x0 b. D* ?5 D+ i' m0 QBLOB字段的读取:
1 i' Q* T0 I0 r9 x8 h TBlobSTream* TemplateStream; ' L$ M0 d4 D1 q2 t) R
char* TempPlatePtr;              
) W# R5 Z- |6 b5 G9 s" l: n + s- f% P! |2 R" T" n
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName
8 N1 [- C: j3 _, `! i5 q; x5 U                        ("SearchTem"),bmReadWrite);
5 J9 ~( C/ @; P( i9 | TemplatePtr= new char[TemplateStream->Size]; & f$ e1 w" y3 b1 v
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
0 P7 R- H) `5 {& {' c
3 Y6 g7 }" T" Q1 n( nBLOB字段的写入:
( W2 e/ ?- k$ S& z TBlobSTream* TemplateStream; ! O; R5 h& v  D& |( b* N: o  a+ R
char* TempPlatePtr;              
- k0 t9 p1 F+ }5 L; r3 K: V 2 d/ n/ C* r; b2 P7 t
TemplateStream=new   TBlobStream((TBlobField*)WebQuery->FieldByName 9 g( A& G9 D) R9 G* v
                        ("SearchTem"),bmReadWrite);
$ v2 O3 T8 ?" W6 Y# c/ D8 k0 v" _ TemplatePtr= new char[TemplateStream->Size];
2 j& u' M3 l  Y% D, m TemplateStream->Write(TemplatePtr, TemplateStream->Size); + W* B3 D! A# X0 F' x+ C

0 u3 Q* b7 c$ p, e$ m________________________________________________________________ ' `0 K) l( v! K3 K! g' Y
补充: # Q/ v- T. I7 z  N
获得字段的大小用函数datalength
5 p  M+ T2 I$ ?4 N8 e' c
: s% t8 y" g' m3 v1 mSQL Server端要作一点设置:
5 _3 Y3 m* c" I: V. ]  z( S+ EBy default, WRITETEXT is a nonlogged operation. This means that  
3 b/ z2 P+ J4 S$ g6 _$ J- _text or image data is not logged when it is written into the database.  
) s* Y3 O' V& N# l# @To use WRITETEXT in its default, nonlogged state,  
; E* r% I/ N' Y6 ]7 U- J6 z//注意!! . K; n  H- Z4 M2 E: V# a5 `3 i! ~
the system administrator must use the sp_dboption system stored  ( Y) q7 V4 T+ n" b6 J7 X- z0 o
procedure to set select into/bulkcopy,  
  m' t5 _1 L! b// 8 v/ T% w* C$ U6 W7 Q0 M
which allows nonlogged data to be inserted.
! c9 @" S, V0 ~& |8 @* K9 n1 k ! U# s4 R- @! \- g  H
做了试验,直接写SQL语句好象不行. * Z& G- W) ~8 r0 Q6 E- N( C
____________________________________________________________________
: c7 U. n  j5 w% F0 w/ H        一些注意事项和一个例子
7 x3 c! M; X9 j" e, Z1 a! E& Q在写入时: % V9 y  Q( b, r9 p1 F$ R) e- O
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; - L. C4 U6 u. m& i. D" }0 g3 I- c
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; / \2 m" }; h4 H- V# @
使得TTable(TQuery)是可写的.
7 U3 e; t2 [( F* T; ^
6 P  M2 p3 t. R  I; j" `: `下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
: \( C; B2 o% R- z) }script为一个BLOB字段:
4 ]- p/ R3 O% t$ @, y/ O6 W4 X# n   TBlobStream *pScriptStream;
1 f/ _3 a; Q$ e! _* `: V2 ^  //插入一条记录
. d9 C; U3 ~2 Y/ t* r        strSQL1="insert  into  content(file_id,script,key_image) values('"; 5 n1 b) V+ e" w/ P# J" k
        strSQL1=strSQL1+m_szFileID+"',null,null)";
1 i/ Z! Y8 P3 x        dmStoryEditor->qryExec->SQL->Clear();
* I0 Z6 J# `8 k; g        dmStoryEditor->qryExec->SQL->Add(strSQL1); 6 C/ }) K  x; @3 |$ L* ~6 C
        dmStoryEditor->qryExec->ExecSQL(); . p1 k) l) h4 z/ W7 }( a
        dmStoryEditor->qryExec->Close(); ; D) C* q) i+ j2 A# G: Z
  //整理要写入的Blob数据   2 `8 @# y& W$ ?+ o5 U+ X
        LockMemories(NewsScript); ) `$ f. Z8 t8 _5 M
        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum); ! c. j, X: H6 D1 L9 m6 y5 c
        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); 1 L9 m0 k* \: L" X7 e$ W% ^# z
        if(NewsScript.m_pScript!=NULL) ( k( _9 D3 [2 h  ?3 G5 \' s4 \$ [3 B
        {
- {( D5 q$ l* H/ h   //再将刚插入的记录读出来,使该Query与该条记录关联
& Y" A% S. d, Y! k        strSQL1="select  file_id,script  from  content  where  file_id='"+ " C3 m1 c+ t2 l) ]5 ^& ^
                m_szFileID+"'";
/ S; j' i# q( F7 w+ \4 R+ q5 y   //允许该Query写
( L- ^! ~- M2 s- R' K: K            dmStoryEditor->qryExec->RequestLive=true;
0 E! p$ V7 @$ g$ ~            dmStoryEditor->qryExec->SQL->Clear(); 2 F7 x1 F2 P! m- Y
            dmStoryEditor->qryExec->SQL->Add(strSQL1); 6 i' F* {8 O+ A
            dmStoryEditor->qryExec->Open(); 6 a& D# l8 ]7 d! c' t: ~
            dmStoryEditor->qryExec->First(); 0 e6 g; ?% S" V5 s6 f, ~: V
   //将该Query置为可写
( m* I) `* J" R7 V, ~9 k; b            dmStoryEditor->qryExec->Edit(); 9 N$ y$ E0 `7 {
            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor->
2 D7 C. j0 X( f3 U, K  I3 k) I  Q0 \                                qryExec->FieldByName("script"),bmReadWrite); ' m4 {  e, i% v" t$ B; I& _
            pScriptStream->Write(NewsScript.m_pScript,  
6 a$ j  I1 B5 k* l* a                                        NewsScript.m_lScriptRealSize);
/ M1 M. s* ?- D            dmStoryEditor->qryExec-&gtost();
, ^6 o" N5 M( S  \  A7 o2 w            dmStoryEditor->qryExec->RequestLive=false;
  a: e& H( @+ ^1 w9 n2 Y            delete pScriptStream; 2 ^1 x% C5 ~  a- a- e
       }
8 l' N2 p3 q/ \: s& O       GlobalUnlock(NewsScript.m_hScript); 3 q, ]+ y% |1 f/ Y& r
       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-4-20 01:54 , Processed in 0.367489 second(s), 52 queries .

回顶部