oledb dataset更新数据问题,UPDATE语句错误?

jx0797 2006-09-23 03:57:17
ACCESS数据库
表:info
列:id(int长度4),name(char长度10),password(char长度16)

下面代码异常是UPDATE与语错误:

OleDbConnection con= new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\db\my.mdb");
con.Open();


OleDbDataAdapter adapter = new OleDbDataAdapter("select * from info", con);
adapter.UpdateCommand = new OleDbCommand("update info set name=@name,password=@password where id=@id",con);
adapter.UpdateCommand.Parameters.Add("@name", OleDbType.Char, 10, "name");
adapter.UpdateCommand.Parameters.Add("@password", OleDbType.Char, 16, "password");
adapter.UpdateCommand.Parameters.Add("@id", OleDbType.Integer, 4, "id");


DataSet set = new DataSet();
adapter.Fill(set);
set.Tables[0].Rows[0][2] = "123456";
adapter.Update(set);
con.Close();


错在那?
...全文
245 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jx0797 2006-09-23
  • 打赏
  • 举报
回复
jh
jx0797 2006-09-23
  • 打赏
  • 举报
回复
谢谢 !!
oolongTea 2006-09-23
  • 打赏
  • 举报
回复
因为name,password是SQL语法的保留字
tq03rms 2006-09-23
  • 打赏
  • 举报
回复
楼上的把name=?是什么意思?真要查查那占了上G空间的MSDN了……
随便说把name 改成[name]和password 改成[password]
因为在语句中name和password是属于关键字~加[]是把它转为普通String吧~
jx0797 2006-09-23
  • 打赏
  • 举报
回复
字段加上[]为什么就成功了?
xray2005 2006-09-23
  • 打赏
  • 举报
回复
既然是OleDb,那么改成这样看看.
adapter.UpdateCommand = new OleDbCommand("update info set name=?,password=? where id=?",con);

LZ去msdn看oledb和sqldate参数的使用有何不同吧!
jx0797 2006-09-23
  • 打赏
  • 举报
回复
tq03rms也谢谢你啊!!
jx0797 2006-09-23
  • 打赏
  • 举报
回复
为什么要加[]解释下
加和没加的区别好吗
tq03rms 2006-09-23
  • 打赏
  • 举报
回复
name 改成[name]
password 改成[password]

其实不用的吧~我试过~虽然在查询分析器字会变色~但一样可以正常运行的!
不过Access倒没试过~可能我又错了……!!

NO~我太菜拉!
jx0797 2006-09-23
  • 打赏
  • 举报
回复
dazhu2全靠你了,问了N个群!!!
谢谢
tq03rms 2006-09-23
  • 打赏
  • 举报
回复
呀~貌似我又忘记了!我晕死拉!~上面的试试吧~记性越来越差了!
好象不是adapter =cmd;
adapter.UpdateCommand = new OleDbCommand("update info set name=@name,password=@password where id=@id",con);
adapter.UpdateCommand.Parameters.Add("@name", OleDbType.Char, 10, "name");
adapter.UpdateCommand.Parameters.Add("@password", OleDbType.Char, 16, "password");
adapter.UpdateCommand.Parameters.Add("@id", OleDbType.Integer, 4, "id");
然后再cmd=adapter;呢=。=
然后再用cmd执行~算~我错就无视我算了- -
dazhu2 2006-09-23
  • 打赏
  • 举报
回复
adapter.UpdateCommand = new OleDbCommand("update info set [name]=@name,[password]=@password where id=@id",con);
dazhu2 2006-09-23
  • 打赏
  • 举报
回复
name 改成[name]
password 改成[password]
tq03rms 2006-09-23
  • 打赏
  • 举报
回复
不用适配器试试~
直接用
SqlCommand cmd =new SqlCommand("update info set name=@name,password=@password where id=@id",con)
然后再
cmd.Parameters.Add("@name", OleDbType.Char,10,"name");
cmd.Parameters.Add("@password", OleDbType.Char,16,"password");
cmd.Parameters.Add("@id", OleDbType.Integer,4,"id");
郁闷啊~对了~id不是IDENTITY吧……如果不是就试试吧~
我试过不知道为什么就是不行~问老师说的是~
貌似是adapter =cmd;
jx0797 2006-09-23
  • 打赏
  • 举报
回复
UPDATE 语句的语法错误。
AFatPig 2006-09-23
  • 打赏
  • 举报
回复
错误代码贴出来

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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