Я получаю сообщение об ошибке «Ошибка синтаксиса C # в операторе INSERT INTO» для этой части кода ниже:
public static void SaveCurrentPlaylistToSheet(YouTubeVideo[] CurrentPlaylist, string playlistTitle)
{
ActiveSheetTitle = "Test"; //playlistTitle;
string currentTitle;
if (FileCreation)
{
NewPlaylist = true;
}
using (conn = new OleDbConnection(ConnectionString))
{
conn.Open();
try
{
cmd = new OleDbCommand();
cmd.Connection = conn;
currentTitle = "Test";
for (int i = 0; i < CurrentPlaylist.Length; i++)
{
//currentTitle = Regex.Replace(CurrentPlaylist[i].title, " ", "");
//currentTitle = currentTitle.Replace(",", "");
using (cmd = conn.CreateCommand())
{
if (NewPlaylist)
{
NewPlaylist = false;
cmd.CommandText = "INSERT INTO [" + ActiveSheetTitle + "$] (F1) VALUES (?)";
}
else
{
cmd.CommandText = "INSERT INTO [" + ActiveSheetTitle + "] (F1) VALUES (?)";
}
cmd.Parameters.Add("?", OleDbType.VarChar).Value = currentTitle;
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
string filePath = @"C:\Dropbox\amitai\Programming\C# projects\Youtube Playlists\Error.txt";
using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.WriteLine("Message :" + ex.Message + "<br/>" + Environment.NewLine + "StackTrace :" + ex.StackTrace +
"" + Environment.NewLine + "Date :" + DateTime.Now.ToString());
writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
}
}
cmd = null;
conn.Close();
cmd.Dispose();
conn.Dispose();
}
ActiveSheetTitle = null;
}
Подробности строки подключения:
ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
" + MyPath + ";" +
"Mode=ReadWrite;" + "Mode=ReadWrite;" + //ReadOnly=false" +
"Extended Properties=\"Excel 12.0;HDR=NO; IMEX =1;\"";
и "myPath" извлекается из:
public static string MyPath { get; set; } = @"\MyPlaylists.xlsx";
...
using (var dialog = new FolderBrowserDialog())
{
dialog.Description = "Please choose directory";
if (dialog.ShowDialog() == DialogResult.OK) //check for OK. They might press cancel, so don't do anything if they did.
{
string path = dialog.SelectedPath;
MyPath = path + MyPath;
}
}
Путем поиска в Google я нашел решения для этой ошибки, которые связаны с использованием зарезервированных ключевых слов в качестве параметров или получением некоторого ввода пространства, поэтому для целей тестирования я установилcurrentTitle и ActiveSheetTitle как «Test», но ошибка остается.
Любая помощь для решения проблемы будет принята.