首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# OleDBConnection Excel

C# OleDBConnection Excel
EN

Stack Overflow用户
提问于 2011-04-14 19:35:51
回答 1查看 3.3K关注 0票数 1

接下来的这个问题C# OLEDBConnection to Excel

我在使用OLEdbCommandBuilder时遇到了一些问题。我有这样的代码:

代码语言:javascript
复制
 DataTable dt = new DataTable();
            OleDbCommand command = new OleDbCommand();

            command = new OleDbCommand("Select * from [working sheet$]", oleDBConnection);
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
            dataAdapter.SelectCommand = command;

            OleDbCommandBuilder c = new OleDbCommandBuilder(dataAdapter);

            dataAdapter.Fill(dt);

            //arbitrary changed datatable
            dt.Rows[2][3] = "dfd";

            c.GetUpdateCommand();

            dataAdapter.Update(dt);

            oleDBConnection.Close();

然而,当我运行它时,我得到了这个错误:

代码语言:javascript
复制
Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

如何使用更新的行/单元格信息更新Excel工作表?我以前从来没有用过这样的方式来处理Excel。

我已经用谷歌搜索了这个错误,但找不到任何符合我的确切要求的东西。

谢谢,

达伦。

EN

回答 1

Stack Overflow用户

发布于 2011-04-14 20:07:23

只有当适配器知道excel-database-table的唯一主键时,才能进行更新。您可以将id列添加为excel中的第一列,并使其成为主键,然后继续如下操作

代码语言:javascript
复制
      ...
      dataAdapter.Fill(dt);
      ...
      System.Data.DataColumn pkCol = dt.Columns[0]; // something like dt.Columns["Id"]
      pkCol.Unique = true;
      dt.PrimaryKey = new DataColumn[] {pkCol };
      ...
      OleDbCommandBuilder c = new OleDbCommandBuilder(dataAdapter);
      ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5662602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档