2011年11月17日 星期四

[ASSCESS] OleDb 控制 ASSCESS 新增、修改、刪除 資料

本篇是 簡介 以 OleDb 來連線至 ASSCESS (mdb)檔案 ,並取得資料

範例檔案 按我 下載


//引用
using System.Data.OleDb;

//變數宣告
private static System.Data.OleDb.OleDbConnection oleConn = null;

//連線的方法
        private static void ConnectAsscessDB()
        {
            oleConn =  new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source="+AsscessDB_Full_path+ ";Jet OleDb:DataBase Password=green");
            if (oleConn.State == ConnectionState.Closed)
            {
                oleConn.Open();
            }
        }

//釋放連線
        private static void DisConnectAsscessDB()
        {
            if (oleConn.State == ConnectionState.Open)
            {
                oleConn.Close();
                oleConn.Dispose();
            }
        }

//返回 Datatable 的方法
        public static DataTable GetDateTable(string sqlstr)
        {
            DataTable dt = new DataTable("BOM");
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                ConnectAsscessDB();
                OleDbCommand comm = new OleDbCommand();
                comm.Connection = oleConn;
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(dt);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                DisConnectAsscessDB();
            }
            return dt;
        }

//使用的方法
            DataTable d = new DataTable();
            d.Clear();
            d = GetDateTable(sql命令);

//2011-11-23 追加 將取回 DataTable 綁定至 Data dataGridView1
            dataGridView1.DataSource = dt;
            dataGridView1.Update();

//2011-11-23 追加 若   dataGridView1 做 新增、修改、刪除 後要將資料回填 Asscess
//注意 新增不需要PK , 但是 修改、刪除 需要 PK (例如 Excel 當作資料來源時,要特別注意)
            OleDbCommandBuilder builder = new OleDbCommandBuilder(odp);
            if (dt.GetChanges() != null)
            {
                //MessageBox.Show(dt.GetChanges().Rows.Count.ToString());
                odp.Update(dt);
                dt.AcceptChanges();
             }

沒有留言:

張貼留言