ACCESS 备注型字段要如何才能更新?

AhBian 2008-07-06 11:44:13
在一 ACCESS 数据库中,有一表 UpdateInfo,表中有一备注型字段 Description。
采用参数化的 OleDbCommand 来更新该备注字段,但不能更新,实际影响的行数始终为 0。
然而更新其他数据类型的字段时,(如 Date 日期型字段),更新操作完全正常。

以下是两句用于测试的 SQL 语句:
static string SQL_UPDATEDATE = "UPDATE [UpdateInfo] SET [Date]=Now() WHERE ID=@ID ";
static string SQL_UPDATEDESC = "UPDATE [UpdateInfo] SET [Description]=@Info WHERE ID=@ID ";

前一句的 UPDATE 操作顺利,后一句则不能更新,但也不报错,即影响的行数始终为 0。

OleDbParameter[] parms = new OleDbParameter[2];
parms[0] = new OleDbParameter("@ID", OleDbType.Integer);
parms[0].Value = id;
parms[1] = new OleDbParameter("@Info", OleDbType.LongVarWChar);
parms[1].Value = strMessage;

已经困扰了我一天,不知如何解决。请赐教。
...全文
281 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jinglecat 2008-07-06
  • 打赏
  • 举报
回复
OleDb 命令参数是按《位置》索引的,只要使用 ? (问号)表示占位符即可,当然你显示命名也没有错,
记住顺序一定要一致!!!!

OleDbParameter[] parms = new OleDbParameter[2];
parms[0] = new OleDbParameter("@Info", OleDbType.LongVarWChar);
parms[0].Value = strMessage;
parms[1] = new OleDbParameter("@ID", OleDbType.Integer);
parms[1].Value = id;
amandag 2008-07-06
  • 打赏
  • 举报
回复
Access认的是参数的顺序而不是参数的名字

OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=demo.mdb");

string strSql = "UPDATE [UpdateInfo] SET [Description]=? WHERE ID=? ";

OleDbCommand cmd = new OleDbCommand(strSql, cn);
cmd.Parameters.AddWithValue("?", textBox2.Text);//这个是Description
cmd.Parameters.AddWithValue("?", textBox1.Text);//这个是id
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
amandag 2008-07-06
  • 打赏
  • 举报
回复
参数顺序错了
AhBian 2008-07-06
  • 打赏
  • 举报
回复
原来如此。对 ACCESS 进行查询时,参数还不必命名啊,只认次序。

62,046

社区成员

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

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

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

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