您的位置:首页 > 编程语言 > C#

[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("未曾对应的数据种类"));

            }

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: