DataSetToAccess

我们在做SmartClent应用时,总会用到服务器数据到本机数据的读写,为了简化应用,偶就写了个DataSet更新到ACCESS数据库的类,大家拍拍。
  1/***************************************
  2*版权所有DvStudioDevGroups
  3*创建人:David DvSoft@126.com
  4*时间:  2006-08-20
  5*版本:  v0.01
  6****************************************/

  7using System;
  8using System.Data;
  9using System.Data.OleDb;
 10namespace DvStudioSmartPOS
 11{
 12    /// <summary>
 13    /// DataSetToAccess 的摘要说明。
 14    /// 从传入的DataSet中将数据更新的Access的表中;
 15    /// </summary>

 16    public class DataSetToAccess
 17    {
 18        private string ErrInfo = "";
 19        public string ErrString
 20        {
 21            get
 22            {
 23                return ErrInfo;
 24            }

 25        }

 26        public DataSetToAccess()
 27        {
 28            //
 29            // TODO: 在此处添加构造函数逻辑
 30            //
 31        }

 32        /// <summary>
 33        /// 返回 连接字符串
 34        /// </summary>
 35        /// <returns>返回 连接字符串</returns>

 36        private string GetConnectStr()
 37        {
 38            DvStudioSmartPOS.GetConnectString ConnectStringObject = new GetConnectString();
 39            return ConnectStringObject.GetConnectStr();
 40        }

 41        /// <summary>
 42        /// 返回一个表中的所有列名称的集合
 43        /// </summary>
 44        /// <param name="TableName">要查询的表名</param>
 45        /// <param name="ConnectObject">数据库连接对象</param>
 46        /// <returns>要查询的表中的所有列名称的集合</returns>

 47        private string BuildingColumnsStr(string TableName,System.Data.OleDb.OleDbConnection ConnectObject)
 48        {
 49            System.Data.DataSet NewDataSet = new DataSet();
 50            System.Data.OleDb.OleDbDataAdapter UpdateDataAdapter = new OleDbDataAdapter("Select * From " + TableName + " Where 1=2",ConnectObject);
 51            UpdateDataAdapter.Fill(NewDataSet);
 52            string ReturnStr = "";
 53            for(int i = 0;i < NewDataSet.Tables[0].Columns.Count;i++)
 54            {
 55                string ColumnsNameStr = NewDataSet.Tables[0].Columns[i].ColumnName;
 56                ReturnStr = ReturnStr + ColumnsNameStr.Trim() + ",";
 57            }

 58            ReturnStr = ReturnStr.Remove(ReturnStr.Length-1,1);
 59            return ReturnStr;
 60        }

 61        /// <summary>
 62        /// 将数据更新到Access表中
 63        /// </summary>
 64        /// <param name="TempDataSet">1、传入的DataSet对象</param>
 65        /// <param name="TableName">2、要更新的表名</param>
 66        /// <returns>返回布尔型变量,是否更新成功</returns>

 67        public bool DataSetUpdaerToAccess(System.Data.DataSet TempDataSet,string TableName)
 68        {
 69            System.Data.OleDb.OleDbConnection ConnectObject = new OleDbConnection(GetConnectStr());
 70            System.Data.OleDb.OleDbDataAdapter UpdateDataAdapter = new OleDbDataAdapter("Select " + BuildingColumnsStr(TableName,ConnectObject) +" From " + TableName + " Where 1=2",ConnectObject);
 71            System.Data.OleDb.OleDbCommandBuilder CMDBuilder = new OleDbCommandBuilder(UpdateDataAdapter);
 72            UpdateDataAdapter.InsertCommand = CMDBuilder.GetInsertCommand();
 73            UpdateDataAdapter.DeleteCommand = CMDBuilder.GetDeleteCommand();
 74            UpdateDataAdapter.UpdateCommand = CMDBuilder.GetUpdateCommand();
 75            if(TempDataSet.Tables[TableName].Rows.Count < 1)
 76            {
 77                return true;
 78            }

 79            else
 80            {
 81                try
 82                {
 83                    TempDataSet.Tables[TableName].Columns.Remove("总页数");
 84                    TempDataSet.Tables[TableName].Columns.Remove("总行数");
 85                    TempDataSet.Tables[TableName].Columns.Remove("总金额");
 86                }

 87                catch(Exception e)
 88                {
 89                    ErrInfo = e.ToString();
 90                }

 91                System.Data.DataSet NewDataSet = new DataSet();
 92                UpdateDataAdapter.Fill(NewDataSet);
 93                NewDataSet.Tables[0].TableName = TableName;
 94                for(int i = 0;i < TempDataSet.Tables[TableName].Rows.Count;i++)
 95                {
 96                    DataRow AddRow =  NewDataSet.Tables[TableName].NewRow();
 97                    for(int j = 0;j < NewDataSet.Tables[TableName].Columns.Count;j++)
 98                    {
 99                        string ColumnsNameStr = NewDataSet.Tables[TableName].Columns[j].ColumnName;
100                        if(TempDataSet.Tables[TableName].Rows[i][ColumnsNameStr].ToString().Trim().Length > 0)
101                        {
102                            AddRow[ColumnsNameStr] = TempDataSet.Tables[TableName].Rows[i][ColumnsNameStr];
103                        }

104                    }

105                    NewDataSet.Tables[TableName].Rows.Add(AddRow);
106                }

107                try
108                {
109                    ConnectObject.Open();
110                }

111                catch(Exception e)
112                {
113                    ErrInfo = e.ToString();
114                }

115                try
116                {
117                    UpdateDataAdapter.Update(NewDataSet.Tables[TableName]);
118                }

119                catch(Exception e)
120                {
121                    ErrInfo = e.ToString();
122                    ConnectObject.Close();
123                    return false;
124                }

125                ConnectObject.Close();
126                return true;
127            }

128        }

129    }

130}

131
功能还不太完善,大家多拍砖;

posted on 2006-08-26 07:07  sdav  阅读(2030)  评论(3)    收藏  举报

导航