我有一个桌面应用程序项目。在条目页面中,datagridview显示数据库中的现有项目。现在,当我输入新项目时,我想直接在datagridview中插入它。这意味着我想重新加载/刷新datagridview。我的数据库在MS Access中。
private DataTable GetData()
{
DataTable dt = new DataTable();
//using (SqlConnection con = new SqlConnection(conn))
using (OleDbConnection con=new OleDbConnection(conn))
{
OleDbCommand cmd = new OleDbCommand("Select ID,Name from GroupDetails where comID='" + label1.Text + "'", con);
//SqlCommand cmd = new SqlCommand("Select ID,Name from GroupDetails where comID='" + label1.Text + "'", con);
con.Open();
//SqlDataAdapter ad = new SqlDataAdapter(cmd);
OleDbDataAdapter ad = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
ad.Fill(ds);
dt = ds.Tables[0];
return dt;
}
}
private void btnSave_Click(object sender, EventArgs e)
{
//SqlConnection con = new SqlConnection(conn);
OleDbConnection con = new OleDbConnection(conn);
con.Open();
//SqlCommand cmd;
try
{
string query = "insert into GroupDetails (ID,Name) values(@ID,@Name)";
// cmd = new SqlCommand(query,con);
OleDbCommand cmd = new OleDbCommand(query, con);
cmd.Parameters.AddWithValue("@ID",txtID.Text);
cmd.Parameters.AddWithValue("@Name",txtName.Text);
int i = cmd.ExecuteNonQuery();
if(i!=0)
{
dataGridGroup.DataSource = GetData();
}
}
catch (Exception ex)
{
ex.Message.ToString();
}
finally
{
con.Close();
}
}
[注意:当我使用sql数据库时,它工作正常。]
答案 0 :(得分:1)
dbDataAdapterClass (OleDbDataAdapter继承的那个)具有SelectCommand,UpdateCommand和InsertCommand。当您显式调用任何方法(例如update;))时,它们负责选择,更新和插入。由于在您的代码中,您从未提供解释如何进行更新的命令,因此dataadapter不知道如何执行此操作。
所以满足要求,向适配器添加更新命令。
dataadapter = new OleDbDataAdapter(sql, connection);
在上面的行之后添加以下代码,OleDbCommandBuilder将为您生成命令。
OleDbCommandBuilder cb = new OleDbCommandBuilder(dataadapter);
This教程可以帮助你。