Изменение предложения where для использования параметра команды Oracle
В настоящее время я создаю веб-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);
Вместо того, чтобы давать их непосредственно в Query, как я могу использовать OracleParameter здесь. Я создал prms для параметра команды, но не уверен, как поступить с этим.
1 ответ
Вы делаете несколько ошибок в своем коде. Я пишу код для вас, но остальное вы должны исправить.
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.