4

データセットをデータベースに保存しようとしています。別のクラスからデータセットを取得しました。これで、データグリッドビューのユーザーがフォームに変更を加え、変更したデータセットをデータベースに保存する必要があります。

私は以下のコードを使用しています。エラーは発生しませんが、データはデータベースに保存されていません。

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クラスにselectdatasetメソッドが必要です。データセットをデータベースに保存するにはどうすればよいですか?

編集:コードを機能させるために必要な3行にコメントしました。コードが機能するようになりました。

4

2 に答える 2

4

のUpdateメソッドを実行するには、およびプロパティをSqlDataAdapterとともにSqlDataAdapter構成するか、これらのコマンドを暗黙的に構成するSqlCommandBuilderオブジェクトを作成する必要があります。InsertCommandDeleteCommandUpdateCommandSelectCommand

于 2012-07-23T08:08:01.193 に答える
4

まずhttp://support.microsoft.com/kb/308507でこのチュートリアルに従ってから、ニーズに合わせて調整してみてください。

于 2012-07-23T08:08:33.477 に答える