我应该使用什么语法来用Oracle数据库更新用C#.net编写的记录



我是一个初学者,在更新存储在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();
}
}
}

您应该将True分配给cmd。调用ExecuteNonQuery或按正确顺序填充参数集合之前的BindByName属性(参数显示在sql命令文本中)

"执行时不更新数据库"可能有两个原因。

  1. 别忘了做COMMIT。在提交之前,更改对外部会话不可见。会话可以使用自动提交或其他方法,但是。。迫使它。

  2. 如果where子句错误,即找不到指定的记录,UPDATE语句可以更新0条记录。通常你可以检查"受影响的记录"计数器(我想这是ExecuteNonQuery的结果)

最新更新