- - PR -
ADO.NET で追加ができなくて困っています
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2002-10-27 20:27
こんにちは。
ADO.NETでACCESS(MDB)のテーブルに一行挿入する簡単なプログラムを作ってみたのですが、実行すると、「更新には新しい行を含むDataRowコレクションが渡されたとき、有効なINSERT COMMANDが必要です。」 となってしまい。うまくいきません。 ちなみにプログラムは下記のような内容です。 コンソールアプリケーションで、cドライブ直下にtest.mdbというデータベースを作成し、列a,b,cからなるtbl1というテーブルに値("a","b","c")を追加するだけなのですが。。。なにしろいい例文がないので四苦八苦です。 どなたか教えてください。 Sub Main() Dim sConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\test.mdb" Dim ds As DataSet Dim conn As OleDbConnection conn = New OleDbConnection(sConn) conn.Open() ds = New DataSet("tbl1") Dim da As OleDbDataAdapter = New OleDbDataAdapter("select * from tbl1", conn) da.Fill(ds, "tbl1") Dim tbl As DataTable tbl = ds.Tables("tbl1") Dim row As DataRow row = tbl.NewRow row("a") = "a" row("b") = "b" row("c") = "c" tbl.Rows.Add(row) da.Update(ds, "tbl1") ds.AcceptChanges() conn.Close() End Sub |
|
投稿日時: 2002-10-28 11:17
ソースコードを見た限りでは、SELECT文しか作成していないようです。
その他のSQL(INSERT, UPDATE, DELETEなど)は個別に作成し、OleDbDataAdapterに 登録しないといけません。 詳しくはヘルプで「OleDbDataAdapter」−「コンストラクタ」を見て下さい。 OleDbCommandを作成し、OleDbDataAdapterに登録するコードが載っています。 |
|
投稿日時: 2002-10-28 16:19
da.Update(ds, "tbl1")の前に以下のコードを追加します。
Dim cb As New OleDbCommandBuilder(da) これでInsert, Update, Delete用のSQLが 自動生成されます。 Happy Programmig ! |
1
