Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法正在更新数据集,但不更新基础数据库,为什么?_C#_Ado.net_Sql Update_Dataset - Fatal编程技术网

C# 方法正在更新数据集,但不更新基础数据库,为什么?

C# 方法正在更新数据集,但不更新基础数据库,为什么?,c#,ado.net,sql-update,dataset,C#,Ado.net,Sql Update,Dataset,我有一个类型为Windows窗体I Visual Studio 2010 Express的项目 我已经创建了一个基于服务的本地数据库,能够在我的表单上的文本框中显示它的数据,并通过按钮“下一步”和“上一步”跳过每个记录。所以我有一个到数据库的连接 但是,当我单击“保存”按钮时,希望使用文本框中的数据更新数据库时,数据仅存储在数据集中,并在我使用按钮到达文本框位置时显示在文本框中,而不存储在数据库中。下一次打开应用程序时,新的“存储”记录将因此消失 知道我的代码中的错误在哪里吗?非常感谢 以下是F

我有一个类型为Windows窗体I Visual Studio 2010 Express的项目

我已经创建了一个基于服务的本地数据库,能够在我的表单上的文本框中显示它的数据,并通过按钮“下一步”和“上一步”跳过每个记录。所以我有一个到数据库的连接

但是,当我单击“保存”按钮时,希望使用文本框中的数据更新数据库时,数据仅存储在数据集中,并在我使用按钮到达文本框位置时显示在文本框中,而不存储在数据库中。下一次打开应用程序时,新的“存储”记录将因此消失

知道我的代码中的错误在哪里吗?非常感谢

以下是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;
}
下面是我的类数据库连接的代码:

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]);
    }
}

如果数据库是作为项目的一部分创建的数据库;每次运行时都会将其复制到bin文件夹,然后会更新bin文件夹中的版本;但是,当您再次运行时,源版本会再次复制到bin文件夹,过度写入以前的内容(即丢失更改)。你能确认你数据库的路径吗?你好。是的,在这里:数据库“Database1”与Program.cs文件和Form1.cs文件放在同一个文件夹中。这是bin文件夹上方的一个级别。在bin文件夹中存储的Debug文件夹中,有一个Database1的副本,还有Database1\u log.Ok。。您可以通过运行该程序来测试数据库写入是否正常工作;做改变;然后退出。现在进入bin文件夹,通过exe文件直接运行程序;您的更改生效了吗?或者,您可以通过在bin目录中打开到db的新数据库连接并查看其中的数据来进行测试。如果这一切都是好的;那么问题就是每次都要复制数据库。若要更改,请将数据库放在一个单独的文件夹中,并将连接字符串改为指向该文件夹。谢谢您的建议,我将尝试这样做。