修改where子句使用Oracle命令参数
本文关键字:Oracle 命令 参数 where 子句 修改 | 更新日期: 2023-09-27 18:18:07
我目前正在创建web API来接受一个输入参数,并在where子句中的特定字段中使用它们。下面是服务
的代码 public HttpResponseMessage Getdetails( string JRS_NO,string DOB)
{
List<OracleParameter> prms = new List<OracleParameter>();
List<string> selectionStrings = new List<string>();
var jrs ="";
var dateofBirth="";
string connStr = ConfigurationManager.ConnectionStrings["TGSDataConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
DataSet userDataset = new DataSet();
var strQuery = "SELECT * from LIMS_SAMPLE_RESULTS_VW where JRS_NO =:jrs and DOB=:dateofBirth";
jrs = JRS_NO;
dateofBirth = DOB;
prms.Add(jrs);
prms.Add(dateofBirth);
我如何在这里使用OracleParameter而不是在查询中直接给出它们。我已经为命令参数创建了prms,但不确定如何继续。
你在代码中犯了多个错误。我在为你写代码,剩下的你自己修。
string jrs = "";
string dateofBirth = "";
string connectionString = ConfigurationManager.ConnectionStrings["TGSDataConnection"].ConnectionString;
using (OracleConnection connection = new OracleConnection(connectionString))
{
string query = "SELECT * from LIMS_SAMPLE_RESULTS_VW where JRS_NO =:jrs and DOB=:dateofBirth";
OracleCommand command = new OracleCommand(query, connection);
command.Parameters.Add(new OracleParameter("jrs", jrs));
command.Parameters.Add(new OracleParameter("dateofBirth", dateofBirth));
command.CommandType = CommandType.Text;
connection.Open();
OracleDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
string value = reader["ColumName"].ToString();
}
}
finally
{
reader.Close();
}
}
不要用代码写查询,写存储过程,然后用代码调用。您必须使用ExecuteReader
才能从SELECT
查询中获得结果。用表中的列名替换ColumName
。不要在参数前使用@
,在参数前使用:
。检查连接字符串是否正确。您可以在Oracle DB中单独运行查询,以测试您的查询是否给出所需的结果。检查jrs
和dateOfBirth
的数据类型,在我的例子中,我已经采取了字符串。关闭最后块中的Reader
。我个人的意见是,不要使用SELECT *
,总是使用列名。因为它会给你所有的列,可能你只需要2或3。