0

デスクトップ アプリケーション プロジェクトがあります。エントリ ページでは、datagridview にデータベース内の既存のアイテムが表示されます。新しいアイテムを入力すると、データグリッドビューに直接挿入したいと思います。つまり、datagridview をリロード/リフレッシュしたいということです。私のデータベースは MS Access にあります。

private DataTable GetData()
{
    DataTable dt = new DataTable();
    //using (SqlConnection con = new SqlConnection(conn))
    using (OleDbConnection con=new OleDbConnection(conn))
    {
        OleDbCommand cmd = new OleDbCommand("Select ID,Name from GroupDetails where comID='" + label1.Text + "'", con);
        //SqlCommand cmd = new SqlCommand("Select ID,Name from GroupDetails where comID='" + label1.Text + "'", con);
        con.Open();
        //SqlDataAdapter ad = new SqlDataAdapter(cmd);
        OleDbDataAdapter ad = new OleDbDataAdapter(cmd);
        DataSet ds = new DataSet();
        ad.Fill(ds);
        dt = ds.Tables[0];
        return dt;
    }
}

private void btnSave_Click(object sender, EventArgs e)
{
    //SqlConnection con = new SqlConnection(conn);
    OleDbConnection con = new OleDbConnection(conn);
    con.Open();
    //SqlCommand cmd;
    try
    {
        string query = "insert into GroupDetails (ID,Name) values(@ID,@Name)";
        // cmd = new SqlCommand(query,con);
        OleDbCommand cmd = new OleDbCommand(query, con);
        cmd.Parameters.AddWithValue("@ID",txtID.Text);
        cmd.Parameters.AddWithValue("@Name",txtName.Text);
        int i = cmd.ExecuteNonQuery();
        if(i!=0)
        {
            dataGridGroup.DataSource = GetData();
        }
    }
    catch (Exception ex)
    {
        ex.Message.ToString();
    }
    finally
    {
        con.Close();
    }
}

[注: SQL データベースを使用すると、問題なく動作します。]

4

1 に答える 1

1

dbDataAdapterClass (OleDbDataAdapterの継承元) には、SelectCommand、UpdateCommand、および InsertCommand があります。これらは、メソッドのいずれかを明示的に呼び出すときに、選択、更新、および挿入を担当します(たとえば、 update ;) )。コードでは、更新の方法を説明するコマンドを提供していないため、データアダプターは更新の方法を知りません。

アダプタに更新コマンドを追加して、要件を満たします。

dataadapter = new OleDbDataAdapter(sql, connection);

上記の行の後に以下のコードを追加すると、OleDbCommandBuilder がコマンドを生成します。

OleDbCommandBuilder cb = new OleDbCommandBuilder(dataadapter);

このチュートリアルが役に立ちます。

于 2013-07-30T15:43:43.917 に答える