簡體   English   中英

SQL語句無法在C#中執行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM