{
int classID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex]["cid"].ToString());
String sqlStr = "delete from nclass where cid=@cid ";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@cid", SqlDbType.Int, 4);
cmd.Parameters["@cid"].Value = classID;
conn.Open();
int i = cmd.ExecuteNonQuery();
if (i > 0)
{
bind();
}
else
{
message("服务器忙");
}
conn.Close();
}
catch
{
throw;
}
我这样删除有一个问题,就是当我点删除的删除成功了他也会执行else里面的代码
后来我打断点之后发现,点一次删除它执行了2次,第一次删除成功后,就接着执行第二次删除,这样当然不会有数据让他删除了,有没有谁遇到过这种问题,有的话说一下怎么解决,我用VS05的时候就没有这个问题,难道是我用08打开的时候转换出了问题?
10 个解决方案
#1
自己先涨下人气先!~~
#2
int i = 0;
try
{
int classID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex]["cid"].ToString());
String sqlStr = "delete from nclass where cid=@cid ";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@cid", SqlDbType.Int, 4);
cmd.Parameters["@cid"].Value = classID;
conn.Open();
i = cmd.ExecuteNonQuery();
catch
{
throw;
}
finally
{
if (i > 0)
{
bind();
}
else
{
message("服务器忙");
}
conn.Close();
}
}
try
{
int classID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex]["cid"].ToString());
String sqlStr = "delete from nclass where cid=@cid ";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@cid", SqlDbType.Int, 4);
cmd.Parameters["@cid"].Value = classID;
conn.Open();
i = cmd.ExecuteNonQuery();
catch
{
throw;
}
finally
{
if (i > 0)
{
bind();
}
else
{
message("服务器忙");
}
conn.Close();
}
}
#3
楼主说的执行两次是什么情况,一次性的执行两条删除语句吗?
#4
学习 学习
#5
我想是跟这段代码没有什么关系,应该是把这段代码放在什么地方执行有关系
#6
应该和这段代码没关系,楼主看下是不是别处调用了
#7
不是,我打断点看的情况是,就像我这段代码写在for循环里面一样,执行次数是2次
#8
代码放在GridView1_RowDeleting里面在啊
#9
楼主应该贴出来更多的代码,或这段代码你是写在哪个方法里了,单看这个没什么问题
#10
按2楼的方法就正确了,但是按道理说不用finally部分这样写也不会错啊,为什么会出现在中情况,难道是vs设置的问题,好了,看看有没有人遇到过这种情况,准备结贴了!~~~
#1
自己先涨下人气先!~~
#2
int i = 0;
try
{
int classID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex]["cid"].ToString());
String sqlStr = "delete from nclass where cid=@cid ";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@cid", SqlDbType.Int, 4);
cmd.Parameters["@cid"].Value = classID;
conn.Open();
i = cmd.ExecuteNonQuery();
catch
{
throw;
}
finally
{
if (i > 0)
{
bind();
}
else
{
message("服务器忙");
}
conn.Close();
}
}
try
{
int classID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex]["cid"].ToString());
String sqlStr = "delete from nclass where cid=@cid ";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@cid", SqlDbType.Int, 4);
cmd.Parameters["@cid"].Value = classID;
conn.Open();
i = cmd.ExecuteNonQuery();
catch
{
throw;
}
finally
{
if (i > 0)
{
bind();
}
else
{
message("服务器忙");
}
conn.Close();
}
}
#3
楼主说的执行两次是什么情况,一次性的执行两条删除语句吗?
#4
学习 学习
#5
我想是跟这段代码没有什么关系,应该是把这段代码放在什么地方执行有关系
#6
应该和这段代码没关系,楼主看下是不是别处调用了
#7
不是,我打断点看的情况是,就像我这段代码写在for循环里面一样,执行次数是2次
#8
代码放在GridView1_RowDeleting里面在啊
#9
楼主应该贴出来更多的代码,或这段代码你是写在哪个方法里了,单看这个没什么问题
#10
按2楼的方法就正确了,但是按道理说不用finally部分这样写也不会错啊,为什么会出现在中情况,难道是vs设置的问题,好了,看看有没有人遇到过这种情况,准备结贴了!~~~