2016-12-25 4 views
1

Ошибка Возвращается:«Нет значения для одного или нескольких требуемых параметров». Доступ C# Простой Выберите

«Ни одно значение не дано для одного или нескольких параметров, необходимых»

Строковый массив для передачи функции:

String[,] arrParams = new String[1, 2] { 
         {"@ToUpper_user_id", id} 
       }; 

Значение ID:

"test" (without the quotes) 

SQL:

strSQL = "select * from users where ToUpper_user_id = ?;"; 

SQL Вызов функции:

if (jdb.getdb_data(strSQL, arrParams, strTableName, out dsGet, out strTechMessage)) 
{ 
    ... 
} 

Функция, которая требует, чтобы получить данные из БДА:

public static bool getdb_data(String strSQL, String[,] arrParams, String strTableName, out DataSet dsGet, out String strTechMessage) 
    { 
     bool boolRC = true; 
     String key = String.Empty; 
     String val = String.Empty; 

     dsGet = new DataSet(); 
     strTechMessage = String.Empty; 
     String strSQL_Empty = String.Empty; 

     string connectionString = jdb.getConnString(); 

     using (OleDbConnection connection = 
      new OleDbConnection(connectionString)) 
     { 
      OleDbCommand command = new OleDbCommand(strSQL, connection); 

      if (arrParams.GetLength(0) > 0) 
      { 
       for (int i = 0; i < arrParams.GetLength(0); i++) 
       { 
        for (int j = 0; j < arrParams.GetLength(1); j++) 
        { 
         if (j.Equals(0)) { key = arrParams[i, j]; } 
         if (j.Equals(1)) { val = arrParams[i, j]; } 
        } 

        command.Parameters.AddWithValue(key, val); 
       } 
      } 
      else 
      { 
       boolRC = false; 
       strTechMessage = "No parameters found"; 
      } 

      // Open the connection in a try/catch block. 
      // Create and execute the DataReader, writing the result 
      // set to the console window. 
      if (boolRC) 
      { 
       try 
       { 
        connection.Open(); 

        OleDbDataAdapter adapter = new OleDbDataAdapter(strSQL, connection); 

        adapter.Fill(dsGet, strTableName); 
       } 
       catch (Exception ex) 
       { 
        boolRC = false; 
        strTechMessage = ex.Message; 
       } 
      } 

     } 

     return boolRC; 
    } 

Пожалуйста, помогите - Я думаю, что я иду с умом! (.... CRUD Update все работы с параметрами просто выберите код дает мне ошибку)

+1

У вас действительно есть столбец с именем точно ToUpper_user_id? – Steve

+0

После того, как вы исправите это, я вижу ошибку несоответствия типа datatype в вашем будущем. – Plutonix

ответ

0

В "get_dbdata (...)" выше, я должен был бы:

OleDbDataAdapter adapter = new OleDbDataAdapter(command); 

вместо:

OleDbDataAdapter adapter = new OleDbDataAdapter(strSQL, connection); 

в коде, как SQL и параметры уже были добавлены к команде выше.

Работы сейчас!