SQL CE 3.5 - запись в базу данных - PullRequest
0 голосов
/ 29 июля 2010

Я пытаюсь записать в базу данных, я работаю на следующем сайте . В частности, функция LoadARow.

Я получил ошибку во время выполнения

"System.IndexOutOfRangeException: SqlCeParameter с ParameterName 'Value' не содержится в этой SqlCeParamaterCollection.

Ошибка ссылается на строку "command.Parameters [" @ Value "]. Value = num;". База данных, которую я использую, имеет в качестве ключа столбец Значение и текстовый столбец.

using (SqlCeConnection connect = new SqlCeConnection("Data Source=C:\\Users\\mike\\Documents\\database.sdf"))
{
  connect.Open();

  string text = "test";
  int num = 0;

  using (SqlCeCommand command = new SqlCeCommand("insert into Data Table values (@Value, @Text)", connect))
  {
    command.Parameters.Add("@Text", SqlDbType.NVarChar);
    command.Parameters["@Value"].Value = num;
    command.Parameters.AddWithValue("@Text", text);
    command.ExecuteNonQuery();
  }
}

Ответы [ 2 ]

2 голосов
/ 29 июля 2010

Попробуйте:

using (SqlCeConnection connect = new SqlCeConnection("Data Source=C:\\Users\\mike\\Documents\\database.sdf"))
    {
        connect.Open();

        string text = "test";
        int num = 0;

        using (SqlCeCommand command = new SqlCeCommand("insert into Data Table values (@Value, @Text)", connect))
        {
           command.Parameters.Add("@Value", SqlDbType.NVarChar, num);
           command.Parameters.Add("@Text", SqlDbType.NVarChar, text);
           command.ExecuteNonQuery();
        }
    }
1 голос
/ 29 июля 2010

Строка:

command.Parameters.Add("@Text", SqlDbType.NVarChar); 

должна выглядеть следующим образом:

command.Parameters.Add("@Value", SqlDbType.NVarChar); 

В этой точке вы еще не определили переменную, поэтому следующая строка вышла из индекса.Я уверен, что это опечатка, поскольку вы определили @Text после строки.

...