【问题标题】:Why the TableName is "Table" in SQL while getting the row by Unique Id?为什么 SQL 中的 TableName 是“Table”,而通过唯一 ID 获取行?
【发布时间】:2017-05-23 03:12:21
【问题描述】:

我有一种方法可以通过 Id 为通讯簿应用程序获取 DataSet。

    public DataSet GetElementById(int id)
    {
        string commtext = string.Format("select * from ADDRESSES where Id={0}", id);
        DataSet set = new DataSet();
        adapter = new OleDbDataAdapter(commtext, connection);
        adapter.Fill(set);
        return set;
    }

我在 Access 中只有一个名为 ADDRESSES 的表,但 set.Tables[0].TableName 返回为 Table,尽管我没有这样的表。为什么会这样?

【问题讨论】:

  • 表的名称在很大程度上与它所保存的数据无关。查询一行是一种非常浪费的手段
  • 我想在更改数据行时更新 ListView。所以我需要再次查询该行以获取更新的数据。这是一种错误的做法吗?

标签: c# sql datatable dataset


【解决方案1】:

OleDbDataAdapter 不会尝试解析您的查询以提取表名或尝试从数据库中读取名称。

这将无缘无故地影响性能。它默认将检索到的每个表命名为从“Table”开始的顺序 namig,然后是“Table1”,依此类推。你可以看到这个explained on MSDN

... 其他结果集由 将整数值附加到指定的表名(例如, “表”、“表 1”、“表 2”等)。

如果你真的需要为第一个表赋值,你可以简单地使用带附加字符串参数的重载传递表的名称

adapter.Fill(set, "ADDRESSES");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多