C # oledb Количество значений запроса и полей назначения не совпадают - PullRequest
0 голосов
/ 31 мая 2018

Я получаю сообщение об ошибке «Количество значений запроса и поля назначения не совпадают».для той части кода, которая указана ниже -

        public static void SaveCurrentPlaylistToSheet(YouTubeVideo[] CurrentPlaylist)
    {
        string currentTitle;

        using (connection = new OleDbConnection(ConnectionString))
        {
            connection.Open();
            command = new OleDbCommand();
            command.Connection = connection;

            using (command = connection.CreateCommand())
            {
                for (int i = 0; i < CurrentPlaylist.Length; i++) 
                {
                    currentTitle = Regex.Replace(CurrentPlaylist[i].title, " ", "");

                    if (NewPlaylist)
                    {
                        command.CommandText = string.Format("INSERT INTO [" + ActiveSheetTitle + "] (F1) values({0})", currentTitle);
                        NewPlaylist = false;
                    }
                    else
                    {
                        command.CommandText = string.Format("INSERT INTO [" + ActiveSheetTitle + "$] (F1) values({0})", currentTitle);
                    }
                    command.ExecuteNonQuery(); // Execute insert query against excel file.
                }
            }

, мы будем благодарны за любую помощь в решении проблемы.Спасибо, Амитай

1 Ответ

0 голосов
/ 31 мая 2018

Если переменная currentTitle содержит запятую, ваш запрос не выполняется, поскольку он рассматривается как два поля.Вы должны использовать параметры при построении текста запроса и передавать значение, используя коллекцию параметров

string cmdText = "INSERT INTO [" + ActiveSheetTitle + "] (F1) values(?)";
if (NewPlaylist)
    NewPlaylist = false;
command.Parameters.Add("@f1", OleDbType.VarWChar).Value = currentTitle;
command.ExecuteNonQuery(); 

. Следует также учитывать переменную ActiveSheetTitle.Не позволяйте вашему пользователю вводить это значение.Вы должны определить его где-нибудь из белого списка имен, чтобы избежать возможных Sql-инъекций в эту переменную.

...