2016-12-09 4 views
0

私は自分のデータベースに値を挿入するためのこの機能を作っています。それは前に働いていた。私が変更した唯一のことは、入力を処理するためのパラメータを追加することです。今私がそれを使用しようとすると、私はこのエラーを受け取ります:SQLite error (1): near "@valuesParam": syntax error私のSQLiteParametersで何が問題になっていますか?

下記の私のコードを参照してください。私は間違って何をしていますか?

// Inserts value(s) into colum(s) of a certain table in the database. 
    public void InsertToDatabase(string table, string columns, string values) 
    { 
     using (SQLiteConnection dbConnection = new SQLiteConnection(conString)) 
     { 
      dbConnection.Open(); 

      using(SQLiteCommand insertionCommand = new SQLiteCommand(dbConnection)) 
      { 
       insertionCommand.CommandText = "INSERT INTO " + table + " (" + columns + ") VALUES @valuesParam"; 
       insertionCommand.Parameters.AddWithValue("@valuesParam", values); 
       insertionCommand.ExecuteNonQuery(); 
      } 
     } 
    } 
+1

タブ名にパラメータを使用することはできません。入力するだけです。パラメータは値のみであり、テーブル名や列名ではありません。 – Pikoh

+0

ああ私は知らなかった、私はそんな初心者です。ありがとう!同様に意味をなさない。 –

+0

@Pikohテーブル名とカラム名のパラメータを削除しましたが、それでも失敗します。 –

答えて

0

@valuesParamはあなたのコマンドで、括弧ではない... しかし私はむしろあなたが例として

を列挙すべきであるリストとして、インサートの値を渡します。

public void InsertToDatabase(string table, string columns, List<string> values) 
    { 
     using (SQLiteConnection dbConnection = new SQLiteConnection(conString)) 
     { 
      dbConnection.Open(); 

      using (SQLiteCommand insertionCommand = new SQLiteCommand(dbConnection)) 
      { 
       insertionCommand.CommandText = "INSERT INTO " + table + " (" + columns + ") VALUES ("; 
       for (int i=0;i<values.Count;i++) 
       { 
        //add in the parameter to the insert command 
        insertionCommand.CommandText += "@val" + i.ToString() + ","; 
       //add the parameter 
        insertionCommand.Parameters.AddWithValue("@val"+i.ToString(), values[i]); 
       } 
       //remove the last comma from the insert command and add a bracket 
       insertionCommand.CommandText = insertionCommand.CommandText.Substring(0, insertionCommand.CommandText.Length - 1); 
       insertionCommand.CommandText+=")"; 

       insertionCommand.ExecuteNonQuery(); 
      } 
     } 
    } 

    //this is the dummy function to show how to populate the list to pass as the values 
    public void UseInsert() 
    { 
     List<string> insertValues = new List<string> { }; 
     insertValues.Add("Bruce"); 
     insertValues.Add("Wayne"); 

     InsertToDatabase("people", "Name,Surname", insertValues); 
    } 
+0

これは、データベースに挿入する値ごとにパラメータを追加する必要があることを意味しますか?そうでなければ、私は6列に対して1つの値しか提供しないというエラーが表示されます。 –

+0

いいえ、値のリストを渡すだけです。 – Arkaine80

+0

私の投稿を編集します。あなたを混乱させないようにしてください。しかし、dbConnection.Open();およびinsertionCommand.ExecuteNonQuery(); – Arkaine80

関連する問題