我使用下面的代码插入数据 首先为什么我不能使用Parameters.AddWithValue(); ?? 和Parameters.AddWithValue和Parameters.Add之间的实际区别是什么?我已经进行了搜索,但每个人都说另一个人已经弃用,现在哪个人真的被弃用了?! 每个命名空间是什么?我知道使用Parameters.AddWithValue是Oracle.DataAccess;并且对于Parameters.Add使用System.data.oracle;
第二个为什么我在这条线上遇到错误时我没有发现任何问题
using (OracleCommand cmd =new OracleCommand(cmdstr,connstr))
最佳重载方法匹配 ' Oracle.DataAccess.Client.OracleCommand.OracleCommand(字符串, Oracle.DataAccess.Client.OracleConnection)'有一些无效的论点
参数2:无法转换为' string'至 ' Oracle.DataAccess.Client.OracleConnection'
Oracle.DataAccess.Client.OracleParameterCollection不包含 定义' AddWithValue'没有扩展方法' AddWithValue' 接受第一个类型的参数 ' Oracle.DataAccess.Client.OracleParameterCollection'可以找到 (您是否缺少using指令或程序集引用?)
public void connect_to_db()
{
string connstr = "Data Source=orcl;User Id=user;Password=pwd;";
string cmdstr = @"insert into customers
set (CUST_NAME)
values (:TB_CUST_NAME);";
using (OracleConnection conn = new OracleConnection(connstr))
using (OracleCommand cmd =new OracleCommand(cmdstr,connstr))
{
conn.Open();
cmd.Parameters.AddWithValue(":TB_CUST_NAME", TB_CUST_NAME);
cmd.ExecuteNonQuery();
}
}
答案 0 :(得分:1)
第一个错误是由于您传递的是connstr
(string
)而不是conn
(OracleConnection
)。改变这个:
using (OracleCommand cmd =new OracleCommand(cmdstr,connstr))
到此
using (OracleCommand cmd =new OracleCommand(cmdstr,conn))
至于第二个,OracleParameter
does not seem to need :
。使用示例:
OracleCommand oraCommand = new OracleCommand("SELECT fullname FROM sup_sys.user_profile
WHERE domain_user_name = :userName", db);
oraCommand.Parameters.Add(new OracleParameter("userName", domainUser));
似乎Oracle.DataAccess.Client
和System.Data.OracleClient
之间存在差异。 OracleParameterCollection.AddWithValue
似乎存在System.Data.OracleClient
。但是你使用Oracle.DataAccess.Client
。