更新有限行数(UPDATE语句中的语法错误)

时间:2015-03-30 08:13:07

标签: c# oledb oledbconnection oledbcommand

有没有办法如何在C#中使用OleDb连接更新有限数量的行(我是连接到Excel文件)?

我试过以下:

private static string GetConnectionString = (string path)
{
  var connectionDictionary = new Dictionary<string, string>();
  connectionDictionary["Provider"] = "Microsoft.ACE.OLEDB.12.0";
  connectionDictionary["Extended Properties"] = "Excel 12.0 XML";
  connectionDictionary["Data Source"] = path;

  var sb = new StringBuilder();

  foreach (var property in connectionDictionary)
  {
    sb.Append(property.Key);
    sb.Append("=");
    sb.Append(property.Value);
    sb.Append(";");
  }

  return sb.ToString();
}

public static void DoTheMagic(string path) 
{
  var connectionString = GetConnectionString(path)

  using (var connection = new OleDbConnection(connectionString))
  {
    try 
    {
      connection.Open();
      var cmd = new OleDbCommand { Connection = connection };
      cmd.CommandText = "UPDATE TOP (1) [TableName] 
                         SET [Column] = 'value'
                         WHERE [Column] IS NULL";
      cmd.ExecuteNonQuery();
}
    finally
    {
      connection.Close();
    }
  }
}

但这会引发错误:

  

SystemData.Dall

中出现SystemData.OleDb.OleDbException      

其他信息:UPDATE语句中的语法错误

1 个答案:

答案 0 :(得分:0)

没有。 OLEDB与Excel一起提供行编号或限制功能作为数据库引擎&#39;。它有一个非常简化的SQL引擎。

您可以在工作表中添加ID字段,并使用X的步骤进行更新。问题是如果您有间隙,则可能无法更新任何内容。