首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OleDbDataAdapter更新问题

OleDbDataAdapter更新问题
EN

Stack Overflow用户
提问于 2009-02-27 09:12:36
回答 2查看 1.8K关注 0票数 0

我有一个有很多行(超过一亿行)的DataTable,并且正在编写一个需要插入到该表中的应用程序。

我将在工作中使用OleDbDataAdapter,我很困惑如何才能做到这一点。我只需要插入到这个巨大的表中,但是我不想硬编码插入语句到应用程序中。

我想我可以

代码语言:javascript
复制
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand("select * from table_name");
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
...
adapter.Fill(data_set_name, "Table_name");

但是这将是非常糟糕的,因为我不需要/想要数据,而且内存的使用也会很糟糕。所以,如果我能用TOP修改SelectCommand,我很感兴趣吗?它看起来是这样的:

代码语言:javascript
复制
adapter.SelectCommand = new OleDbCommand("select TOP 1 * from table_name");

现在,Fill命令非常快,我将获得所有未来insert语句所需的数据。我可以将行添加到datatable中,然后只需调用

代码语言:javascript
复制
adapter.Update(data_set_name, "Table_name");

这个能行吗?这是一种有效的/推荐的方法吗?非常重要的是,应用程序是快速的,并且只使用必要的资源。有更好的方法吗?

谢谢您的投入!

EN

回答 2

Stack Overflow用户

发布于 2009-02-27 09:21:53

如果不需要数据,可以将select命令更改为

代码语言:javascript
复制
SELECT * FROM Table_Name WHERE 1=2

那你就什么行都回不来了

票数 1
EN

Stack Overflow用户

发布于 2009-02-27 09:33:14

海事组织,最好的办法是:

  1. 使用OleDbDataAdapter.FillSchema(data_set_name, SchemaType.Source)方法创建具有从数据源映射的结构的DataTable。您基本上是在尝试通过在Select语句中拉一个行来做同样的事情。在这种情况下,选择语句可以保持为"select * from table_name“。我相信您现在不需要调用OleDbDataAdapter.Fill方法。
  2. 而不是使用CommandBuilder,而是自己创建InsertCommand语句。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/594063

复制
相关文章

相似问题

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