[C#]ado.net 转 ado
2012-11-19 19:47
218 查看
引入c:\program files\common files\system\ado\msado15.dll包
using ADODB;
/// <summary>
/// 将DataTable对象转换为Recordeset对象
/// </summary>
/// <param name="table">DataTable对象</param>
/// <returns>转换后获得的Recordeset对象</returns>
public static Recordset ConvertDataTableToRecordset(DataTable table)
{
Recordset rs = new RecordsetClass();
//DataRow dr;
foreach (DataColumn dc in table.Columns)
{
rs.Fields.Append(dc.ColumnName, GetDataType(dc.DataType), -1, FieldAttributeEnum.adFldIsNullable,null);
}
rs.Open(Missing.Value, Missing.Value, CursorTypeEnum.adOpenUnspecified, LockTypeEnum.adLockUnspecified, -1);
foreach (DataRow dr in table.Rows)
{
rs.AddNew(Missing.Value, Missing.Value); object o;
for (int i = 0; i < table.Columns.Count; i++)
{
rs.Fields[i].Value = dr[i];
o = rs.Fields[i].Value;
}
}
return rs;
}
/// <summary>
/// 将ADO.NET的数据种类转换为ADO的数据种类
/// </summary>
/// <param name="dataType">ADO.NET的数据种类</param>
/// <returns>ADO的数据种类</returns>
public static DataTypeEnum GetDataType(Type dataType)
{
switch (dataType.ToString())
{
case "System.Boolean": return DataTypeEnum.adBoolean;
case "System.Byte": return DataTypeEnum.adUnsignedTinyInt;
case "System.Char": return DataTypeEnum.adChar;
case "System.DateTime": return DataTypeEnum.adDate;
case "System.Decimal": return DataTypeEnum.adDecimal;
case "System.Double": return DataTypeEnum.adDouble;
case "System.Int16": return DataTypeEnum.adSmallInt;
case "System.Int32": return DataTypeEnum.adInteger;
case "System.Int64": return DataTypeEnum.adBigInt;
case "System.SByte": return DataTypeEnum.adTinyInt;
case "System.Single": return DataTypeEnum.adSingle;
case "System.String": return DataTypeEnum.adVarChar;
case "System.UInt16": return DataTypeEnum.adUnsignedSmallInt;
case "System.UInt32": return DataTypeEnum.adUnsignedInt;
case "System.UInt64": return DataTypeEnum.adUnsignedBigInt;
default: throw (new Exception("未曾对应的数据种类"));
}
}
using ADODB;
/// <summary>
/// 将DataTable对象转换为Recordeset对象
/// </summary>
/// <param name="table">DataTable对象</param>
/// <returns>转换后获得的Recordeset对象</returns>
public static Recordset ConvertDataTableToRecordset(DataTable table)
{
Recordset rs = new RecordsetClass();
//DataRow dr;
foreach (DataColumn dc in table.Columns)
{
rs.Fields.Append(dc.ColumnName, GetDataType(dc.DataType), -1, FieldAttributeEnum.adFldIsNullable,null);
}
rs.Open(Missing.Value, Missing.Value, CursorTypeEnum.adOpenUnspecified, LockTypeEnum.adLockUnspecified, -1);
foreach (DataRow dr in table.Rows)
{
rs.AddNew(Missing.Value, Missing.Value); object o;
for (int i = 0; i < table.Columns.Count; i++)
{
rs.Fields[i].Value = dr[i];
o = rs.Fields[i].Value;
}
}
return rs;
}
/// <summary>
/// 将ADO.NET的数据种类转换为ADO的数据种类
/// </summary>
/// <param name="dataType">ADO.NET的数据种类</param>
/// <returns>ADO的数据种类</returns>
public static DataTypeEnum GetDataType(Type dataType)
{
switch (dataType.ToString())
{
case "System.Boolean": return DataTypeEnum.adBoolean;
case "System.Byte": return DataTypeEnum.adUnsignedTinyInt;
case "System.Char": return DataTypeEnum.adChar;
case "System.DateTime": return DataTypeEnum.adDate;
case "System.Decimal": return DataTypeEnum.adDecimal;
case "System.Double": return DataTypeEnum.adDouble;
case "System.Int16": return DataTypeEnum.adSmallInt;
case "System.Int32": return DataTypeEnum.adInteger;
case "System.Int64": return DataTypeEnum.adBigInt;
case "System.SByte": return DataTypeEnum.adTinyInt;
case "System.Single": return DataTypeEnum.adSingle;
case "System.String": return DataTypeEnum.adVarChar;
case "System.UInt16": return DataTypeEnum.adUnsignedSmallInt;
case "System.UInt32": return DataTypeEnum.adUnsignedInt;
case "System.UInt64": return DataTypeEnum.adUnsignedBigInt;
default: throw (new Exception("未曾对应的数据种类"));
}
}
相关文章推荐
- C# ADO.net
- c#ADO.NET / 用 SqlBulkCopy 类,海量批写入数据库
- C#操作数据库,DataSet,DataGridView,更新数据库 [一] - ADO.NET入门之中
- C#使用ADO.NET访问数据库(一)
- C#用ado.net访问EXCEL的常见问题及解决方法
- C#中一道关于ADO.NET的基础练习题
- C#使用Ado.Net读写数据库
- ADO.NET操作数据代码汇总(C#)
- C#三十 Ado.net和XML
- C# ado.net 使用 row_number over() 简单的分页示例
- c#利用ado.net进行数据库开发的基本步骤
- ADO.NET:C#/SQL Server
- (13)C#ADO.NET 一些小细节
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- 【017】◀▶ C#学习(九) - ADO.NET
- C#进阶ADO.NET基础一 基本概念、数据库连接操作基础
- C#命名规范,控件、数据类型、ADO.NET等
- C#集合篇,在业务背景下(***产品升级管理):依赖注入,变量声明,三元表达式,常用字符串相关操作方法,ADO.NET,EF机制,T4模板自动生成实体类,ref变量巧用,属性实际运用,唯一性验证
- 如何使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
- c#开发之四---ado.net