I'm trying to add a record to an Access 2007 database using c# but I get an exception.
Here's my code, the database is called hms
and the table is called 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 ");
What error message are you getting exactly. At a guess I would say that you are requesting a table that does not exist, your query only returns 1 table so it's index would be 0
Try this:
dRow = ds.Tables[0].NewRow();
As far as I can tell, the issue with your code is that you create your DataSet ( ds
), but never fill it.
You need something similar to this:
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 ");
}
}
Basically, the bit you're after is the da.Fill(ds)
line, and the change from ds.Tables[1].NewRow()
to ds.Tables[0].NewRow()
.
Note: I've re-jigged the code so as to show you how to wrap the OleDbConnection
and OleDbDataAdapter
in using
's so as to ensure that they're cleaned up by the CLR properly.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.