1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { // DataTableはテーブルキャッシュで、そのコレクションがDataSet。 // DataReader/Adapter // DataReaderはループで取得し、Read()されるまで読み込まれないため軽い。 // DataAdapterはFill()で取得してDataSetに全て入る。(da -> ds) // DataAdapterへの更新はUpdate()で処理。 // 実験 // create table tb([ID] autoincrement, [age] int); OleDbConnection con = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + @"\db.mdb" + ";"); //con.Open(); //ここのOpen()は不要。Open()するならClose()必要。 //Open()すると接続型となる。 //データアダプタの作成/データセットの作成 OleDbDataAdapter da = new OleDbDataAdapter("select * from tb", con); DataSet ds = new DataSet(); //これがないとUpdate()でエラー new OleDbCommandBuilder(da); da.Fill(ds); //新しい行の作成 DataRow dr = ds.Tables[0].NewRow(); dr[1] = 10; ds.Tables[0].Rows.Add(dr); //データグリッドビューを作成し、データソースを設定 DataGridView d = new DataGridView(); d.DataSource = ds.Tables[0]; Controls.Add(d); //DataAdapterのUpdate()を実行。 Button btn = new Button(); btn.Top = Height - 100; Controls.Add(btn); btn.Click += new EventHandler((object sender, EventArgs e) => { da.Update(ds.Tables[0]);//新しい行が追加されているのでUpdate()ではInsertが実行される。 }); //con.Close(); //InitializeComponent(); } } } |