我手工建数据库连接相关对象后,插入一条记录系统提示“INSERT INTO 语句的语法错误”,但是通过从VS2005的“工具箱”拖数据控件的方法就可以插入记录,为什么?
我手写的程序如下:
using System.Data;
using System.Data.OleDb;
所需要的引用都加上了,数据库连接也没问题,就是自己写OleDbCommandBuilder OleCb = new OleDbCommandBuilder(OleDa)不能生成正确的命令,而通过拖放控件系统自动生成的就没问题。string sDbCn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.mdb;Persist Security Info=True";OleDbConnection OleCn = new OleDbConnection(sDbCn);
OleCn.Open();
OleDbDataAdapter OleDa = new OleDbDataAdapter("select * from czy", OleCn);
OleDbCommandBuilder OleCb = new OleDbCommandBuilder(OleDa);DataSet DS = new DataSet();
OleDa.Fill(DS, "czy");DataRow DR = DS.Tables["czy"].NewRow();
DR[0] = "周二";
DR[1] = "1";
DS.Tables["czy"].Rows.Add(DR);OleDa.Update(DS, "czy");
OleCn.Close();执行到Update时提示“INSERT INTO 语句的语法错误。”
再有我改成用insert命令时也没问题,能正常插入数据,用insert命令的程序如下
string sDbCn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.mdb;Persist Security Info=True";OleDbConnection OleCn = new OleDbConnection(sDbCn);
OleCn.Open();
OleDbDataAdapter OleDa = new OleDbDataAdapter("select * from czy", OleCn);
OleDbCommandBuilder OleCb = new OleDbCommandBuilder(OleDa);
OleDbCommand OleCm = new OleDbCommand("insert into `czy` (`xm`,`qx`) VALUES ('周二','1')", OleCn);
OleCm.ExecuteNonQuery();
OleCn.Close();
我手写的程序如下:
using System.Data;
using System.Data.OleDb;
所需要的引用都加上了,数据库连接也没问题,就是自己写OleDbCommandBuilder OleCb = new OleDbCommandBuilder(OleDa)不能生成正确的命令,而通过拖放控件系统自动生成的就没问题。string sDbCn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.mdb;Persist Security Info=True";OleDbConnection OleCn = new OleDbConnection(sDbCn);
OleCn.Open();
OleDbDataAdapter OleDa = new OleDbDataAdapter("select * from czy", OleCn);
OleDbCommandBuilder OleCb = new OleDbCommandBuilder(OleDa);DataSet DS = new DataSet();
OleDa.Fill(DS, "czy");DataRow DR = DS.Tables["czy"].NewRow();
DR[0] = "周二";
DR[1] = "1";
DS.Tables["czy"].Rows.Add(DR);OleDa.Update(DS, "czy");
OleCn.Close();执行到Update时提示“INSERT INTO 语句的语法错误。”
再有我改成用insert命令时也没问题,能正常插入数据,用insert命令的程序如下
string sDbCn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.mdb;Persist Security Info=True";OleDbConnection OleCn = new OleDbConnection(sDbCn);
OleCn.Open();
OleDbDataAdapter OleDa = new OleDbDataAdapter("select * from czy", OleCn);
OleDbCommandBuilder OleCb = new OleDbCommandBuilder(OleDa);
OleDbCommand OleCm = new OleDbCommand("insert into `czy` (`xm`,`qx`) VALUES ('周二','1')", OleCn);
OleCm.ExecuteNonQuery();
OleCn.Close();
解决方案 »
- 请问如何设置使得新窗口右上角关闭按钮不可用
- 有个Pos系统,门户端有个SQLSERVER2005,还有个总后台有个SQLSERER2005,系统处于互联网上,怎么把POS的SQLSER2005的数据同步。
- 用C# 调用winAPI的 settimer()后,不执行回调函数!! 具体程序如下:
- C#中如何取得非托管代码返回的数组?
- C#(Winfrom)下远程数据库操作,问题保证详细,保证麻烦,保证有挑战,同时请你保证答案的质量.
- .net 3.0和2.0应用同样的CLR,但是3.5是不是和2.0用的是同样的CLR? 我觉得不是
- 如何实现右键的弹出菜单功能?
- 什么是hashcode?
- 问高手们一个发送邮件的问题!
- 如何让header背后为透明色,无属性设置的难题(tabcontrol)
- 谁用过Microsoft Visual Studio 2005?
- 求救XML,先谢了
改为
OleDbDataAdapter OleDa = new OleDbDataAdapter("select * from [czy]", OleCn);试试.
DR[0] = "周二";
DR[1] = "1";
DS.Tables["czy"].Rows.Add(DR);会不会有错啊
用建立 OleDbCommand OleCm = new OleDbCommand("insert into `czy` (`xm`,`qx`) VALUES ('周二','1')", OleCn);可以通过。但OleDbCommandBuilder OleCb = new OleDbCommandBuilder(OleDa)自动生成的语句却是这样的:INSERT INTO czy (xm,qx) VALUES (?, ?),参数没问题,问题是字段名中没有单引号了,怎么才能让自动生成的语句带上单引号或中括号呢(经测试中括号也行“[]”),即只要语句改成INSERT INTO czy ('xm','qx') VALUES (?, ?)就行。