博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
阅读量:6906 次
发布时间:2019-06-27

本文共 2005 字,大约阅读时间需要 6 分钟。

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

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

转载地址:http://ohrdl.baihongyu.com/

你可能感兴趣的文章
笨方法学python Lesson 45
查看>>
Java HashMap的实现原理
查看>>
服务器的发送数据
查看>>
kvm install 报错could not open disk imageXXX: Permission denied
查看>>
lduan office 365 自定义域的添加和配置二
查看>>
在Wordpress侧栏中使用下拉菜单显示分类
查看>>
基础排序算法 – 选择排序Selection sort
查看>>
Appium移动自动化测试环境部署
查看>>
corosync+pacemaker+crm实现drbd高可用
查看>>
Git Fork和PullRequest
查看>>
springBoot2.x设置quartz的overwriteExistingJobs参数
查看>>
VMware中通过克隆的Centos7,网卡突然没了
查看>>
学习笔记 DNS 子域授权 view
查看>>
stat函数
查看>>
在MyEclipse中部署项目到Tomcat服务器
查看>>
Kendo UI常用示例汇总(二十二)
查看>>
lnmp+coreseek实现站内全文检索(安装篇)
查看>>
六月技术指标和个人指标
查看>>
我的友情链接
查看>>
dojo layout
查看>>