2012-01-10 9 views
0

新しいプロジェクト用に作成したSQLiteテーブルがあります。SQLiteException "@ Param1"構文エラーの近くのSQLiteエラー

public const string SQL_CREATE = "CREATE TABLE Tanks " + 
    "(LocID INTEGER, InUse INTEGER, Text1 TEXT, Description1 TEXT);"; 

public const string SQL_INSERT = "INSERT INTO Tanks " + 
    "(LocID, InUse, Text1, Description1) " + 
    "VALUES " + 
    "@LocID, @InUse, @Text, @Description); "; 

私はテーブルに私の最初の値を保存しようとするたびに、私は「近くSQLiteのエラー」役に立たないメッセージを、取得:

テーブルのは、次のようにコマンドが定義されていとINSERTをCREATE @LocID "構文エラー。"ここで

は私の挿入ルーチンです:

public static Tank New(Tank tank) { 
    tank.Result = 0; 
    using (SQLiteConnection con = GetConnection) { 
    try { 
     con.Open(); 
     using (SQLiteCommand cmd = new SQLiteCommand(Tank.SQL_INSERT, con)) { 
     cmd.Parameters.AddWithValue("@LocID", tank.LocationID); // = 1 
     cmd.Parameters.AddWithValue("@InUse", tank.InUse); // = 1 (for true) 
     cmd.Parameters.AddWithValue("@Text", tank.Text); // says "New Tank" 
     cmd.Parameters.AddWithValue("@Description", DBNull.Value); // I've tried "New Tank" and DBNull.Value 
     try { 
      tank.Result = cmd.ExecuteNonQuery(); 
     } catch (SQLiteException err) { 
      tank.Result = -1; 
      LogError("New(Tank)", err); 
      throw err; 
     } 
     } 
    } finally { 
     con.Close(); 
    } 
    } 
    return tank; 
} 

私はインデックスを使用してデータベースを作成していないと私はインデックス値を挿入するわけではないドキュメントが言うので:「すべてのテーブルのすべての行が64を持っていますビット整数ROWIDに署名した。それぞれの行のROWIDが同じテーブル内のすべての行の中で一意である。「少しさらにダウン同じページに、それは言う、」にはROWIDをインサートに指定されていない場合、または指定されたROWID場合値がNULLの場合、適切なROWIDが自動的に作成されます。 "ソース:sqlite.org/autoinc

ExecuteNonQuery()にエラーがスローされます。

どうしたのですか?

のWindows Mobile 5(ポケットPC)をターゲットに、win7ののVisual Studio 2008(C#)とでSQLiteの3を使用しました。

+2

まず、値の後にInsertステートメントを見てください。値(、、、)はあなたが渡しているパラメータの値です。タンクの構造も同じであることを示してください。 – MethodMan

答えて

4

あなたはSQL_INSERT文字列に@LocID前に左括弧を逃しています。

public const string SQL_INSERT = "INSERT INTO Tanks " + 
    "(LocID, InUse, Text1, Description1) " + 
    "VALUES " + 
    "(@LocID, @InUse, @Text, @Description); "; 
+0

男私はNoobieのような間違いが嫌いです。 – jp2code

2

あなたの欠けている(

public const string SQL_INSERT = "INSERT INTO Tanks " + 
"(LocID, InUse, Text1, Description1) " + 
"VALUES " + 
"(@LocID, @InUse, @Text, @Description); "; 
+0

クラップ、クラップ、クラップ!私はその問題について長い間苦労しているとは信じられません。 – jp2code

関連する問題