我有一个Windows Forms i Visual Studio 2010 Express类型的项目。
我创建了一个基于服务的本地数据库,并且能够在我的表单上的文本框中显示其数据,并使用“Next”和“Previous”按钮跳过每个记录。所以我与数据库有联系。
但是,当我想在单击按钮“SAVE”时使用来自文本框的数据的新记录更新数据库时,数据仅存储在数据集中,并在我到达其位置时显示在文本框中按钮,但不存储在数据库中。下次我打开应用程序时,新的“存储”记录就不见了。
知道代码中的错误在哪里?非常感谢。
以下是Form1.cs文件中保存按钮的代码:
private void btnSave_Click(object sender, EventArgs e)
{
DataRow row = ds.Tables[0].NewRow();
row[1] = textBox1.Text;
row[2] = textBox2.Text;
row[3] = textBox3.Text;
row[4] = textBox4.Text;
ds.Tables[0].Rows.Add(row);
try
{
objConnect.UpdateDatabase(ds);
MaxRows += 1;
inc = MaxRows - 1;
MessageBox.Show("Database updated");
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
btnCancel.Enabled = false;
btnSave.Enabled = false;
btnAddNew.Enabled = true;
}
这是我的类DatabaseConnection的代码:
class DatabaseConnection
{
private string sql_string;
private string strCon;
private SqlDataAdapter da_1;
public string Sql { set { sql_string = value; } }
public string connection_string { set { strCon = value; } }
public DataSet GetConnection { get { return MyDataSet(); } }
private DataSet MyDataSet()
{
SqlConnection con = new SqlConnection(strCon);
con.Open();
da_1 = new SqlDataAdapter(sql_string, con);
DataSet dat_set = new System.Data.DataSet();
da_1.Fill(dat_set, "Table_Data_1");
con.Close();
return dat_set;
}
public void UpdateDatabase(System.Data.DataSet ds)
{
SqlCommandBuilder cb = new SqlCommandBuilder(da_1);
cb.DataAdapter.Update(ds.Tables[0]);
}
}