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 

记录以备用!

原文地址:https://www.cnblogs.com/lxyang/p/13859670.html