string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["OTDB"].ToString();
OleDbConnection con = new OleDbConnection(connStr);
            con.Open();
            OleDbTransaction st = con.BeginTransaction();
            OleDbCommand cmd = con.CreateCommand();
            cmd.Transaction = st;
            try
            {
                cmd.CommandText = "delete ID from News where id=" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "  ";
                cmd.ExecuteNonQuery();
                cmd.CommandText = "delete NID from dbo_Fc_CompanyNews new_class_id=" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "";
                cmd.ExecuteNonQuery();
                st.Commit();
                Response.Write("<script>alert('删除成功!');location='NewsTypeManager.aspx'</script>");
         
            }
            catch (Exception ee)
            {
                st.Rollback();
                Response.Write("<script>alert('删除失败!');location='NewsTypeManager.aspx'</script>");
            }
/////////////////////////
感到语法和数据库语句都没错怎么st.commit()不执行?

解决方案 »

  1.   

    调试了,执行到st.commit()就调处到catch块了.st.commit()之前都没错!
      

  2.   

    最好看看 你写的SQL 用  messagebox打出来
    我以前也遇到过这样的  好象是sql 写错了
      

  3.   

    你的commandtext写错了,第一个改成 cmd.CommandText = "delete ID from News where id=" + GridView1.DataKeys[e.RowIndex].Value.ToString();
    再不行,改成
     cmd.CommandText = "delete ID from News where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
      

  4.   

    cmd.CommandText = "delete NID from dbo_Fc_CompanyNews new_class_id=" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "";少了where这句
      

  5.   

    delete ID from News where id
    应该为delete from News where id
    正如楼上所说,去查询分析器里面执行一下就可以了,应该是sql语句的问题
      

  6.   

    还是lisbates27(只爱嘎嘎) 仔细,这么多人都没看出来,晕,我说呢,真是汗,教训啊,讨厌的access数据库没有分析器,真郁闷.