winform的难题,哪位大哥给看看是怎末回事,郁闷N天了!!!!

allenzhang0603 2007-04-26 10:55:02
在DataGrid里面,想改一下某个值,然后点刷新可以更新,但是老报错,下面是代码!

private void ReButton_Click(object sender, System.EventArgs e)
{
string updstr="update DiskInfo set id=@id,DiskID=@diskid,type=@type,name=@name,diskcount=@count,movietype=@mtype,director=@director,player=@player,movietime=@time where diskid=@diskid";
dataAdapter.UpdateCommand=new SqlCommand(updstr,con);

para=dataAdapter.UpdateCommand.Parameters.Add("@id",SqlDbType.Int,4);
para.SourceColumn="id";
para.SourceVersion=DataRowVersion.Current;

para=dataAdapter.UpdateCommand.Parameters.Add("@diskid",SqlDbType.Char,10);
para.SourceColumn="DiskID";
para.SourceVersion=DataRowVersion.Current;
.....

try
{

if(dataset.HasChanges())
{

dataAdapter.Update(dataset,"DiskInfo");

MessageBox.Show("数据更新成功");
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
错误是
被准备语句'(@id int,@diskid char(10),@type char(10)....)需要参数@diskid,但未提供该参数。
...全文
630 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jisen 2007-07-30
  • 打赏
  • 举报
回复
to ylhyh(----------> www.cnpp.info <----------)
可以!
zzyyll2 2007-07-24
  • 打赏
  • 举报
回复
mark
ylhyh 2007-07-23
  • 打赏
  • 举报
回复
你又要更新diskid又要以diskid为条件,当然不行啦
suyujin_82 2007-07-17
  • 打赏
  • 举报
回复
去掉update 中的 DiskID=@diskid
和后面的WHERE 有 diskid=@diskid
maxuewen1987 2007-07-15
  • 打赏
  • 举报
回复
你想在DataGrid里想更新值,其实还可以这么写啊
不要郁闷了啊,试试下面的方法,一定行的哦!!


private void ReButton_Click(object sender, System.EventArgs e)
{
DataSqlAdapter ds=new DataSqlAdapter("select * from DiskInfo",con);
ds.Fill(dataset,"DiskInfo"); //填充数据集
SqlCommandBuilder sb=new SqlCommandBuilder(ds);
if(dataset.HasChanges(DataRowState.Modified))
{

dataAdapter.Update(dataset,"DiskInfo");

MessageBox.Show("数据更新成功");
}
}
SAGEM_M 2007-07-03
  • 打赏
  • 举报
回复
同意楼上的diskid值是动态无法作为条件来用
wpasp 2007-06-21
  • 打赏
  • 举报
回复
不要在set中与where中使用相同的参数名称。你的@diskid同时出现了两次

建议where的改为@oldDiskid试试看。
allenzhang0603 2007-05-29
  • 打赏
  • 举报
回复
diskid=主键值?
这个是动态的阿!怎末等于?
所以我写的是diskid=@diskid diskid就是主键
allenzhang0603 2007-05-29
  • 打赏
  • 举报
回复
这样还是不行啊!错误是一样的!
cainiao0922 2007-05-24
  • 打赏
  • 举报
回复
string updstr="update DiskInfo set id=@id,DiskID=@diskid,type=@type,name=@name,diskcount=@count,movietype=@mtype,director=@director,player=@player,movietime=@time where diskid=@diskid";

改成

string updstr="update DiskInfo set id=@id,type=@type,name=@name,diskcount=@count,movietype=@mtype,director=@director,player=@player,movietime=@time where diskid=@diskid";
YUKIMATSU 2007-05-23
  • 打赏
  • 举报
回复
什么数据库?如果是Access2003,我也在苦闷中。
ihqtal 2007-05-11
  • 打赏
  • 举报
回复
where diskid=@diskid 好象是这句
where diskid=选中的行的主键字段值
allenzhang0603 2007-05-09
  • 打赏
  • 举报
回复
好像是where 条件不太对!但是我又不知道该怎末写!!
FengLing7885 2007-05-09
  • 打赏
  • 举报
回复
你的UPDATE的语法都有错误啊.
update 表 set 字段=值 where 条件
allenzhang0603 2007-05-08
  • 打赏
  • 举报
回复
id有,是自增量,但不是主键!diskid是主键,是不是因为这个原因啊!
pengliangsheng999 2007-04-30
  • 打赏
  • 举报
回复
啊。。同一个问题,肯定不行咯。
你这样写,要改的哪一项ID都没有了。系统改不了。
allenzhang0603 2007-04-28
  • 打赏
  • 举报
回复
这就是一个更新DataGrid 就是字段比较多
aino77 2007-04-27
  • 打赏
  • 举报
回复
没怎么看明白,建议你把整个函数都删除掉,重新写一次

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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