System.Data.OleDb.OleDbException: UPDATE 语句的语法错误。

iultra 2008-01-27 07:38:56
private void Update_Contacts()
{
    string strConnection = "Provider = Microsoft.Jet.OleDb.4.0; Data Source = " + Server.MapPath("./");
    strConnection += @"Database.mdb";
    OleDbConnection objConnection = new OleDbConnection(strConnection);
    objConnection.Open();
    string sqlQuery = "Select * From [Contacts] Where [PIN] = '" + Request["PIN"] + "'";
    DataSet objDataSet = new DataSet();
    OleDbDataAdapter objDataAdapter = new OleDbDataAdapter(sqlQuery, objConnection);
    OleDbCommandBuilder objCommandBuilder = new OleDbCommandBuilder(objDataAdapter);
    objDataAdapter.Fill(objDataSet, "Contacts");
    objDataSet.Tables["Contacts"].Rows[0]["Name(ENG)"]  = Request["Name(ENG)"];
    objDataSet.Tables["Contacts"].Rows[0]["Cell Phone"]  = Request["Cell_Phone"];
    objDataSet.Tables["Contacts"].Rows[0]["Backup Phone"] = Request["Backup_Phone"];
    objDataSet.Tables["Contacts"].Rows[0]["Location"]   = Request["Location"];
    objDataSet.Tables["Contacts"].Rows[0]["Notes"]    = Request["Notes"];
    objDataAdapter.Update(objDataSet, "Contacts");
    objConnection.Close();
}




“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

UPDATE 语句的语法错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.OleDb.OleDbException: UPDATE 语句的语法错误。

源错误:


行 115:    objDataSet.Tables["Contacts"].Rows[0]["Location"]    = Request["Location"];
行 116:    objDataSet.Tables["Contacts"].Rows[0]["Notes"]      = Request["Notes"];
行 117:    objDataAdapter.Update(objDataSet, "Contacts");
行 118:    objConnection.Close();


前来请教大家!谢谢!
...全文
663 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
iultra 2008-01-27
  • 打赏
  • 举报
回复
结题:Name(ENG) 被识别成函数了,Update 之所以报错,就是说缺少 Name 函数的定义。其他的没有任何问题。
感谢 Only_Endure 的热心帮助!
一品梅 2008-01-27
  • 打赏
  • 举报
回复
调试成功贴上代码,并把错误原因及中间不断解决的过程公布给大家,以飨读者,呵呵.
THX :-)
一品梅 2008-01-27
  • 打赏
  • 举报
回复
还有你的语法极不规范,request是干什么的,究竟想做什么???
一品梅 2008-01-27
  • 打赏
  • 举报
回复
从你的代码中看,你是想更新数据库的第一条记录的值(不是删除,也不是插入,从你的代码中看),你上面显示定义了select命令,但是没有显示定义update命令.
一品梅 2008-01-27
  • 打赏
  • 举报
回复
// Assumes connection is a valid SqlConnection.
SqlDataAdapter dataAdpater = new SqlDataAdapter(
"SELECT CategoryID, CategoryName FROM Categories", connection);

dataAdpater.UpdateCommand = new SqlCommand(
"UPDATE Categories SET CategoryName = @CategoryName " +
"WHERE CategoryID = @CategoryID" , connection);

dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");

SqlParameter parameter = dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryID", SqlDbType.Int);
parameter.SourceColumn = "CategoryID";
parameter.SourceVersion = DataRowVersion.Original;

DataSet dataSet = new DataSet();
dataAdpater.Fill(dataSet, "Categories");

DataRow row = dataSet.Tables["Categories"].Rows[0];
row ["CategoryName"] = "New Category";

dataAdpater.Update(dataSet, "Categories");


一品梅 2008-01-27
  • 打赏
  • 举报
回复
问题找到了:
当调用 Update 方法时,DataAdapter 将分析已作出的更改并执行相应的命令(INSERT、UPDATE 或 DELETE)。当 DataAdapter 遇到对 DataRow 的更改时,它将使用 InsertCommand、UpdateCommand 或 DeleteCommand 来处理该更改。这样,您就可以通过在设计时指定命令语法并在可能时通过使用存储过程来尽量提高 ADO.NET 应用程序的性能。在调用 Update 之前,必须显式设置这些命令。如果调用了 Update 但不存在用于特定更新的相应命令(例如,不存在用于已删除行的 DeleteCommand),则将引发异常。

chengqscjh 2008-01-27
  • 打赏
  • 举报
回复
你这上路径的问题吧,检查下路径
frankworld 2008-01-27
  • 打赏
  • 举报
回复
asp.net我也不是太熟,提供一个思路吧.
打上断点,在Update前检查一下adapter的sql语句是否正确,然后检查你赋值的类型是否符合要求
一品梅 2008-01-27
  • 打赏
  • 举报
回复
你原代码request里的东西是控件名吧?
一品梅 2008-01-27
  • 打赏
  • 举报
回复
写错了.
OleDbCommandBuilder yourcommand = new OleDbCommandBuilder("update Authority set authcode = @authcode", Myconnection);
cmddel.Parameters.Add("@authcode", OdbcType.Int, 11, "authcode");


或objDataSet.Tables["Contacts"].Rows[0]["Name(ENG)"]  = "+Name(ENG)+";
iultra 2008-01-27
  • 打赏
  • 举报
回复
试过了,将 Request["PIN"] 更改为另外的常量还是不行。把 Where 的查询条件从 PIN 换成 ID 等都不行。
iultra 2008-01-27
  • 打赏
  • 举报
回复
请问该怎样修改呢?
一品梅 2008-01-27
  • 打赏
  • 举报
回复
使用
objAdapter.Parameters.Add("@authcode", Int, 11, "authcode")这种类型.
你的语法错了.
一品梅 2008-01-27
  • 打赏
  • 举报
回复
错误点:
Request["xxx"]
LikeCode 2008-01-27
  • 打赏
  • 举报
回复
怀疑Request["PIN"]获取的字符串导致了SQL语句语法错误。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧