2016-03-05 10 views
1

Вот код метода, который я создаю:Вставка несколько значений параметров в SQLite таблицы с помощью C#

public void writeIt(string inputText, bool fasting) 
    { 
     var dbConnect = new SQLiteConnection("Data Source=database.sqlite;Version=3;"); 
     dbConnect.Open(); 
     using (SQLiteTransaction insertTrans = dbConnect.BeginTransaction()) 
     { 
      using (SQLiteCommand insertCommand = new SQLiteCommand(dbConnect)) 
      { 
       SQLiteParameter resultEntry = new SQLiteParameter(); 
       insertCommand.CommandText = "INSERT INTO result(testResult, fasting) VALUES(@param1, @param2)"; 
       insertCommand.Parameters.Add(new SQLiteParameter("@param1", System.Data.SqlDbType.VarChar).Value = inputText); 
       if(fasting) 
       { 
        insertCommand.Parameters.Add(new SQLiteParameter("@param2", System.Data.SqlDbType.Int).Value = "1"); 
       } 
       else 
       { 
        insertCommand.Parameters.Add(new SQLiteParameter("@param2", System.Data.SqlDbType.Int).Value = "0"); 
       } 
       insertCommand.ExecuteNonQuery(); 
      } 
      insertTrans.Commit(); 
     } 

Я использую официальный движок базы данных SQLite (если это имеет значение). В настоящее время ошибка, которая показывает, когда я пытаюсь для хранения данных говорит следующее

«Не удалось привести объект типа„System.String“к типу „System.Data.SQLite.SQLiteParameter“» на линии " insertCommand.Parameters.Add (новый SQLiteParameter ("@ param1", System.Data.SqlDbType.VarChar) .Value = inputText); ".

Я открыто (и свободно) признаю, что я не совсем уверен, как это решить, поскольку я новичок, и это мой второй проект любого значения.

Благодарим вас за вашу доброту заранее.

ответ

0

Когда вы вызываете Add method of the DbParameterCollection (базовый класс за SQLiteParameterCollection), передавая объект DbParameter, возвращаемое значение представляет собой Integer, а не DbParameter, только что добавленный в коллекцию.
Таким образом, вы не можете использовать возвращаемое значение, поскольку это был DbParameter, и попытайтесь установить свойство Value.

Вместо этого вы должны использовать Добавить перегрузку, которая принимает имя и тип параметра. Это возвращает объект DbParameter и, таким образом, вы могли бы написать:

insertCommand.Parameters.Add("@param1", System.Data.SqlDbType.VarChar).Value = inputText; 
if(fasting) 
{ 
    insertCommand.Parameters.Add("@param2", System.Data.SqlDbType.Int).Value = 1; 
} 
else 
{ 
    insertCommand.Parameters.Add("@param2", System.Data.SqlDbType.Int).Value = 0; 
} 

Вы создаете параметр целого типа, так установите его значение в целое не в строку

+1

Ваш намек решен вопрос. Чтобы быть ясным (для других возможных читателей): insertCommand.Parameters.Add ("@ param1", System.Data.DbType.String) .Value = inputText; теперь позволяет мне вставлять в базу данных. Благодарю вас, это озадачило это около месяца. –

 Смежные вопросы

  • Нет связанных вопросов^_^