C# oledb 查询值和目标字段的数量不同



>我收到错误"查询值和目标字段的数量不同",对于下面显示的代码部分 -

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.
}
}

任何解决问题的帮助将不胜感激。 谢谢 阿米泰

如果您的 currentTitle 变量恰好有一个逗号,那么您的查询将失败,因为它被视为两个字段。在生成查询文本并使用参数集合传递值时,应使用参数

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

要考虑的一点也是 ActiveSheetTitle 变量。不要让用户键入该值。您应该从名称白名单中的某个位置定义它,以避免对该变量进行可能的 SQL 注入。

相关内容

最新更新