更改where子句以使用Oracle命令参数

时间:2016-11-16 13:05:02

标签: c# asp.net asp.net-web-api commandparameter

我目前正在创建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);

不是直接在Query中提供它们,而是如何在这里使用OracleParameter。我已经为命令参数创建了prms,但不知道如何继续使用它。

1 个答案:

答案 0 :(得分:2)

您在代码中犯了多个错误。我正在为你编写代码,但你需要修复它。

"n"

不要在代码中编写查询,编写存储过程然后通过代码调用它。 您必须使用 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的数据类型,在我的示例中,我将其作为字符串。 在finally块中关闭dateOfBirth。 我个人认为,不要使用Reader,总是使用列名。因为它会给你所有列,可能你只需要2或3。