Domanda

Sto inserendo valori in database da un WebForm utilizzando ADO.NET, C #.DB Sto usando è il database Oracle.I valori non vengono inseriti e il programma viene colpito al cmd.executenonquery ()

Ecco il mio codice qui sotto, per favore fammi sapere se sto facendo qualsiasi errore .. Sto usando alcuni metodi statici sarà qualche problema? ..

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;
}
.

È stato utile?

Soluzione

C'è una chiave primaria definita su questa tabella?Se è così, allora la mia ipotesi è che tu abbia un'altra sessione che abbia già inserito un record con questo tasto, ma non ha ancora terminato la transazione con un commit o un rollback.Non vedo un commit come parte del tuo codice - presumo che lo stia facendo da qualche altra parte?

Esegui il tuo codice sopra ancora una volta, e mentre è appeso eseguire la seguente query da un'altra sessione:

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;
.

Questo dovrebbe dirti se sei bloccato da un'altra sessione e quale sia il SID di quella sessione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top