Оператор SQL не будет выполняться в C #? - PullRequest
0 голосов
/ 11 июля 2009

Эй, ребята, вот мой код для этого, единственная помощь, которую я получаю от 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();
        }

    }

Спасибо Эш

Ответы [ 4 ]

2 голосов
/ 11 июля 2009

Кажется, вы используете Access - не зарезервированы ли слова на месяц и год? Попробуйте заключить их в квадратные скобки (это правильный разделитель для Access?) И повторите попытку.

1 голос
/ 31 октября 2010

Возможно, вы захотите попробовать, параметры в Jet нормальные, т.е. Access

"INSERT INTO PodcastsDir ([FileName], [Department], [Month], [Year]) VALUES (@FileName, @Department, @Month, @Year)"; 
1 голос
/ 11 июля 2009

AFAIK, Access не поддерживает именованные параметры. Вы должны использовать "?" в вашем запросе укажите параметры:

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

Вы также должны поставить Год и Месяц в квадратных скобках.

Остальную часть вашего кода можно оставить без изменений.

1 голос
/ 11 июля 2009

Если вы используете Access, то параметры - это не заполнители, а именованные параметры.

Изменить строку SQL для использования? в качестве заполнителя, а не именованного параметра, и убедитесь, что вы добавляете параметры в той же последовательности, что и? появляются в строке SQL.

...