0


0

こんにちはみんな、ここに私のコードです、私はVSから得る唯一の助けはINSERT INTOステートメントの構文が間違っているということですか?

私はすべてのコードを読み終えてしまったのですが、どこで問題が発生したのかがわかりません。

public void New(文字列ApplicationStartupPath、文字列FileName、文字列Department、文字列Month、文字列Year){文字列sql = "INSERT INTO PodcastsDir(ファイル名、部署、月、年)値(@FileName、@Department、@Month、@Year) "; (OleDbConnection conn = new OleDbConnection( "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" ApplicationStartupPath.ToString() ""))を使用して(OleDbCommand cmd = new OleDbCommand(sql、conn)){cmd.Parameters。追加( "@ FileName"、OleDbType.VarChar); cmd.Parameters.Add( "@ Department"、OleDbType.VarChar); cmd.Parameters.Add( "@ Month"、OleDbType.VarChar); cmd.Parameters.Add( "@ Year"、OleDbType.VarChar);

conn.Open();

cmd.Parameters [0] .Value = FileName; cmd.Parameters [1] .Value = Department; cmd.Parameters [2] .Value = Month; cmd.Parameters [3] .Value = Year;

cmd.ExecuteNonQuery(); }

}

ありがとうアッシュ

4 Answer


2


あなたはAccessを使っているようです - 月と年の予約語ではないですか? それらを角括弧で囲み(これはAccessの正しい区切り文字ですか?)、もう一度やり直してください。


1


Accessを使用している場合は、名前付きパラメーターではなく、パラメーターが実際にはホルダーを配置するわけではありません。

使用するSQL文字列を変更しますか? 名前付きパラメーターではなくプレースホルダーとして使用し、必ず?と同じ順序でパラメーターを追加してください。 SQL文字列に表示されます。


1


私の知るところでは、Accessは名前付きパラメータをサポートしていません。 あなたは「?」を使うべきですクエリでパラメータを指定するには、

string sql = "PodcastsDirへの挿入(ファイル名、部署、[月]、[年])値(?、?、?、?)";

また、* Year Month *を角かっこで囲む必要があります。

コードの残りの部分は変更しないでおくことができます。


1


あなたはこれを試してみたいかもしれません、パラメータはJetで大丈夫ですすなわちAccess

"PodcastsDir([ファイル名]、[部署]、[月]、[年])に値を挿入します