2012-07-23 4 views
3

데이터 집합을 데이터베이스에 저장하려고합니다. 다른 클래스의 데이터 세트가 있습니다. 이제 사용자가 datagridview에서 양식을 변경하고 변경된 데이터 세트를 데이터베이스에 저장해야합니다.데이터베이스에 데이터 집합 저장

아래 코드를 사용하고 있습니다. 오류는 발생하지 않지만 데이터는 데이터베이스에 저장되지 않습니다.

public class myForm  
{  
    DataSet myDataSet = new DataSet(); 
    public void PouplateGridView() 
    { 
     try 
     { 
      SqlService sql = new SqlService(connectionString); // Valid Connection String, No Errors 


      myDataSet = sql.ExecuteSqlDataSet("SELECT * FROM Qualification"); // Returns a DataSet 
      myDataGridView.DataSource = myDataSet.Tables[0]; 
      myDataGridView.AutoGenerateColumns = true; 
      myDataGridView.AutoResizeColumns(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.InnerException + Environment.NewLine + ex.Message, "Error"); 
      this.Close(); 
     } 

    } 

    private void btnSave_Click(object sender, EventArgs e) 
    { 
     //myDataSet.AcceptChanges();EDIT:Don't know why, but this line wasn't letting the chane in db happen. 
     SqlCommand sc = new SqlCommand("SELECT * FROM Qualification", sql.Connection); //ADDED after Replies 
     SqlDataAdapter da = new SqlDataAdapter(); 
     SqlCommandBuilder scb = new SqlCommandBuilder(da); //ADDED after replies 
     da.Update(myDataSet.Tables[0]); 
    } 
} 
public class mySqlService 
{ 
public DataSet ExecuteSqlDataSet(string sql) 
     { 
      SqlCommand cmd = new SqlCommand(); 
      this.Connect(); 
      SqlDataAdapter da = new SqlDataAdapter(); 
      DataSet ds = new DataSet(); 

      cmd.CommandTimeout = this.CommandTimeout; 
      cmd.Connection = _connection; 
      if (_transaction != null) cmd.Transaction = _transaction; 
      cmd.CommandText = sql; 
      cmd.CommandType = CommandType.Text; 

      da.SelectCommand = cmd; 

      da.Fill(ds); 
      da.Dispose(); 
      cmd.Dispose(); 

      if (this.AutoCloseConnection) this.Disconnect(); 

      return ds; 
     } 
} 

여기서 내가 뭘 잘못하고 있니? datset을 저장하는 방법은 웹상에 있습니다. datset을 만들고, 편집하고, 같은 클래스에 저장하는 등의 방법이 있습니다. 그러나 mySqlService 클래스에 select 데이터 세트 메소드를 갖고 싶습니다. 어떻게하면 데이터 집합을 데이터베이스에 저장할 수 있습니까?

편집 : 코드 작업을 수행하는 데 필요한 세 줄을 주석으로 표시했습니다. 이제 코드가 작동합니다. 업데이트는 SqlDataAdapter를의 SelectCommand과 함께 InsertCommand, DeleteCommandUpdateCommand 속성을 구성하거나 암시 적으로 이러한 명령을 구성 SqlCommandBuilder 개체를 생성하는 데 필요한 SqlDataAdapter 방법을 실행하기 위해

답변

4

.

+2

감사합니다. 작동했습니다 :) –

4

이 튜토리얼을 여기 http://support.microsoft.com/kb/308507에 따라 시도한 다음 필요에 맞게 수정하십시오.

+1

감사합니다. :)이 기사는 AVD가 대답 한 내용을 자세히 설명합니다. :) –