我有一种方法可以通过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
,尽管我没有这样的表。为什么会这样?
答案 0 :(得分:1)
OleDbDataAdapter
没有尝试解析您的查询以提取表名或尝试从数据库中读取名称。
没有任何有意义的理由,这将是一次性能打击。它默认将从检索到的每个表命名为顺序namig,从"表"然后"表1"等等。您可以看到此explained on MSDN
...其他结果集以。命名 将整数值附加到指定的表名称(例如, "表","表1","表2"等等。)
此外,如果您确实需要为第一个表分配值,则只需使用带有附加字符串参数的重载来传递表的名称
adapter.Fill(set, "ADDRESSES");