0

我目前正在创建 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,但不知道如何继续。

4

1 回答 1

2

您在代码中犯了多个错误。我正在为你编写代码,但剩下的你必须修复。

        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();
            }
        }

不要在代码中编写查询,编写存储过程然后通过代码调用它。您必须使用ExecuteReaderSELECT查询中获取结果。替换ColumName为您在表中的列名。不要@与参数一起使用,:在它们之前使用。检查您的连接字符串是否正确。您可以在 Oracle DB 中单独运行查询,以测试您的查询是否给出了所需的结果。检查 and 的 DataType jrsdateOfBirth在我的示例中,我将其作为字符串。Reader在 finally 块中关闭。我个人的意见,不要使用SELECT *,总是使用列名。因为它会给你所有的列,可能你只需要 2 或 3 个。

于 2016-11-16T13:50:40.363 回答