[英]SQL Statement will not execute in C#?
大家好,這是我的代碼,從VS獲得的唯一幫助是INSERT INTO語句語法不正確?
我遍歷了所有代碼,只是看不到我出了什么問題,請有人幫忙嗎?
public void New(string ApplicationStartupPath, string FileName, string Department, string Month, string Year)
{
string sql = "INSERT INTO PodcastsDir (FileName, Department, Month, Year) VALUES (@FileName, @Department, @Month, @Year)";
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + ApplicationStartupPath.ToString() + ""))
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
cmd.Parameters.Add("@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();
}
}
謝謝阿什
您似乎正在使用Access-月和年保留字不是嗎? 嘗試將它們放在方括號中(這是Access的正確定界符嗎?),然后重試。
如果使用Access,則實際上不是參數占位符,而是命名參數。
更改您的SQL字符串以使用? 作為占位符而不是命名參數,並確保以與?相同的順序添加參數。 出現在SQL字符串中。
AFAIK,Access不支持命名參數。 您應該使用“?” 在查詢中指定參數:
string sql = "INSERT INTO PodcastsDir (FileName, Department, [Month], [Year]) VALUES (?, ?,?,?)";
您還應該將“ 年”和“ 月”放在方括號中。
您的其余代碼可以保留不變。
您可能想嘗試一下,Jet中的參數很好,即Access
"INSERT INTO PodcastsDir ([FileName], [Department], [Month], [Year]) VALUES (@FileName, @Department, @Month, @Year)";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.