2017-02-09 8 views
0

whileループを使用してリストからテーブルに挿入しようとしています。私はループして、リストの各項目をインデックスで書きたいと思っています。挿入しようとしている値にエラーが発生しています。whileループを使用してテーブルに挿入

"SQLロジックエラーまたは欠落しているデータベースの近くに "[Y]":構文エラー"

while (y < Name.Count) 
{ 
    cmd.CommandText = "INSERT INTO Mytable(Column1,Column2) values(Column1[y], Column2[y])"; 
    cmd.ExecuteNonQuery(); 
    y++; 
} 
+0

これは、変数yではなく文字リテラル文字 'y'を使用しているためです。それらの場所に文字列書式を挿入する必要があります。 –

答えて

1

質問が正しくありません。あなたは、クエリにパラメータを渡す必要があります。

"INSERT INTO Mytable(Column1,Column2) values(Column1[@Column1], Column2[@Column1])" 

command.Parameters.Add(new SqlParameter("@Column1", y)); 

は私があなただったら、私はこのためにBulk Insert(または類似したもの)を使用し、1回の旅行でデータベースにすべてのデータを転送するだろう、と述べました。

+0

これはまだSQLite DBで動作しますか? –

+0

@BrettMinster私の編集をご覧ください。 – CodingYoshi

-1

あなたのパラメータ、列1 [Y]と列2 [Y]は、データへのインデックスとして扱われていません構造体ではなくプレーンテキストです。

cmd.CommandText = "INSERT INTO Mytable(Column1,Column2) values(" + Column1[y] + ", " + Column2[y] + ")"; 
+0

メソッド 'String.Format'が利用可能であり、望ましいかもしれないことに注意してください。https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx http ://stackoverflow.com/questions/4671610/why-use-string-format –

+0

これは私をより近づけました。今度はエラー "System.Data.SQLite.SQLiteException:SQLロジックエラーまたはデータベースがありません そのような列はありません:"名前 –

+0

Column1とColumn2を値を設定するテーブルの正確な列名に置き換えます。 ..あなたは存在しない列 "名前"をマップしようとしているようです...ここにいくつかの例があります:https://www.tutorialspoint.com/sqlite/sqlite_insert_query.htm –

関連する問題