嘿伙计,这是我的代码,我从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();
}
}
谢谢Ash
答案 0 :(得分:2)
您似乎正在使用Access - 不是月份和年份保留字吗?尝试将它们放在方括号中(这是Access的正确分隔符吗?)并再次尝试。
答案 1 :(得分:1)
如果您使用的Access不是参数实际占位符而不是命名参数。
更改要使用的SQL字符串?作为占位符而不是命名参数,并确保以与?相同的顺序添加参数?出现在SQL字符串中。
答案 2 :(得分:1)
AFAIK,Access不支持命名参数。你应该用“?”在您的查询中指定参数:
string sql = "INSERT INTO PodcastsDir (FileName, Department, [Month], [Year]) VALUES (?, ?,?,?)";
您还应将年和月放在方括号中。
其余代码可以保持不变。
答案 3 :(得分:1)
你可能想试试这个,Jet中的参数很好,即访问
"INSERT INTO PodcastsDir ([FileName], [Department], [Month], [Year]) VALUES (@FileName, @Department, @Month, @Year)";