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

标签 c# database ms-access dataset datasource

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

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

我的问题是如何在我的项目中(正确地)使用此数据源?

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());

我收到一条错误消息,提示连接已打开

最佳答案

您正在对一个连接执行两种不同的读取机制。第一步是取出ExecuteReaderRead行:

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());

然后将您的数据库类包装在using 语句中:

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

关于c# - 如何使用我在 VS2015 中创建的数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34141441/

相关文章:

c# - 在 Visual Studio 2010 语言服务中实现查找引用

sql - 是否可以在 SQL 中实现测试驱动开发?

ms-access - 从 VBA 中的函数返回对象实例时出错

Java 连接到 MS Access 数据库

c# - 如何向 CryptoStream 添加查找和定位功能

c# - 使用 from...to 范围声明 int 变量

sql - 结果集比较实用程序

database - SQL查询数据库

VBA Access 2003 只允许在合理的时间内按下一次按钮

c# - 找到一个值正下方的 float