Accessデータベースのデータを更新するには?


イルカ  2003-06-25 03:00:20  No: 78423

VB.netでデータベースのデータを更新(追加、変更、削除)をしたいのですが、下記のようなコードを作成したのですが追加ができません。
-------------------------------------------------------------------
Dim oADP As OleDbDataAdapter
Dim oDs As DataSet
Dim InsertCmd As OleDbCommand
Dim strSQL As String

    strSQL = "INSERT INTO Baitai (BaitaiCode, BaitaiName)" & _
            " VALUES ('" & txtCode.Text & "', '" & txtName.Text & "')"

    InsertCmd = New OleDbCommand(strSQL1, oDbConSting)

    oADP = New OleDbDataAdapter()

    oADP.InsertCommand = InsertCmd

----------------------------------------------------------------
以上です。初めてでいろいろと苦戦しています。おかしいところがあれば教えて下さい。よろしくお願い致します。


nanashi  2003-06-25 19:01:10  No: 78424

このOleDbなんとかってのは使ったことないのでよく分かりませんが

>    InsertCmd = New OleDbCommand(strSQL1, oDbConSting)

ここで使ってるstrSQL1ってのはなんですかね?
ソース内に出て来てないようですが。


イルカ  2003-06-25 19:28:19  No: 78425

すいません。
その上のINSERT文のstrSQLのことです。

InsertCmd = New OleDbCommand(strSQL, oDbConSting)


イルカ  2003-06-25 20:33:17  No: 78426

もしくわDataSetオブジェクトを使用して特定のデータの更新する方法がありますか?


魔界の仮面弁士  2003-06-25 23:33:00  No: 78427

DataAdapter.InsertCommandプロパティを使っているという事は、
(DataAdapter.Updateなどをを使って)DataTable経由で
更新しようとしているのでしょうか?

そうではなく、単にINSERT SQLを発行したいだけなのであれば、
Command.ExecuteNonQueryメソッドを発行するだけで済むかと思いますよ。


イルカ  2003-06-25 23:46:23  No: 78428

DataTable経由で更新したいのですが、MSDNとか見ているのですが理解ができないんです。


クリリン  2003-06-26 00:26:26  No: 78429

多分、oDbConStingはOleDbConnectionの事と前提して記述します。
Insert文を流したいだけであれば、

Dim m_cmd As IDbCommand
Dim strSQL as string = "INSERT INTO Baitai (BaitaiCode, BaitaiName)" & _
            " VALUES ('" & txtCode.Text & "', '" & txtName.Text & "')"

  Try
    m_cmd = m_oDbConSting.CreateCommand
    m_cmd.CommandText = strSQL
    m_cmd.ExecuteNonQuery() 'コマンド実行
  Catch ex As Exception
    'エラートラップ
    System.Windows.Forms.MessageBox.Show(ex.Message)
  End Try

で実行できますよ


イルカ  2003-06-26 00:48:18  No: 78430

クリリンさんのを参考にしてみたのですが、
> m_cmd.ExecuteNonQuery() 'コマンド実行
で、「ExecuteNonQueryには接続が開かれていて使用可能なことが必要です」
とエラーがでるのですが
ちなみに、oDbConStringはOleDbConnectionのことです。


クリリン  2003-06-26 00:53:49  No: 78431

OleDbConnectionは先にOpenしている事が前提です。
もちろん、私が記述しているコードもそうですが、
DataAdapterを使用している場合でも同様です。
ただし、DataAdapterはOleDbConnectionをOpenした後は、
接続情報を保持しているので、OleDbConnectionをCloseしてもかまわなかったと思います。


クリリン  2003-06-26 01:14:20  No: 78432

ADO.NETの操作を行なうクラスを作りました。
ただし、DataAdapterを使用していませんので、読み取り専用です。
また、DataReaderの性質上、機能が乏しいのであしからず…

http://www.takonet.co.jp/~pegasus/samples/ADO.NET.lzh


イルカ  2003-06-26 01:36:03  No: 78433

クリリンさんありがとうございます。
しかし、私が行いたいのはDataSetオブジェクトを利用して非接続型のデータベースアクセスを考えているのですけど…


クリリン  2003-06-26 01:51:14  No: 78434

ふむ、確かに
「ExecuteNonQueryには接続が開かれていて使用可能なことが必要です」
とでますねぇ・・・
ちょっと調べて見ます。
ついでに、DataSet用のクラスも作成中ですし…


クリリン  2003-06-26 02:55:14  No: 78435

非接続型といえど、データを追加、更新、削除する場合はそのタイミングで接続しないといけないみたいです。
なんか、このやり方って、ADOの時代からやっていたんですけどねぇ…
今の所、DataSetの大きなメリットって見出せないのですが、どうなんでしょうか?知りたいところです。何かわかりましたら報告します。


イルカ  2003-06-26 02:58:44  No: 78436

やっぱりそうなんですかね…
自分も調べてみます。


岡田 之仁  2003-06-29 04:44:05  No: 78437

とりあえずですが・・・

http://www.gotdotnet.com/japan/team/fieldevangelists/fusaito/meikaiADONET1.aspx

ここをご覧になりましたか?
基本的には、SQL Server へと、Accessへの接続には、Sql... と、OleDb...
と違いますが、同じなので・・・

お試し下さい。

以上。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加