c# - dataadapter.update() 不保存到数据库

标签 c# dataset dataadapter

以下代码未通过 dataadapter.update() 将数据集的更改保存到数据库。我将 winform 上的数据显示到文本框。

我有一个保存按钮,用于保存对数据库所做的更改。更改仅保存到数据集的内存副本中。为了将更改保存到数据库,我缺少什么?

public partial class Frm_Main : Form
{
    DataSet ds = new DataSet();
    SqlDataAdapter adapter = new SqlDataAdapter();

    BindingSource binding_Login = new BindingSource();
    SqlCommandBuilder builder = new SqlCommandBuilder();
    SqlConnection connection = new SqlConnection();
    SqlCommand sqlcommand = new SqlCommand();

    public Frm_Main()
    {
        InitializeComponent();

    }

    private void FrmMain_Load(object sender, EventArgs e)
    {
       this.Text = "Main (" + GlobalVars.username.ToString() + ")";
       this.AcceptButton = btnSearch;
       connection.ConnectionString = GlobalVars.sqlConnString;
    }

    private void FrmMain_Close(object sender, EventArgs e)
    {
        Close();
    }

    private void btnSearch_Click(object sender, EventArgs e)
    {

        if(!string.IsNullOrEmpty(txtSearch.Text))
        {
            Search();

        }
    }


    public void Search()
    {
        string sqlcommandstring = "select * from login where loginname like @search;";

        connection.Open();

        sqlcommand.CommandText = sqlcommandstring;
        sqlcommand.Connection = connection;

        sqlcommand.Parameters.AddWithValue("@search", "%" + txtSearch.Text + "%");

        adapter.SelectCommand = sqlcommand ;
        builder.DataAdapter = adapter;

        adapter.Fill(ds,"Login") ;

        BindControls();

        txtLoginName.DataBindings.Add(new Binding("Text", binding_Login, "LoginName"));
        txtPassword.DataBindings.Add(new Binding("Text", binding_Login, "Password"));

        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.DeleteCommand = builder.GetDeleteCommand();
        adapter.InsertCommand = builder.GetInsertCommand();
    }

    private void btnNext_Click(object sender, EventArgs e)
    {
        binding_Login.MoveNext();
    }

    protected void BindControls()
    {

        binding_Login.DataSource = ds.Tables[0];

    }

    private void btnPrevious_Click(object sender, EventArgs e)
    {
        binding_Login.MovePrevious();
    }

    private void btnSave_Click(object sender, EventArgs e)
    {

        ds.AcceptChanges();
        adapter.Update(ds.Tables[0]);


    }
}

最佳答案

我能够通过将保存按钮点击事件更改为以下内容来解决问题:

private void btnSave_Click(object sender, EventArgs e)
    {
        this.binding_Login.EndEdit();
        adapter.Update(this.ds.Tables[0]);


    }

关于c# - dataadapter.update() 不保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158645/

相关文章:

C# : WCF Service with IXMLSerializable member turns into DataSet

c# - 为什么在 C# 数据集中将 SQL 整型数字列映射为 System.Decimal?

c# - SqlDependency.Start(connectionString) 每次返回 false

c# - 使用 mysql 数据库制作项目列表

hadoop - 如何用拉丁 pig 按地区分组结果?

python - H5PY键读取速度慢

c# - 使用 TableAdapter 重新加载数据

mysql - DataAdapter 不会自行关闭连接

c# - 为什么我在尝试将公共(public)方法的默认值设置为颜色时收到错误消息?

c# - 如何在 c# 后面的代码中添加带有 objectdatasource 的 gridview?