1. 程式人生 > 實用技巧 >ACCESS 操作資料庫記錄(踩坑大王)

ACCESS 操作資料庫記錄(踩坑大王)

1、Access資料庫連線字串,不同版本的版本號不一樣,

accessname即access資料庫表的路徑
 switch (kzm)
            {
                case ".mdb":
                    constr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", accessname);
                    break;
                case ".accdb":
                    constr 
= string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}", accessname); break; }

2、獲取access表結構資料(欄位,欄位型別)

  /// <summary>
        /// 獲取access表結構資料(欄位,欄位型別)
        /// </summary>
        /// <param name="tablename">表名</param>
        /// <returns></returns>
public static Dictionary<string, string> GetAccessZDType(string tablename, string kzm, string accessname) { Dictionary<string, string> dic = new Dictionary<string, string>(); string zdtp = ""; string constr = CommonClass.GetAccessDifferentVersion(kzm, accessname); OleDbConnection connection
= new OleDbConnection(constr); connection.Open(); //獲取access庫表裡的欄位和相關欄位資訊 DataTable table = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, tablename, null }); foreach (DataRow row in table.Rows) { string zd = row["COLUMN_NAME"].ToString(); //欄位名稱 int lx = int.Parse(row["DATA_TYPE"].ToString()); //欄位型別 switch (lx) { case 2: zdtp = "int"; break; case 3: zdtp = "int"; break; case 4: zdtp = "Single"; break; case 5: zdtp = "double"; break; case 6: zdtp = "decimal"; break; case 7: zdtp = "DateTime"; break; case 11: zdtp = "bool"; break; case 17: zdtp = "byte"; break; case 72: zdtp = "string"; break; case 130: zdtp = "string"; break; case 131: zdtp = "decimal"; break; case 128: zdtp = "string"; break; default: zdtp = "string"; break; } dic.Add(zd, zdtp); } connection.Close(); connection.Dispose(); return dic; }
View Code

3、Access刪除語句:Delete From 表名 Where ...

需要注意的是:日期格式,因為我再刪除時,有些表主鍵是日期欄位,所以當時試了很多種方法,怎麼格式化都不成功,真是阿西吧!!

最後!終於百度瞥到了某位大神的留言:access日期格式不能用''單引號,必須是#2020/10/20#這樣的方式,以#字元括起來才可以,天吶!!!!!!!

完整語句:Delete From A Where x='你好' and RQ=#2020/08/23# and age=18

記錄以備用!