OracleDataAdapter的设置错误,现在不能实现删除,请看我这段代码有什么问题...急,在线等
public static OracleDataAdapter CreateCustomerAdapter(OracleConnection conn)
{
OracleDataAdapter da = new OracleDataAdapter();
OracleCommand cmd;
OracleParameter parm1;
OracleParameter parm2;
OracleParameter parm3;
// Create the SelectCommand.
cmd = new OracleCommand("select * from tn_t_2M_perf_valve", conn);
da.SelectCommand = cmd;
// Create the UpdateCommand.
cmd = new OracleCommand("UPDATE tn_t_2M_perf_valve SET PURPOSE = :p1, PROTOCOLLEVEL = :p2, PARAMETERINEN = :p3, PARAMETERINCN = :p4, PARAMETEROPERATOR = :p5, PERF_VALUE = :p6, PERF_UNIT = :p7, ALARMLEVEL = :p8" +
" WHERE PURPOSE = :p1old AND PROTOCOLLEVEL = :p2old AND PARAMETERINEN = :p3old" , conn);
cmd.Parameters.Add("p1", OracleType.VarChar, 12, "PURPOSE");
cmd.Parameters.Add("p2", OracleType.Number, 2, "PROTOCOLLEVEL");
cmd.Parameters.Add("p3", OracleType.VarChar, 40, "PARAMETERINEN");
cmd.Parameters.Add("p4", OracleType.VarChar, 40, "PARAMETERINCN");
cmd.Parameters.Add("p5", OracleType.VarChar, 3, "PARAMETEROPERATOR");
cmd.Parameters.Add("p6", OracleType.Number, 2, "PERF_VALUE");
cmd.Parameters.Add("p7", OracleType.VarChar, 10, "PERF_UNIT");
cmd.Parameters.Add("p8", OracleType.VarChar, 10, "ALARMLEVEL");
parm1 = cmd.Parameters.Add("p1old", OracleType.VarChar, 12, "PURPOSE");
parm1.SourceVersion = DataRowVersion.Original;
parm2 = cmd.Parameters.Add("p2old", OracleType.Number, 2, "PROTOCOLLEVEL");
parm2.SourceVersion = DataRowVersion.Original;
parm3 = cmd.Parameters.Add("p3old", OracleType.VarChar, 40, "PARAMETERINEN");
parm3.SourceVersion = DataRowVersion.Original;
da.UpdateCommand = cmd;
// Create the DeleteCommand.
cmd = new OracleCommand("DELETE tn_t_2M_perf_valve " +" WHERE PURPOSE = :p1old AND PROTOCOLLEVEL = :p2old AND PARAMETERINEN = :p3old", conn);
parm1 = cmd.Parameters.Add("p1old", OracleType.VarChar, 12, "PURPOSE");
parm1.SourceVersion = DataRowVersion.Original;
parm2 = cmd.Parameters.Add("p2old", OracleType.Number, 2, "PROTOCOLLEVEL");
parm2.SourceVersion = DataRowVersion.Original;
parm3 = cmd.Parameters.Add("p3old", OracleType.VarChar, 40, "PARAMETERINEN");
parm3.SourceVersion = DataRowVersion.Original;
da.DeleteCommand = cmd;
return da;
}
编译通过,运行也正常,就是不能实现删除
测试代码如下
OracleConnection conn = new OracleConnection(connectionString);
OracleDataAdapter adapter = CreateCustomerAdapter( conn );
adapter.Fill(m_dt);
m_dt.Rows.RemoveAt(2);
int n = m_dt.Rows.Count;
try
{
adapter.Update(m_dt);
}
catch( OracleException ex )
{
MessageBox.Show(ex.Message);
}
m_dt.Clear();
adapter.Fill(m_dt);
if( m_dt.Rows.Count == n )
MessageBox.Show("success!");
else
MessageBox.Show("fail!");