簡體   English   中英

我應該使用什么語法來更新用Oracle數據庫用C#.net編寫的記錄

[英]What syntax should I use to update a record written in C#.net with Oracle Database

我是一個初學者,在更新存儲在Oracle數據庫中並用C# .NET編寫的記錄時遇到了問題。 連接成功,插入和刪除查詢工作正常。 請建議我該怎么辦。

我的代碼是:

private void btnUpadate_Click(object sender, EventArgs e)
{
    OracleConnection con = null;
    try
    {
        con = new OracleConnection();
        string constr = "Data source=XE; User ID=cloudester; Password=cloudester123;";

        if (con.State != ConnectionState.Open)
        {
            try
            {
                con.ConnectionString = constr;
                con.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error Caught");
            }
        }
        if (con.State == ConnectionState.Open)
        {
            OracleCommand cmd = new OracleCommand();
            cmd.CommandText = "Update EMP_DETAIL set Name= :Name, Age=:Age where EmpId=:EmpId";
            cmd.Connection = con;
            cmd.Parameters.Add(new OracleParameter("EmpId", OracleDbType.Varchar2)).Value = txtEmpId.Text;
            cmd.Parameters.Add(new OracleParameter("Name", OracleDbType.Varchar2)).Value = txtName.Text;
            cmd.Parameters.Add(new OracleParameter("Age", OracleDbType.Int16)).Value = int.Parse(txtAge.Text);
            int i = cmd.ExecuteNonQuery();

            MessageBox.Show(i.ToString());
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }

    finally
    {
        if (con != null)
        {
            con.Dispose();
        }
    }
}

在調用ExecuteNonQuery或按正確的順序填充參數集合之前,應將True分配給cmd.BindByName屬性(因為參數出現在sql命令文本中)

“執行但不更新數據庫”可能有兩個原因。

  1. 不要忘了做COMMIT。 在提交之前,外部會話看不到更改。 會話可以使用自動提交或其他方式來強制使用。

  2. 如果where子句錯誤,則UPDATE語句可以更新0條記錄,即它找不到指定的記錄。 通常您可以檢查“受影響的記錄”計數器(我想這是ExecuteNonQuery的結果)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM