SQL server字段名中有数据类型为text时,adoquery->fieldbyname->asstring取不到全部值

SQL server字段名中有数据类型为text时,adoquery->fieldbyname->asstring取不到全部值。
提供两种方法:
方法1.
首先将text数据类型转换为varchar(8000),形成新的字段名,在通过新的字段得到全部值。具体查询语句参考:
select top 1 *,CAST(cont as varchar(8000)) as cont_varchar from 表名;
注:
(1)top 1 :取出第一行;
(2)cast(cont as varchar(8000)) as cont_varchar
将cont这个text类型的字段转换为新的字段cont_varchar,如果不更改字段名,可能查询结果还是得不到全部值;
注意:这里sqlserver版本>=2500(9.0以上)的,8000可以改为MAX;
<=2000(8.0一下)的,最大为8000,数据长度超过该值会报错。
(3)从表中查询所有字段,”*”后要加逗号“,”,否则查询语句报错。

方法2.
通过空间TDBMemo方式来直接获得text字段的值。
adoconnect设置数据库连接;dbGo
adoquery 查询数据库; dbGo
datasource从adoquery中获得数据;data access
dbmemo 通过datasource得到数据。data control
具体参考:
`
String SQLStr = “”; //sql语句
TADOConnection adoconn;
TADOQuery adoquery;
TDataSource datasource;
TDBMemo memo;

adoconn->connectionString = “”; //连接字符串,这里不多说。
adoconn->LoginPrompt = false; //登陆提示:不提示
adoconn->ConnectionTimeout = 40;//这里视网络状况而定
adoconn->Connected = true; //连接数据库

adoquery->Connection = adoconn;
adoquery->SQL->Clear();
adoquery->SQL->Add(SQLStr);
adoquery->Prepared = true;
adoquery->Active = true; //激活查询语句

datasource->DataSet = adoquery;
datasource->Enabled = true;
demo->DataField = “cont”;
String tmp = memo->Text;
图片为本人实际操作时,仅供参考
`

综述:
方法1已测试成功,方法2是以为大神帮忙,我自己写的,思路没有问题,不过最终结果没有实现,如果大家看出其中的错误,请及时告知!

头一次把自己刚学到的东西总结分享,对大家有用最好,没用就当练手吧!呵呵。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值