在写update的sql语句时,写成下面这种,运行时数据执行不成功
private void button2_Click(object sender, EventArgs e)
{
int a = dt.UpdateState(textBox2.Text.Trim(), textBox3.Text.Trim());
if (a > 0)
{
MessageBox.Show("保存成功");
}
else
{
MessageBox.Show("保存失败");
}
}
public int UpdateState(string boardbarcode,string status)
{
OracleConnection sc = GetConnection();
try
{
sc.Open();//打开到数据库的连接
OracleCommand cmd = new OracleCommand("update EQP_AUTO_AOI set BOARDSTATUS=:BOARDSTATUS where BoardBarcode=:BOARDSTATUS ", sc);//创建OracleCommand对象
OracleParameter par = new OracleParameter(":BOARDBARCODE", boardbarcode);
OracleParameter par1 = new OracleParameter(":BOARDSTATUS", status);
//OracleParameter par = new OracleParameter(":BOARDBARCODE", boardbarcode);
cmd.Parameters.Add(par);
cmd.Parameters.Add(par1);
//cmd.Parameters.Add(par);
int result = cmd.ExecuteNonQuery();//运行sql语句
return result;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return 0;
}
finally
{
if (sc.State == ConnectionState.Open)//判断是否连接数据库
{
sc.Close();//如果已经连接则关闭连接
}
}
}
一直运行失败。
后来想起以前也遇到过这种问题,是参数顺序的问题,将参数顺序与sql语句的顺序一致才行。
public int UpdateState(string boardbarcode,string status)
{
OracleConnection sc = GetConnection();
try
{
sc.Open();//打开到数据库的连接
OracleCommand cmd = new OracleCommand("update EQP_AUTO_AOI set BOARDSTATUS=:BOARDSTATUS where BoardBarcode=:BOARDSTATUS ", sc);//创建OracleCommand对象
OracleParameter par1 = new OracleParameter(":BOARDSTATUS", status);
OracleParameter par = new OracleParameter(":BOARDBARCODE", boardbarcode);
cmd.Parameters.Add(par1);
cmd.Parameters.Add(par);
int result = cmd.ExecuteNonQuery();//运行sql语句
return result;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return 0;
}
finally
{
if (sc.State == ConnectionState.Open)//判断是否连接数据库
{
sc.Close();//如果已经连接则关闭连接
}
}
}
修改之后运行成功。
这个长时间没有注意这个问题,很容易忽略,需要记下,参考。