- PR -

ADO.NET で追加ができなくて困っています

1
投稿者投稿内容
NAK
ベテラン
会議室デビュー日: 2002/10/27
投稿数: 91
投稿日時: 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
yasu
会議室デビュー日: 2002/10/15
投稿数: 7
お住まい・勤務地: 大阪府
投稿日時: 2002-10-28 11:17
ソースコードを見た限りでは、SELECT文しか作成していないようです。
その他のSQL(INSERT, UPDATE, DELETEなど)は個別に作成し、OleDbDataAdapterに
登録しないといけません。
詳しくはヘルプで「OleDbDataAdapter」−「コンストラクタ」を見て下さい。
OleDbCommandを作成し、OleDbDataAdapterに登録するコードが載っています。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-10-28 16:19
da.Update(ds, "tbl1")の前に以下のコードを追加します。

Dim cb As New OleDbCommandBuilder(da)

これでInsert, Update, Delete用のSQLが
自動生成されます。

Happy Programmig !
1

スキルアップ/キャリアアップ(JOB@IT)