ExecuteNonQuery()问题大家帮忙看看一下

ch46485f 2009-10-28 03:54:56
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{
int i = 0;
string str = "server=A-7095D8DBF35D4\\SQLEXPRESS;database=MySchool;uid=sa";
SqlConnection con = new SqlConnection(str);
con.Open();
int tiID = Convert.ToInt32(listView1.SelectedItems[0].Tag);
string sql = string.Format("delete from question where questionid={0}",tiID);
SqlCommand com = new SqlCommand(sql,con);
i=(int)com.ExecuteNonQuery();

if (i!= 1)
{
MessageBox.Show("删除失败 "+ i);
}
else
{
MessageBox.Show("删除成功i"+i);
}
}
...全文
413 点赞 收藏 36
写回复
36 条回复
zhangwike 2009年12月14日
还有什么错误可以截图下来啊?
回复 点赞
zhangwike 2009年12月14日
listView1.SelectedItems[0].text
如果没选择就没得付值了
回复 点赞
zhangwike 2009年12月14日
这样应该可以

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{
string str = "server=A-7095D8DBF35D4\\SQLEXPRESS;database=MySchool;uid=sa";
SqlConnection con = new SqlConnection(str);
con.Open();
int tiID = Convert.ToInt32(listView1.SelectedItems[0].text);
string sql = string.Format("delete from question where questionid={0}",tiID);
SqlCommand com = new SqlCommand(sql,con);
if (com.ExecuteNonQuery()!=1)
{
MessageBox.Show("删除失败 "+ i);
}
else
{
MessageBox.Show("删除成功i"+i);
}
}
回复 点赞
lsd123 2009年10月28日
回复 点赞
Aslangg 2009年10月28日
哈哈
回复 点赞
ch46485f 2009年10月28日
呵呵
回复 点赞
ginpq 2009年10月28日
每天回帖即可获得10分可用分!
回复 点赞
ch46485f 2009年10月28日
[Quote=引用 28 楼 fengniumaxi 的回复:]
你取到自己想要的值不就OK了么?自己看listView1.SelectedItems[0].里面的哪个是你想要的。
开始就说数据库中不存在你要删除的那条记录,让你单步然后把SQL语句取出来放查询分析器执行,结果不那么做……,单步调试这个应该会吧,把问题逐步分离定位。

自己把listView1.SelectedItems[0]快速监视下,看哪个是你要的值(其实主要还是看你怎么获取的)
[/Quote]谢了
回复 点赞
fengniumaxi 2009年10月28日
你取到自己想要的值不就OK了么?自己看listView1.SelectedItems[0].里面的哪个是你想要的。
开始就说数据库中不存在你要删除的那条记录,让你单步然后把SQL语句取出来放查询分析器执行,结果不那么做……,单步调试这个应该会吧,把问题逐步分离定位。

自己把listView1.SelectedItems[0]快速监视下,看哪个是你要的值(其实主要还是看你怎么获取的)
回复 点赞
ch46485f 2009年10月28日
是int tiID = Convert.ToInt32(listView1.SelectedItems[0].Tag);
值错 了
谢谢前面的了
改怎么改
回复 点赞
lixinramaxel41658133 2009年10月28日
你设断点取出来的SQL语句在查询分析器里执行下面的消息提示不会是“(0行受影响)"吧???
回复 点赞
fengniumaxi 2009年10月28日
单步都不会么?晕死,如果直接执行SQL都返回0,那就不需要看程序了啊
回复 点赞
xxbd123 2009年10月28日
tag是不是获取失败了???

弹出来看看



----
下面引蜘蛛的 不要管

http://yule.cainiaopc.com
回复 点赞
nyq1999 2009年10月28日
程序没问题啊
string sql = string.Format("delete from question where questionid={0}",tiID)
改成
string sql = "delete from question";
执行出来肯定不是0,除非你数据库都没数据,当然这样执行完就没了...
回复 点赞
ch46485f 2009年10月28日
[Quote=引用 21 楼 heping173 的回复:]
questionid字段的类型

为int时
string sql = string.Format("delete from question where questionid={0}",tiID);


为varchar类型时
string sql = string.Format("delete from question where questionid='{0}'",tiID);
[/Quote]是int类型的
回复 点赞
heping173 2009年10月28日
questionid字段的类型

为int时
string sql = string.Format("delete from question where questionid={0}",tiID);


为varchar类型时
string sql = string.Format("delete from question where questionid='{0}'",tiID);
回复 点赞
fengniumaxi 2009年10月28日
断点一下,然后再查询分析器里面执行,看能成功不?我不相信存在你的ID是这个的数据
回复 点赞
ch46485f 2009年10月28日
没报错 就是返回0[Quote=引用 17 楼 lixinramaxel41658133 的回复:]
没有报异常??
顺利执行语句??
返回0??
除非你数据库里没有这条数据。。
那也不可能呀,,你的ListView是从数据库里取出来绑定的??怎么可能没有。。

建议你设个断点,取出SQL语句,,在查询分析器里执行看看。。能否成功~~~

[/Quote]
回复 点赞
ch46485f 2009年10月28日
[Quote=引用 14 楼 superbear263 的回复:]
ExecuteNonQuery 该语句 将返回 对应的SQL在数据库中执行 所影响的行数,

如你的问题,如果返回是0,则表明你的SQL在数据库的未产生任何影响,

可能的情况是,数据库 表 question 中没有 question id 等于 listView1.SelectedItems[0].Tag的数据。

如果可以,可以将的绑定listView1的代码帖出来看看具体的数据是什么! :)
[/Quote]在sql有相等的 sql语句在sql中也有用
回复 点赞
lixinramaxel41658133 2009年10月28日
没有报异常??
顺利执行语句??
返回0??
除非你数据库里没有这条数据。。
那也不可能呀,,你的ListView是从数据库里取出来绑定的??怎么可能没有。。

建议你设个断点,取出SQL语句,,在查询分析器里执行看看。。能否成功~~~
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告