【发布时间】:2012-08-07 10:10:37
【问题描述】:
我目前正在将控制器类与数据访问层类(UserDAL 类)结合使用,以便对数据库进行更改。但是我知道我的代码很容易出错,因为我没有使用参数化查询。
我从示例中看到了如何使用命令对象来使用查询。但是,我使用的 OracleDataAdapter 的行为似乎有点不同。它也与将参数化的实际值处于不同的类中,如以下代码部分所示:
控制器代码,其中三个字符串由用户输入的字段填充:
string usrName = mod.UserName;
string role = mod.Role;
string mod.actvInd;
string sql = "UPDATE LD_USER_ROLE" + " SET USERNAME='" + usrName + "', ROLE='" + role + "', ACTIVE_IND='" + actvInd + "' WHERE USER_ROLE_ID=" + id + "";
UserRoleDAL udl = new UserRoleDAL();
udl.ExecuteQuery(sql);
UserDAL 类:
public class UserRoleDAL
{
private OracleConnection conn;
public UserRoleDAL()
{
string oradb = ConfigurationManager.ConnectionStrings["db_dbConnectionString"].ConnectionString;
conn = new OracleConnection(oradb);
}
public void ExecuteQuery(string sql)
{
conn.Open();
OracleDataAdapter adapter = new OracleDataAdapter(sql, conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
conn.Close();
}
}
如何对 OracleDataAdapter 对象使用参数化查询,我是否必须合并上述类,甚至将字段传递到 UserRoleDAL 对象中才能做到这一点?
【问题讨论】:
-
OracleDataAdapter 已经过时了,你为什么还在用它?
-
@habib 我应该改用什么?我正在使用 ODP.Net 连接到 Oracle 数据库
-
您可以将 OracleCommand 与参数一起使用,并将其与 OracleDataAdapter 一起使用。我不确定是否要更换 OracleDataAdapter
标签: c# database asp.net-mvc-3 oracle