C# 添加新记录后在datagrid中显示数据
保存新记录后,我想在dataGridView中显示数据库中的数据。单击按钮后,数据已保存,但未显示在datagridview中。如何显示这些数据C# 添加新记录后在datagrid中显示数据,c#,database,datagridview,C#,Database,Datagridview,保存新记录后,我想在dataGridView中显示数据库中的数据。单击按钮后,数据已保存,但未显示在datagridview中。如何显示这些数据 private void btn_add_Click(object sender, EventArgs e) { { if (textBox_tarikh.Text == "" || textBox_resit.Text == "" || textBox_bayaran.Text == "")
private void btn_add_Click(object sender, EventArgs e)
{
{
if (textBox_tarikh.Text == "" || textBox_resit.Text == "" || textBox_bayaran.Text == "")
{
MessageBox.Show("Please Fill In The Blank");
}
else
{
String bResult = textBox_ic.Text;
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\acap\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30"; // add your conncetion string here
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("INSERT Pembayaran (Description, Date, No_Resit, Payment, Studentic) VALUES (@Description, @date, @resit, @payment, @val)", connection);
cmd.Parameters.AddWithValue("@val", bResult);
cmd.Parameters.AddWithValue("@Description", label4.Text);
cmd.Parameters.AddWithValue("@date", Convert.ToDateTime(textBox_tarikh.Text));
cmd.Parameters.AddWithValue("@resit", textBox_resit.Text);
cmd.Parameters.AddWithValue("@payment", textBox_bayaran.Text);
SqlDataAdapter dataadapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
connection.Open();
dataadapter.Fill(ds, "pembayaran_table");
connection.Close();
dataGridView3.DataSource = ds;
dataGridView3.DataMember = "pembayaran_table";
cmd.Connection.Open();
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("Data saved Successfully");
}
catch (Exception ex)
{
//throw new Exception("Error " + ex.Message);
MessageBox.Show("Receipt No. is already use");
}
}
首先,我在您的代码片段中没有看到任何数据绑定代码,例如
DataGridView.DataSource=”“
,DataGridView.DataBind()代码>
插入数据后可以执行的操作,请使用@@IDENTITY
检索插入内容的id。然后使用检索到的id捕获新记录
我注意到在您的代码片段中,您使用了相同的查询
SqlDataAdapter dataadapter = new SqlDataAdapter(cmd);
您应该编写另一个SqlStatement
并从SqlDataAdapter
例如:
// Assumes that connection is a valid SqlConnection object.
string queryString =
"SELECT CustomerID, CompanyName FROM dbo.Customers";
SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection);
DataSet customers = new DataSet();
adapter.Fill(customers, "Customers");
将记录插入数据库后,只需更新DataGridView的数据源。您可以尝试:
private void btn_add_Click(object sender, EventArgs e)
{
string bResult = textBox_ic.Text;
if (textBox_tarikh.Text == "" || textBox_resit.Text == ""||textBox_bayaran.Text == "")
{
MessageBox.Show("Please Fill In The Blank");
}
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\acap\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30";
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd ;
try
{
if(connection.State == ConnectionState.Closed) connection.Open();
cmd = new SqlCommand("INSERT Pembayaran (Description, Date, No_Resit, Payment, Studentic) VALUES (@Description, @date, @resit, @payment, @val)", connection);
cmd.Parameters.AddWithValue("@val", bResult);
cmd.Parameters.AddWithValue("@Description", label4.Text);
cmd.Parameters.AddWithValue("@date", Convert.ToDateTime(textBox_tarikh.Text));
cmd.Parameters.AddWithValue("@resit", textBox_resit.Text);
cmd.Parameters.AddWithValue("@payment", textBox_bayaran.Text);
cmd.Executenonquery();
SqlDataAdapter da = new SqlDataAdapter("Select * from Pembayaran",connection);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView3.DataSource = dt;
}
catch(Exception ex)
{
}
finally
{
if(connection.State == ConnectionState.Open) connection.Close();
}
}
绑定网格的代码在哪里?将其作为一个方法,并在cmd.ExecuteNonQuery()之后调用它们
在此之前,我使用刚刚编辑过的上述代码,但给出的错误是“无法创建pembayaran_表字段的子列表”。@ducannguyen答案有效。请尝试一下