【问题标题】:SQL Statement will not execute in C#?SQL 语句不会在 C# 中执行?
【发布时间】:2009-07-11 16:56:24
【问题描述】:

大家好,这是我的代码,我从 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();
        }

    }

谢谢阿什

【问题讨论】:

    标签: c# sql ms-access syntax jet


    【解决方案1】:

    您似乎在使用 Access - 不是 Month 和 Year 保留字吗?尝试将它们括在方括号中(这是 Access 的正确分隔符吗?),然后重试。

    【讨论】:

    • 他没有使用 Access——他使用 C# 编程,因此只使用 Jet/ACE。
    【解决方案2】:

    如果您使用 Access,则参数实际上不是占位符,而是命名参数。

    更改您的 SQL 字符串以使用 ?作为占位符而不是命名参数,并确保以与 ? 相同的顺序添加参数出现在 SQL 字符串中。

    【讨论】:

    • 再一次,它可能是保留字的东西:)
    • 谢谢老兄,这行得通,尝试了括号但不太确定,我只是更改了月份和年份的名称,然后使用了?成功了,谢谢大家:)
    • 他根本没有使用 Access ——他只使用 Jet/ACE。
    【解决方案3】:

    AFAIK,Access 不支持命名参数。你应该使用“?”在您的查询中指定参数:

        string sql = "INSERT INTO PodcastsDir (FileName, Department, [Month], [Year]) VALUES (?, ?,?,?)";
    

    您还应该将 YearMonth 放在方括号中。

    您的其余代码可以保持不变。

    【讨论】:

    • 这里不涉及访问,因为编程环境是C#。仅涉及 Jet/ACE。
    【解决方案4】:

    你可能想试试这个,Jet ie Access中的参数很好

    "INSERT INTO PodcastsDir ([FileName], [Department], [Month], [Year]) VALUES (@FileName, @Department, @Month, @Year)"; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      相关资源
      最近更新 更多