有一个物理表AAATest,包含3各字段( a varchar2 , b number , c data )
执行Insert没有问题,但是Update就出现数据类型错误:
/////////////////////////下面Insert 语句正常//////////////////////////////////////////////
OracleCommand com = connect.CreateCommand();
com.CommandType = CommandType.Text;
com.CommandText ="insert into aaatest(a,b,c) values(:a ,:b , :c )";
//请替换OracleDbType.Varchar2参数
....连接到数据库省略
OracleParameter paramA = com.Parameters.Add(":a", OracleDbType.Varchar2 ,ParameterDirection.Input);
paramA.Value = "abc';OracleParameter paramB = com.Parameters.Add(":b", OracleDbType.Decimal ,ParameterDirection.Input);
paramB.Value = 11.11OracleParameter paramC = com.Parameters.Add(":c", OracleDbType.Decimal ,ParameterDirection.Input);
paramC.Value = DateTime.Now;com.ExecuteNonQuery();
//////////////////// 下面Update 更新语句 失败////////////////////////////错误消息是ORA-00932: 不一致的数据类型:
OracleCommand com = connect.CreateCommand();
com.CommandType = CommandType.Text;
com.CommandText ="update aaatest set d=:d ,c=:c where a=:a ";OracleParameter paramA = com.Parameters.Add(":a", OracleDbType.Varchar2 ,ParameterDirection.Input);
paramA.Value = "abc";OracleParameter paramB = com.Parameters.Add(":b", OracleDbType.Decimal ,ParameterDirection.Input );
param2.Value =212.1M ;
OracleParameter paramData = com.Parameters.Add(":c", OracleDbType. ,ParameterDirection.Input);
paramData.Value = DateTime.Now;
int updateCountRow = com.ExecuteNonQuery();//发生错误
执行Insert没有问题,但是Update就出现数据类型错误:
/////////////////////////下面Insert 语句正常//////////////////////////////////////////////
OracleCommand com = connect.CreateCommand();
com.CommandType = CommandType.Text;
com.CommandText ="insert into aaatest(a,b,c) values(:a ,:b , :c )";
//请替换OracleDbType.Varchar2参数
....连接到数据库省略
OracleParameter paramA = com.Parameters.Add(":a", OracleDbType.Varchar2 ,ParameterDirection.Input);
paramA.Value = "abc';OracleParameter paramB = com.Parameters.Add(":b", OracleDbType.Decimal ,ParameterDirection.Input);
paramB.Value = 11.11OracleParameter paramC = com.Parameters.Add(":c", OracleDbType.Decimal ,ParameterDirection.Input);
paramC.Value = DateTime.Now;com.ExecuteNonQuery();
//////////////////// 下面Update 更新语句 失败////////////////////////////错误消息是ORA-00932: 不一致的数据类型:
OracleCommand com = connect.CreateCommand();
com.CommandType = CommandType.Text;
com.CommandText ="update aaatest set d=:d ,c=:c where a=:a ";OracleParameter paramA = com.Parameters.Add(":a", OracleDbType.Varchar2 ,ParameterDirection.Input);
paramA.Value = "abc";OracleParameter paramB = com.Parameters.Add(":b", OracleDbType.Decimal ,ParameterDirection.Input );
param2.Value =212.1M ;
OracleParameter paramData = com.Parameters.Add(":c", OracleDbType. ,ParameterDirection.Input);
paramData.Value = DateTime.Now;
int updateCountRow = com.ExecuteNonQuery();//发生错误
/// <summary>
/// 新增
/// </summary>
/// <returns>影响记录数量</returns>
public int Insert(DataAAATest p_DS ,string pOperateUserID , OracleConnection pConnect)
{
OracleConnection connect = pConnect;
if(connect == null )
{
connect = ConfigOracle.GreateConnect();
}
OracleCommand com = connect.CreateCommand();
com.CommandType = CommandType.Text;
com.CommandText ="insert into aaatest(a,b,c,d,e) values(:a ,:b , :c , :d ,:e )"; //请替换OracleDbType.Varchar2参数
OracleParameter param1 = com.Parameters.Add(":a", OracleDbType.Varchar2 ,ParameterDirection.Input);
param1.Value = p_DS.AAATEST[0].A; OracleParameter param2 = com.Parameters.Add(":b", OracleDbType.Decimal ,ParameterDirection.Input);
param2.Value = p_DS.AAATEST[0].B; OracleParameter paramData = com.Parameters.Add(":c", OracleDbType.Date ,ParameterDirection.Input);
paramData.Value = p_DS.AAATEST[0].C; OracleParameter paramD = com.Parameters.Add(":d", OracleDbType.Clob ,ParameterDirection.Input);
paramD.Value = p_DS.AAATEST[0].D; OracleParameter param5 = com.Parameters.Add(":e", OracleDbType.Blob ,ParameterDirection.Input);
param5.Value = p_DS.AAATEST[0].E;
if(pConnect == null)
{
connect.Open();
}
int updateCountRow = com.ExecuteNonQuery();
if(pConnect != null)
{
connect.Close();
}
return updateCountRow;
} /// <summary>
/// 更新
/// </summary>
/// <returns>影响记录数量</returns>
public int Update( DataAAATest p_DS ,string pOperateUserID , bool pIsTimestamp ,OracleConnection pConnect )
{
OracleConnection connect = pConnect;
if(connect == null )
{
connect = ConfigOracle.GreateConnect();
}
OracleCommand com = connect.CreateCommand();
com.CommandType = CommandType.Text;
//e=EMPTY_BLOB()
com.CommandText ="update aaatest set b = :b ,c = :c where a=:a ";
//请替换OracleDbType.Varchar2参数
OracleParameter parama = com.Parameters.Add(":a", OracleDbType.Varchar2 ,ParameterDirection.Input);
parama.Value = p_DS.AAATEST[0].A;
//
OracleParameter paramb = com.Parameters.Add(":b", OracleDbType.Decimal ,ParameterDirection.Input );
paramb.Value =212.1M ;
OracleParameter paramC = com.Parameters.Add(":c", OracleDbType.Date ,ParameterDirection.Input);
paramC.Value = DateTime.Now; param5.Value = p_DS.AAATEST[0].E;
if(pConnect == null)
{
connect.Open();
}
int updateCountRow = com.ExecuteNonQuery();
if(pConnect != null)
{
connect.Close();
}
return updateCountRow; }