zoukankan      html  css  js  c++  java
  • ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误

    郁闷了两天,怎么调试就是不对~~

    使用ADO.net将使用于SQL Sever的程序移植到单机的Access数据库里老是发生异常,提示OleDataException,说是缺少一个参数~~莫非是system.data.oleDb和system.data.sqlclient中实现数据更新的方法不一致??试了用Command来代替InsertCommand实现也是发生同样的错误~~

    这两天一直在寻思这个问题,直到今天才在网络上找到了解决的方法,觉得有点不可思议~~在网络上看了看,也是学习ADO.net的人常犯的错误。所以写此日志,以提醒自己与各位路人切记切记~~

    数据库:

        EmpID 字符串型

        Last    字符串型

        Dept 字符串型

        Salary 整型数值

    实现在此数据库中加入新行的代码

    string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=D:我的文档数据库文件Bonus.mdb;";
                OleDbConnection connection = new OleDbConnection(strCon);
                string strEmplist = "SELECT * FROM EmpList";
                string strBonus = "SELECT * FROM Bonus";
                OleDbDataAdapter adEmplist = new OleDbDataAdapter(strEmplist, connection);
                OleDbDataAdapter adBonus = new OleDbDataAdapter(strBonus, connection);
                DataSet dataset = new DataSet("Emplist");
                DataTable emplist = new DataTable("emplist");
                DataTable bonus = new DataTable("bonus");
                try
                {
                    connection.Open();
                    adEmplist.SelectCommand = new OleDbCommand(strEmplist, connection);
                  

                    adEmplist.Fill(emplist);
                    adBonus.Fill(bonus);
                    dataset.Tables.Add(emplist);
                    dataset.Tables.Add(bonus);
                   

                }
                catch (SystemException e)
                {
                    Console.WriteLine(e.Message.ToString());
                }
                DataRow row = emplist.NewRow();
                row["EmpID"] = "A005";
                row["Last"] = "Smith";
                row["Dept"] = "Marketing";
                row["salary"] = 5000;
                emplist.Rows.Add(row);
                try
                {
                    adEmplist.InsertCommand = new OleDbCommand("insert into [EmpList]([EmpID],[Last],[Dept],[Salary]) VALUES('A060','Smith','Marketing','5000')", connection);
                    adEmplist.InsertCommand.CommandType = CommandType.Text;

                    Console.WriteLine(adEmplist.InsertCommand.CommandText);
                   // adEmplist.InsertCommand.ExecuteNonQuery();
                    adEmplist.Update(dataset.Tables["EmpList"]);

                    Console.WriteLine("数据库更新成功");
                    connection.Close();
                }
                catch (OleDbException e)
                {
                    Console.WriteLine(e.Message.ToString());
                }

    总结:在System.Data.oleDb 命名空间下使用SQL语句要在字段名与表名加“【】”

    insert into [EmpList]([EmpID],[Last],[Dept],[Salary]) VALUES('A060','Smith','Marketing','5000')"nsert into [EmpList]([EmpID],[Last],[Dept],[Salary]) VALUES('A060','Smith','Marketing','5000')"

  • 相关阅读:
    Dynamic attention in tensorflow
    Dynamic seq2seq in tensorflow
    Tensorflow Seq2seq attention decode解析
    zz图像卷积与滤波的一些知识点
    Android SDK更新失败对策
    高维数据降维 国家自然科学基金项目 2009-2013 NSFC Dimensionality Reduction
    近期深度学习论文汇总
    PHP远程连接mysql报错处理办法
    zz 启动Matlab提示Microsoft Visual C++ 2005 Redistributable存在问题问题
    `fw服务端非完整` 工程开发初期的工作
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/3479225.html
Copyright © 2011-2022 走看看