ADO的RecordSet转换为DataTable
//下面这个方法是将recordset转换为datatable,其实也没啥技术含量,供大家参考.
//将datatable转换为recordset的意义是相同的,因为它没有在项目中使用,所以我没有编写它
privatestaticdatatableconvertrecordsettodatatable(recordsetrecordset){
datatablet=newdatatable();如果(!recordset.bof&&!f){
datacolumndc;
datarowdr=null;
pty;adodb.fieldfield;typetype=null;objectvalue;
记录集。首先移动();
//架构
//nametypevalue
for(inti=0;i<unt;i++){
字段=记录集。字段[i];
columnname=field.name;//wrow();pe){
casedatatypeenum。Adarray://添加逻辑或和其他类型,以指示数据是哪种类型的安全数组
//type=typeof(bool);
Thrownewexception(\unknown type\break;
casedatatypeenum.adbstr://以空结尾的字符串(unicode)
type=typeof(字符串);打破
casedatatypeenum.adbigint://8字节带符号的整数
type=typeof(int64);打破
casedatatypeenum.adbinary://二进制值//type=typeof(bool);
Thrownewexception(\unknown type\break;
casedatatypeenum.adboolean://布尔型值type=typeof(bool);break;
casedatatypeenum。adchapter://type=typeof(布尔);
thrownewexception(\未知类型\break;
casedatatypeenum。Adchar://string value type=typeof(char);打破
casedatatypeenum.adcurrency://货币值,带符号整型值
类型=类型(十进制);打破
casedatatypeenum.addbdate://日期值type=typeof(datetime);break;
casedatatypeenum。Addbtime://time value type=typeof(datetime);打破
casedatatypeenum.addbtimestamp://时间戳(yyyymmddhhmmss加10亿分之一的小数)
type=typeof(日期时间);打破
casedatatypeenum.addate://日期按双精度型数值来保存,数字全部表示从1899年12月30开始的日期数.小数部分是一天当中的片段时间.
type=typeof(日期时间);打破
casedatatypeenum.addecimal://具有固定精度和范围的精确数字值
类型=类型(十进制);打破
casedatatypeenum.addouble://双精度浮点值type=typeof(double);break;
casedatatypeenum。Adempty://unspecified value//type=typeof(bool);
thrownewexception(\未知类型\break;
casedatatypeenum。aderror://32-误码//type=typeof(bool);
thrownewexception(\未知类型\break;
casedatatypeenum。A.dfiletime:////type=typeof(布尔);
thrownewexception(\未知类型\break;
casedatatypeenum。Adguid://全局唯一标识符type=typeof(GUID);打破
idispatch接口的指针thrownewexception(\break;
指向IUnknown接口的指针
thrownewexception(\break;
casedatatypeenum。Adinteger://4整数
type=typeof(int);break;
价值
//type=typeof(bool);
thrownewexception(\break;
casedatatypeenum.adlongvarchar://type=typeof(string);break;
casedatatypeenum。Adlongvarwchar://长字符串值
type=typeof(string);break;typeof array
casedatatypeenum。adnumeric://范围的精确数值
type=typeof(long);break;
casedatatypeenum。adpropvariant:
thrownewexception(\break;
casedatatypeenum。adsingle://type=typeof(浮动);
casedatatypeenum.adidispatch://ole对象上未知类型\casedatatypeenum.adiunknown://ole对象上未知类型\字节的带符号casedatatypeenum.ad
longvarbinary://长二进制未知类型\长字符串值以空结尾的具有固定精度和未知类型\单精度浮点值
打破
casedatatypeenum.adsmallint://2字节带符号整型
type=typeof(int16);打破
casedatatypeenum.adtinyint://1字节带符号整型
类型=类型(sbyte);打破
casedatatypeenum.adunsignedbigint://8带符号整型
类型=类型(uint64);打破
符号整型
type=typeof;打破
casedatatypeenum.adunsignedsmallint://2不带符号整型
类型=类型(uint16);打破
不带符号整型
type=typeof(字节);打破
casedatatypeenum.aduserdefined://变量
//type=typeof(bool);
thrownewexception(\break;
casedatatypeenum。公元varbinary://type=typeof(字节[]);
//thrownewexception(\break;
casedatatypeenum。advarchar://type=typeof(布尔);打破
casedatatypeenum.advarnumeric://type=typeof(long);break;
Unicode字符串类型=类型(字符串);打破
字节不casedatatypeenum.adunsignedint://4字节不带字节casedatatypeenum.adunsignedtinyint://1字节用户定义的未知类型\二进制值未知类型\字符串值casedatatypeenum.advarwchar://以空结尾的
casedatatypeenum。Variant://Auto Variant thrownewexception(\unknown type\break;
casedatatypeenum.adwchar://以空结尾的unicode字符串
type=typeof(字符串);打破默认值:break;}
value=field.value;
//dr[field.name]=值;
dc=newdatacolumn(columnname,type);t.columns.add(dc);//t.rows.add(dr);}
//填写表格
vefirst();while(!f){
wrow();
for(inti=0;i<unt;i++){
值=记录集。字段[i]。价值dr[recordset.fields[i]。名称]=value;}
t.rows.add(dr);
记录集。movenext();}
returnt;}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论