关于vs08删除的问题,只想问问有没有人遇到过,来了就有分

时间:2021-05-25 20:57:49
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();
        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();
  }

}

#3


引用楼主 zhangsuyunpk521 的回复:
try
    {
        int classID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex]["cid"].ToString());
        String sqlStr = "delete from nclass where cid=@cid ";
        SqlCommand cmd = new S……

楼主说的执行两次是什么情况,一次性的执行两条删除语句吗?

#4


学习  学习  

#5


我想是跟这段代码没有什么关系,应该是把这段代码放在什么地方执行有关系

#6


应该和这段代码没关系,楼主看下是不是别处调用了

#7


引用 2 楼 zjtpiaoxue 的回复:
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 SqlComman……

不是,我打断点看的情况是,就像我这段代码写在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();
  }

}

#3


引用楼主 zhangsuyunpk521 的回复:
try
    {
        int classID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex]["cid"].ToString());
        String sqlStr = "delete from nclass where cid=@cid ";
        SqlCommand cmd = new S……

楼主说的执行两次是什么情况,一次性的执行两条删除语句吗?

#4


学习  学习  

#5


我想是跟这段代码没有什么关系,应该是把这段代码放在什么地方执行有关系

#6


应该和这段代码没关系,楼主看下是不是别处调用了

#7


引用 2 楼 zjtpiaoxue 的回复:
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 SqlComman……

不是,我打断点看的情况是,就像我这段代码写在for循环里面一样,执行次数是2次

#8


代码放在GridView1_RowDeleting里面在啊

#9


楼主应该贴出来更多的代码,或这段代码你是写在哪个方法里了,单看这个没什么问题

#10


按2楼的方法就正确了,但是按道理说不用finally部分这样写也不会错啊,为什么会出现在中情况,难道是vs设置的问题,好了,看看有没有人遇到过这种情况,准备结贴了!~~~