我有一个有很多行(超过一亿行)的DataTable,并且正在编写一个需要插入到该表中的应用程序。
我将在工作中使用OleDbDataAdapter,我很困惑如何才能做到这一点。我只需要插入到这个巨大的表中,但是我不想硬编码插入语句到应用程序中。
我想我可以
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,我很感兴趣吗?它看起来是这样的:
adapter.SelectCommand = new OleDbCommand("select TOP 1 * from table_name");现在,Fill命令非常快,我将获得所有未来insert语句所需的数据。我可以将行添加到datatable中,然后只需调用
adapter.Update(data_set_name, "Table_name");这个能行吗?这是一种有效的/推荐的方法吗?非常重要的是,应用程序是快速的,并且只使用必要的资源。有更好的方法吗?
谢谢您的投入!
发布于 2009-02-27 09:21:53
如果不需要数据,可以将select命令更改为
SELECT * FROM Table_Name WHERE 1=2那你就什么行都回不来了
发布于 2009-02-27 09:33:14
海事组织,最好的办法是:
OleDbDataAdapter.FillSchema(data_set_name, SchemaType.Source)方法创建具有从数据源映射的结构的DataTable。您基本上是在尝试通过在Select语句中拉一个行来做同样的事情。在这种情况下,选择语句可以保持为"select * from table_name“。我相信您现在不需要调用OleDbDataAdapter.Fill方法。CommandBuilder,而是自己创建InsertCommand语句。https://stackoverflow.com/questions/594063
复制相似问题