标题:DataGrid数据更新。。。C#
只看楼主
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
结帖率:50%
 问题点数:0 回复次数:10 
DataGrid数据更新。。。C#

我想在DataGrid中更新数据。。但我的Update代码总是写不好。。总是更新不了数据。闷。下面的代码错在哪。请指教了。。。
void dg_Update(Object Sender,DataGridCommandEventArgs e)
{
datacon();
OleDbCommand thisCOMD=thisCN.CreateCommand();
thisCOMD.CommandText="Update students set class=@class and sex=@sex where id=@no";
thisCOMD.Parameters.Add("@class",((TextBox)e.Item.Cells[1].Controls[0]).Text);
thisCOMD.Parameters.Add("@sex",((TextBox)e.Item.Cells[2].Controls[0]).Text);
thisCOMD.Parameters.Add("@no",e.Item.ItemIndex);
try
{
thisCOMD.ExecuteNonQuery();
}
catch
{
Response.Write("Sorry!");
}
thisCN.Close();
}

搜索更多相关主题的帖子: DataGrid 数据 
2006-11-18 20:33
wyg4859
Rank: 2
等 级:新手上路
威 望:4
帖 子:883
专家分:0
注 册:2006-8-2
得分:0 
你的更新语句应该是在添加完之后才更新吧

http://www.找到组织!找到党!
2006-11-18 20:48
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
把你的更新语句输出来就知道错了没

飘过~~
2006-11-18 22:22
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
得分:0 
我知道是更新语句错了。。

不想停留。。。
2006-11-18 22:26
iceqier
Rank: 1
等 级:新手上路
威 望:1
帖 子:129
专家分:0
注 册:2006-1-22
得分:0 

thisCOMD.CommandText="Update students set class=@class and sex=@sex where id=@no";
改成:thisCOMD.CommandText="Update students set class=@class ,sex=@sex where id=@no";

天天摸键盘,整天看代码。。。 E-mail : iceqier520@
2006-11-18 22:44
lwn
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-8-22
得分:0 

我也遇到此问题,更新数据写不到数据库里面!


学不好C语言,就娶不上媳妇了!
2006-11-19 17:53
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
以下是引用iceqier在2006-11-18 22:44:36的发言:

thisCOMD.CommandText="Update students set class=@class and sex=@sex where id=@no";
改成:thisCOMD.CommandText="Update students set class=@class ,sex=@sex where id=@no";


飘过~~
2006-11-19 20:31
lwn
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-8-22
得分:0 
首先在DataGrid的DataKeyField属性设置成你所要更新数据表的主键,你的这个表的主键应该是“id”吧。
代码如下所示:

void dg_Update(Object Sender,DataGridCommandEventArgs e)
{
datacon();
OleDbCommand thisCOMD=thisCN.CreateCommand();
thisCOMD.CommandText="Update students set class=@classsex=@sex where id=@no";//你原来错了。
thisCOMD.Parameters.Add("@class",((TextBox)e.Item.Cells[1].Controls[0]).Text);
thisCOMD.Parameters.Add("@sex",((TextBox)e.Item.Cells[2].Controls[0]).Text);
thisCOMD.Parameters.Add("@no",((TextBox)e.Item.Cells[3].Controls[0]).Text); //id在DataGrid中的第四列
thisCOMD.Parameters["@no"].Value =dg.DataKeys [e.Item.ItemIndex]; //取的主索引键之值

try
{
thisCOMD.ExecuteNonQuery();
}
catch
{
Response.Write("Sorry!");
}
thisCN.Close();
}
你试一下,应该对了,我也刚学会的!

学不好C语言,就娶不上媳妇了!
2006-11-19 21:57
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
得分:0 
可怪的是:用Response.Write将thisCOMD.CommandText语句写出来后,怎么是:
Update students set class=@class,sex=@sex where id=@no ,也就说,参数的值传不到咯。...最后,数据还是无法更新。。。。

不想停留。。。
2006-11-20 01:41
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
void dg_Update(Object Sender,DataGridCommandEventArgs e)
{
datacon();
OleDbCommand thisCOMD=thisCN.CreateCommand();
TextBox txt1 = (TextBox)dg.Rows[e.RowIndex].Cells[1].Controls[0];
TextBox txt2 = (TextBox)dg.Rows[e.RowIndex].Cells[1].Controls[0];
string class = txt1.Text.Trim();
string sex = txt2.Text.Trim();
int no = dg.DataKeys [e.Item.ItemIndex]; //DataGrid的DataKeys属性中设置为数据表中的no
thisCOMD.CommandText="Update students set class'" + class + "' and sex='" + sex + "' where id=" no ;
try
{
thisCOMD.ExecuteNonQuery();
}
catch
{
Response.Write("Sorry!");
}
thisCN.Close();
}


这样你可以把SQL语句输出来看看就会有值了

飘过~~
2006-11-20 12:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-103893-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.328506 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved