C# 在c中向Access 2007数据库添加记录时发生异常#
我试图使用c#向Access 2007数据库添加一条记录,但出现了一个异常 这是我的代码,数据库名为C# 在c中向Access 2007数据库添加记录时发生异常#,c#,ms-access,ms-access-2007,C#,Ms Access,Ms Access 2007,我试图使用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;D
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 ");
您确切地得到了什么错误消息。我猜您正在请求一个不存在的表,您的查询只返回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()的更改
注意:我重新调整了代码,以便向您展示如何使用将OleDbConnection
和OleDbDataAdapter
包装在中,以确保CLR正确清理它们