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小时内删除。