【问题标题】:How can I use the dataset that I created used in VS2015如何使用我在 VS2015 中创建的数据集
【发布时间】:2016-03-12 12:29:17
【问题描述】:

我使用 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());

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

【问题讨论】:

    标签: c# database ms-access dataset datasource


    【解决方案1】:

    您在一个连接上执行两种不同的读取机制。第一步是取出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

    【讨论】:

    • 您的代码确实有效,但不确定向导为何在工具箱中创建这些“服务器管理器组件”
    • 老实说,我已经好几年没有使用类型化数据集了,所以我对此没有一个好的答案。我确实知道,早期它们被视为可重用的“组件”,但这在很大程度上与 Entity Framework 不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    相关资源
    最近更新 更多