C# 如何使用我在VS2015中创建的数据集

C# 如何使用我在VS2015中创建的数据集,c#,database,ms-access,dataset,datasource,C#,Database,Ms Access,Dataset,Datasource,我使用UI将数据源添加到我的项目中 数据源列为serverManagerDBDataSet,当您打开三角形时,它会显示“serverManagerTable”,当您打开三角形时,您会看到表中的字段 我的问题是如何在我的项目中正确使用这个数据源 我收到一个错误,说连接已打开您在一个连接上执行两种不同的读取机制。第一步是取出ExecuteReader和Read行: string constr = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" +

我使用UI将数据源添加到我的项目中

数据源列为
serverManagerDBDataSet
,当您打开三角形时,它会显示“serverManagerTable”,当您打开三角形时,您会看到表中的字段

我的问题是如何在我的项目中正确使用这个数据源


我收到一个错误,说连接已打开

您在一个连接上执行两种不同的读取机制。第一步是取出
ExecuteReader
Read
行:

string constr = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + dbPath;
string cmdstr = "select * from serverManagerTable";
OleDbConnection con = new OleDbConnection(constr);
OleDbCommand com = new OleDbCommand(cmdstr, con);
con.Open();
//OleDbDataReader reader = com.ExecuteReader();
//reader.Read();
DataSet data = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(com);
da.Fill(data);
int i = data.Tables[0].Rows.Count;
MessageBox.Show(i.ToString());
然后使用语句将数据库类包装在
中:

string constr = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + dbPath;
string cmdstr = "select * from serverManagerTable";
DataSet data = new DataSet();

using(OleDbConnection con = new OleDbConnection(constr))
using(OleDbCommand com = new OleDbCommand(cmdstr, con))
{
    con.Open();
    using(OleDbDataAdapter da = new OleDbDataAdapter(com))
        da.Fill(data);
}
int i = data.Tables[0].Rows.Count;
MessageBox.Show(i.ToString());
如果加载数据时出现异常,
using
语句确保及时关闭连接


但是,为了回答标题中的问题,我假设您应该使用
serverManagerDBDataSet
而不是普通的
DataSet

您的代码确实有效,但不确定向导为什么创建这些“服务器管理器组件”“老实说,在工具箱中,我已经多年没有使用类型化数据集了,所以我没有一个很好的答案。我确实知道,在早期,它们被视为可重用的“组件”,但这在很大程度上与实体框架有关。
string constr = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + dbPath;
string cmdstr = "select * from serverManagerTable";
DataSet data = new DataSet();

using(OleDbConnection con = new OleDbConnection(constr))
using(OleDbCommand com = new OleDbCommand(cmdstr, con))
{
    con.Open();
    using(OleDbDataAdapter da = new OleDbDataAdapter(com))
        da.Fill(data);
}
int i = data.Tables[0].Rows.Count;
MessageBox.Show(i.ToString());