2016-07-11 4 views
0

これでSQLサーバーとの接続が良好です。私は既に質問された質問を見て2時間を費やしました。私はかなり多くを試しました。 String.Formatから私のクエリと私は結論に私は複数のコメントからクエリをparametrizeする必要が来た。私はnvarchar型変数でテストし、それが動作します。私が持っている問題は、ビットとdatetimeの型を追加するときです。どちらが問題かわかりません。おそらくエラーメッセージ以来のビット1は、次のとおりです。SQL挿入パラメータ値bitまたはdatetime @variablenameの近くでエラー構文を取得しています

不適切な構文ビットパラメータここ

である

@Afficherの近くにされているコード:

using(SqlConnection conn = new SqlConnection(connexion)) 
      { 
       conn.Open(); 
       SqlCommand cmd = new SqlCommand(
       "INSERT INTO Actualite (Titre, Sous_titre, Contenu, Image, Vignette, Video, Date_publication, Afficher) " + 
       "VALUES (@Titre, @Sous_titre, @Contenu, @Image, @Vignette, @Video, @Date_publication, @Afficher", conn); 
       cmd.Parameters.Add(new SqlParameter("@Titre", "Ceci est un test")); 
       cmd.Parameters.Add(new SqlParameter("@Sous_titre", "Ceci est un test")); 
       cmd.Parameters.Add(new SqlParameter("@Contenu", "Ceci est un test, ça l'air à marcher")); 
       cmd.Parameters.Add(new SqlParameter("@Image", "minecraft.jpg")); 
       cmd.Parameters.Add(new SqlParameter("@Vignette", "vminecraft.jpg")); 
       cmd.Parameters.Add(new SqlParameter("@Video", "NULL")); 
       cmd.Parameters.Add(new SqlParameter("@Date_publication", SqlDbType.DateTime)).Value = DateTime.Now; 
       cmd.Parameters.Add(new SqlParameter("@Afficher", SqlDbType.Bit)).Value = 1; 
       cmd.ExecuteNonQuery(); 
      } 

Iは1と真を使用して試してみましたパラメータ値として使用してもエラーは発生します。私の頭が爆発しようとしています...

+5

あなたの挿入を文は値節の最後に閉じ括弧がありません... –

+0

はい、エラーメッセージはそれよりも具体的ではありません...私は恥ずかしいです...ありがとうalot :) –

+0

それは物事の種類ですあなたのコードを見るために目を新鮮にするだけで、最高の状態になります。 –

答えて

1

あなたのinsertステートメントには、values節の最後に閉じ括弧がありません。あなたはinsert文の後NULLを含むようにVideo列を意図している場合

また、あなたは、単に列のリストと変数リストからそれを省略しなければならないので、あなたのコードは次のようになります。

using(SqlConnection conn = new SqlConnection(connexion)) 
{ 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand(
    "INSERT INTO Actualite (Titre, Sous_titre, Contenu, Image, Vignette, Date_publication, Afficher) " + 
    "VALUES (@Titre, @Sous_titre, @Contenu, @Image, @Vignette, @Date_publication, @Afficher)", conn); 
    cmd.Parameters.Add(new SqlParameter("@Titre", "Ceci est un test")); 
    cmd.Parameters.Add(new SqlParameter("@Sous_titre", "Ceci est un test")); 
    cmd.Parameters.Add(new SqlParameter("@Contenu", "Ceci est un test, ça l'air à marcher")); 
    cmd.Parameters.Add(new SqlParameter("@Image", "minecraft.jpg")); 
    cmd.Parameters.Add(new SqlParameter("@Vignette", "vminecraft.jpg")); 
    cmd.Parameters.Add(new SqlParameter("@Date_publication", SqlDbType.DateTime)).Value = DateTime.Now; 
    cmd.Parameters.Add(new SqlParameter("@Afficher", SqlDbType.Bit)).Value = 1; 
    cmd.ExecuteNonQuery(); 
} 
+0

私はすべてのクエリでパラメータが必要ですが、これは正しい方法ですか、引用符なしでnullとして渡す必要がありますか? Videoパラメータは、URLを含む文字列のみです。最終的に検証を行い、この時点で値またはnullを渡します。 –

+0

パラメータに 'null'をハードコーディングする場合にのみ指定する必要はありません。必要ならば、パラメータ値を 'DBNull.Value'に設定することができますが、そのパラメータの値にある種の条件がない限り、無意味なコードを追加するだけです。 –

+0

はい、それは私が条件を作るつもりだが、今はただテストしている –

関連する問題