【问题标题】:How to use the OleDbDataAdapter Fill method to only add a determined number of rows?如何使用 OleDbDataAdapter Fill 方法仅添加确定数量的行?
【发布时间】:2011-11-09 20:48:16
【问题描述】:

我想在 DataSet 中添加行,但只添加特定数量的行(为了避免“定义的字段过多。”异常)。这是我迄今为止尝试过的:

OleDbCommand command = new OleDbCommand(@"SELECT TOP 100 FROM [" + SheetName + "]", connection);

例外:SELECT 语句包含拼写错误或缺失的保留字或参数名称,或者标点不正确。

OleDbCommand command = new OleDbCommand(@"SELECT * FROM [" + SheetName + "] LIMIT 100", connection);

例外:FROM 子句中的语法错误。

我也试过这个我从另一个site得到的

OleDbCommand command = new OleDbCommand(@"SELECT TOP 100 * FROM [" + SheetName + "]", connection);

例外:定义的字段过多。

我不知道还有什么可以尝试的,有什么建议吗?

【问题讨论】:

  • 为什么要包含方括号“[]”?

标签: c# oledbconnection oledbcommand


【解决方案1】:

您可以指定您希望Fill() 方法检索多少行。这是来自 MSDN 的签名:

public int Fill(
    int startRecord,
    int maxRecords,
    params DataTable[] dataTables
)

http://msdn.microsoft.com/en-us/library/0z5wy74x.aspx

【讨论】:

    【解决方案2】:

    好吧,我相信你不能通过限制来解决太多字段的问题。

    但是可以限制字段。第一次尝试的问题

    TOP 100 FROM 
    

    是语法无效。如果要限制字段,则需要像这样显式使用列名

    SELECT TOP 100 ColumnName1, ColumnName2, ColumnName3 from ....
    

    一般来说,我建议永远不要使用 select *,而总是使用您需要的列。

    【讨论】:

    • 你是对的..它没有解决我的问题!我该如何解决这个问题?
    • 只需使用 'select Columname1, Columname2 FROM [...' 并从 2 个列名开始,看看是否有效。从那里继续前进。
    • 另一个原因可能是您的电子表格中有空的列名?
    • 没问题,只是想知道为什么您接受另一个答案是正确的?
    • 其实我在犹豫是接受你的还是对方的,但我最初的问题被詹姆斯正确回答了,毕竟这不是我的问题,但它被正确回答了。对不起!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多