asp.net在Oracle10g停Update参数化执行无效
asp.net在Oracle10g下Update参数化执行无效
如题:
1、使用的是10g自带的Oracle.DataAccess.dll文件
2、如果直接使用拼凑字符串的方式拼凑Update语句,执行成功
3、使用参数化后执行不报错,但是没有修改成功
分析:既然参数化Update没有报错,在ExecuteCommand方法的flag = command.ExecuteNonQuery();中,应该是Update语句
执行了,但是Where条件没有起作用还是怎么的,导致的Update没有更新任何数据,请有处理过相关情况的大虾指点
下
贴上相关代码:
如题:
1、使用的是10g自带的Oracle.DataAccess.dll文件
2、如果直接使用拼凑字符串的方式拼凑Update语句,执行成功
3、使用参数化后执行不报错,但是没有修改成功
分析:既然参数化Update没有报错,在ExecuteCommand方法的flag = command.ExecuteNonQuery();中,应该是Update语句
执行了,但是Where条件没有起作用还是怎么的,导致的Update没有更新任何数据,请有处理过相关情况的大虾指点
下
贴上相关代码:
public static int Update(MacInfo model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update MacInfo set ");
strSql.Append("Mac_Address=:Mac_Address,");
strSql.Append("Mac_Status=:Mac_Status");
strSql.Append(" where MacInfo_ID=:MacInfo_ID");
//strSql.Append("Mac_Address='"+model.Mac_Address+"',");//拼凑Update字符串是可以执行成功的
//strSql.Append("Mac_Status="+model.Mac_Status);
//strSql.Append(" where MacInfo_ID='"+model.MacInfo_ID+"'");
OracleParameter[] parameters = {
new OracleParameter(":MacInfo_ID", OracleDbType.Varchar2,17),
new OracleParameter(":Mac_Address", OracleDbType.Varchar2,17),
new OracleParameter(":Mac_Status", OracleDbType.Int32,4)};
parameters[0].Value = model.MacInfo_ID;
parameters[1].Value = model.Mac_Address;
parameters[2].Value = model.Mac_Status;
int result = DBHelper.ExecuteCommand(strSql.ToString(), CommandType.Text,parameters);
return result;
}
public static int ExecuteCommand(string queryString, CommandType commandType, params OracleParameter[] param)
{
int flag = 0;
using(OracleConnection con = new OracleConnection(ConnectionString))
{
OracleCommand command = new OracleCommand(queryString, con);
command.CommandType = commandType;
if(param != null)
{
for(int i = 0; i < param.Length; i++)
{
command.Parameters.Add(param[i]);