方法是更新DataSet,而不是底层数据库,为什么?

时间:2015-08-31 07:04:38

标签: c# ado.net sql-update dataset

我有一个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]);
    }
}

0 个答案:

没有答案