gpt4 book ai didi

c# - 如何刷新绑定(bind)到已更新的 Access 数据库表的 DataGridView?

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:57 25 4
gpt4 key购买 nike

我有一个桌面应用程序项目。在入口页面上,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 数据库时它工作正常。]

最佳答案

我会有点明显,但你说:“让我必须输入 5 个数据。ID 是 1、2、3、4、5。当我插入 1 时,它不带任何东西。当我输入 2 它显示 1 的数据。当我插入 3 它显示 2 的数据。这意味着它从第二次开始工作。"

我说:当您看到这样的行为时,立即知道这是一个时间问题

在这种特定情况下,我认为如果您先关闭连接然后调用 GetData() 它应该可以工作:

private void btnSave_Click(object sender, EventArgs e)
{
//SqlConnection con = new SqlConnection(conn);
OleDbConnection con = new OleDbConnection(conn);
int i = 0;
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);
i = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
ex.Message.ToString();
}
finally
{
con.Close();

if(i!=0)
{
dataGridGroup.DataSource = GetData();
}
}
}

关于c# - 如何刷新绑定(bind)到已更新的 Access 数据库表的 DataGridView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18089188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com