代码之家  ›  专栏  ›  技术社区  ›  msbyuva

cmd.ExecuteNonQuery()有问题

  •  4
  • msbyuva  · 技术社区  · 14 年前

    下面是我的代码,如果我做错了请告诉我。。我用的是一些静态的方法,有什么问题吗?。。

    public Boolean AddDivCo(Int32 UserNo,String ID, String Role, String DivName )
    {
        Boolean ret = false;
    
    
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = new OracleConnection();
        int i = 0;
    
        try
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["Conn_RIS"].ConnectionString;
            conn.Open();
    
            cmd.Connection = conn;
            String mySQL = "INSERT INTO R4CAD_ADMIN (AdminUserNo, AdminID, AdminRole, AdminDivName)VALUES(:AdminUserNo,:AdminID,:AdminRole,:DivName)";
    
            OracleParameter p1 = new OracleParameter("AdminUserNo", OracleType.Number);
            p1.Value = UserNo;
            cmd.Parameters.Add(p1);
    
            OracleParameter p2 = new OracleParameter("AdminID", OracleType.VarChar);
            p2.Value = ID;
            cmd.Parameters.Add(p2);
    
            OracleParameter p3 = new OracleParameter("AdminRole", OracleType.VarChar);
            p3.Value = Role;
            cmd.Parameters.Add(p3);
    
            OracleParameter p4 = new OracleParameter("DivName", OracleType.VarChar);
            p4.Value = DivName;
            cmd.Parameters.Add(p4);
    
            cmd.CommandText = mySQL;
    
            i = cmd.ExecuteNonQuery();
    
            if (i != 0)
            {
                ret = true;
            }
            else
            {
                ret = false;
            }
        }
        catch (Exception err)
        {
            Console.WriteLine(err.Message.ToString());
        }
        finally
        {
            cmd.Dispose();
            //cmd = null;
            //conn = null;
            conn.Close();
        }
        return ret;
    }
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   DCookie    14 年前

    此表上是否定义了主键?如果是这样的话,那么我的猜测是您有另一个会话,它已经用这个键插入了一个记录,但是还没有用提交或回滚终止事务。我不认为提交是你代码的一部分-我想你是在别的地方做的?

    SELECT
          (SELECT username FROM v$session WHERE sid=a.sid) blocker,
           a.sid,
          ' is blocking ',
           (SELECT username FROM v$session WHERE sid=b.sid) blockee,
               b.sid
      FROM v$lock a JOIN v$lock b ON (a.id1 = b.id1 AND a.id2 = b.id2)
     WHERE a.block = 1
       AND b.request > 0;
    

    这将告诉您是否被另一个会话阻止,以及该会话的SID是什么。