请先看下面两个简单的函数// 该函数无错误,无异常,但是无法更新数据库中的内容
static void UpdateWithParam(TBDATASOURCEATTRS db) {
try {
OracleConnection conn = new OracleConnection(GetConnectString());
OracleCommand cmd = new OracleCommand();
cmd.Connection=conn;
conn.Open();
cmd.Parameters.Add(new OracleParameter("DSID", db.DSID));
cmd.Parameters.Add(new OracleParameter("DSNAME", db.DSNAME));
cmd.Parameters.Add(new OracleParameter("DSREMARK", db.DSREMARK));
cmd.Parameters.Add(new OracleParameter("DSTITLE", db.DSTITLE));
cmd.Parameters.Add(new OracleParameter("DTID", db.DTID));
cmd.CommandText="UPDATE \"HY-WYH\".\"TB_DATASOURCE_ATTRS\" SET \"DS_NAME\" = :DSNAME, \"DS_REMARK\" = :DSREMARK, \"DS_TITLE\" = :DSTITLE, \"DT_ID\" = :DTID WHERE \"DS_ID\" = :DSID";
int res = cmd.ExecuteNonQuery(); } catch(Exception e) {
Console.WriteLine(e.ToString());
}
}
// 该函数可以正常工作
static void UpdateWithSql(TBDATASOURCEATTRS db) {
try {
OracleConnection conn = new OracleConnection(GetConnectString());
OracleCommand cmd = new OracleCommand();
conn.Open();
cmd.Connection=conn;
cmd.CommandText=string.Format("UPDATE \"HY-WYH\".\"TB_DATASOURCE_ATTRS\" SET \"DS_NAME\" ='{0}', \"DS_REMARK\"='{1}',\"DS_TITLE\"='{2}',\"DT_ID\"={3} WHERE \"DS_ID\"={4}",db.DSNAME,db.DSREMARK,db.DSTITLE,db.DTID,db.DSID); 
int res = cmd.ExecuteNonQuery();
} catch(Exception e) {
Console.WriteLine(e.ToString());
}
}使用的环境是VS2010, .Net4.0,
数据库信息如下
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod现在不解为什么使用参数传值时更新不成功?数据库databaseoracle.netOracleParemeter