在c#中将记录添加到Access 2007数据库时发生异常

本文关键字:数据库 2007 异常 Access 记录 添加 | 更新日期: 2023-09-27 17:58:09

我正试图使用c#向Access 2007数据库添加一条记录,但遇到了一个异常。

这是我的代码,数据库叫做hms,表叫做login

DataSet ds = new DataSet();
System.Data.OleDb.OleDbConnection con;
DataRow dRow;
con = new System.Data.OleDb.OleDbConnection();
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" +  Application.StartupPath + "''hms.mdb";
string sql = "select * from login";
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter(sql, con);
System.Data.OleDb.OleDbCommandBuilder cb;
cb = new System.Data.OleDb.OleDbCommandBuilder(da);
dRow = ds.Tables[1].NewRow(); //I get an error on this line
dRow[1] = "sakest";
ds.Tables["hms"].Rows.Add(dRow);
da.Fill(ds, "hms");
da.Update(ds, "hms");
MessageBox.Show("new enrtry ");

在c#中将记录添加到Access 2007数据库时发生异常

您得到的确切错误消息是什么。我想你正在请求一个不存在的表,你的查询只返回1个表,所以它的索引是0

试试这个:

dRow = ds.Tables[0].NewRow();

据我所知,代码的问题是您创建了数据集(ds),但从未填充

你需要类似的东西:

using (OleDbConnection con = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "''hms.mdb"))
{
    con.Open();
    string sql = "select * from login";
    using (OleDbDataAdapter da = new OleDbDataAdapter(sql, con))
    {
        DataSet ds = new DataSet();
        da.Fill(ds);
        DataRow dRow = ds.Tables[0].NewRow();
        dRow[1] = "sakest";
        ds.Tables["hms"].Rows.Add(dRow);
        da.Fill(ds, "hms");
        da.Update(ds, "hms");
        MessageBox.Show("new enrtry ");
    }
}

基本上,您要查找的位是da.Fill(ds)行,以及从ds.Tables[1].NewRow()ds.Tables[0].NewRow()的变化。

注意:我已经重新调整了代码,以便向您展示如何将OleDbConnectionOleDbDataAdapter包装在using中,以确保CLR正确清理它们。