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')"

  • 相关阅读:
    out/host/linuxx86/obj/EXECUTABLES/aapt_intermediates/aapt 64 32 操作系统
    linux 查看路由器 电脑主机 端口号 占用
    linux proc进程 pid stat statm status id 目录 解析 内存使用
    linux vim 设置大全详解
    ubuntu subclipse svn no libsvnjavahl1 in java.library.path no svnjavahl1 in java.library.path no s
    win7 安装 ubuntu 双系统 详解 easybcd 工具 不能进入 ubuntu 界面
    Atitit.json xml 序列化循环引用解决方案json
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.跨语言  文件夹与文件的io操作集合  草案
    Atitit.atijson 类库的新特性设计与实现 v3 q31
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/3479225.html
Copyright © 2011-2022 走看看