0

現在、1 つの入力パラメーターを受け入れる 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();
            }
        }

コードでクエリを記述しないでください。ストアド プロシージャを記述してから、コードで呼び出します。クエリExecuteReaderから結果を取得するために使用する必要があります。テーブル内の列名にSELECT置き換えます。引数と一緒にColumName使用しないでください。それらの前に使用してください。接続文字列が正しいかどうかを確認してください。クエリが必要な結果を提供しているかどうかをテストするためだけに、Oracle DB でクエリを個別に実行できます。との DataType を確認してください。私の例では、文字列として取りました。finally ブロックで閉じます。私の個人的な意見では、 は使用せず、常に列名を使用してください。すべての列が表示されるため、2 つまたは 3 つしか必要ない場合があります。@:jrsdateOfBirthReaderSELECT *

于 2016-11-16T13:50:40.363 に答える