zoukankan      html  css  js  c++  java
  • 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 

    记录以备用!

  • 相关阅读:
    Python-手动安装第三方包
    SQL SERVER-根据jobID查job
    python-包模块等概念
    锁表
    Python-try异常捕获
    胶水语言
    C++之多态性与虚函数
    android
    开源许可协议
    hal
  • 原文地址:https://www.cnblogs.com/lxyang/p/13859670.html
Copyright © 2011-2022 走看看