2012-07-23 192 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; 
     } 
} 

我在做什么错在这里?如果数据集被创建,编辑并保存在同一个类中,网络上有很多方法可以保存数据集,但是我希望在mySqlService类中有选择数据集方法。我现在应该如何将数据集保存到数据库?

编辑: 我已经评论了使代码工作所需的三条线。代码现在可用。

回答

4

为了运行更新的SqlDataAdapter方法,你必须与SqlDataAdapter的的SelectCommand沿着配置InsertCommandDeleteCommandUpdateCommand属性或构造SqlCommandBuilder对象含蓄地配置这些命令。

+2

谢谢,它工作:) – 2012-07-24 07:11:10