2015-05-11 2 views
1

Следующий код не сохраняет изменения из набора данных в базу данных через dataadapter.update(). Я выводю данные на winform в текстовые поля.dataadapter.update() не сохраняется в базе данных

У меня есть кнопка сохранения, которая должна сохранять изменения, внесенные в базу данных. изменения сохраняются только в копии памяти набора данных в памяти. что мне не хватает, чтобы получить это, чтобы сохранить изменения в базе данных?

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


    } 
} 
+0

Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Вы уверены, что ваш глобальный для вашего DataSet фактически заполнен, когда вы пытаетесь сохранить? Если вы не вызываете поиск, он не будет иметь никаких данных и будет пустым. – Greg

ответ

0

Я был в состоянии решить эту проблему, изменив кнопки сохранить нажмите событие следующим образом:

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


    } 
Смежные вопросы