DataTableの利用時のプログラミング への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 るしぇ  ()
投稿日時
2008/7/23 01:25:00
設計次第です。
オブジェクトは変数を用意するだけでは空っぽで使えません。
New でメモリ上に実体(インスタンス)を生成してはじめて
動作させることが出来ます。
>なんかはフォームLoad時に宣言してしまえば個々に宣言する必要が無いのでしょうか?
宣言があるなしだけでプログラムを動作させることはできません。
インスタンスをいつ生成し、そのインスタンスをどこまで保持し、
いつ破棄するか?その状況に応じて答えは変わります。
>またDisposeにしてもClose時に宣言してしまえばそれでよろしいのでしょうか。
『Close時に宣言』の意味が分かりません。なにが良いのか分かりません。
ただ、Dispose するということは、もう使えない状態にするということ
ですから、その後、Close を命令することは出来ません。Close せずに
Dispose するとデータベースの接続が閉じられないまま残ってしまう
可能性が大きいです。
Dispose と Close では処理している内容が違いますので、正しい手順で
命令してください。
もちろん Dispose を実行したなら、再度データベースに接続するには
インスタンスの生成からはじめる必要があります。
メモリ上にあった動作可能なオブジェクトは無くなってしまったのですから。
オブジェクトは変数を用意するだけでは空っぽで使えません。
New でメモリ上に実体(インスタンス)を生成してはじめて
動作させることが出来ます。
>なんかはフォームLoad時に宣言してしまえば個々に宣言する必要が無いのでしょうか?
宣言があるなしだけでプログラムを動作させることはできません。
インスタンスをいつ生成し、そのインスタンスをどこまで保持し、
いつ破棄するか?その状況に応じて答えは変わります。
>またDisposeにしてもClose時に宣言してしまえばそれでよろしいのでしょうか。
『Close時に宣言』の意味が分かりません。なにが良いのか分かりません。
ただ、Dispose するということは、もう使えない状態にするということ
ですから、その後、Close を命令することは出来ません。Close せずに
Dispose するとデータベースの接続が閉じられないまま残ってしまう
可能性が大きいです。
Dispose と Close では処理している内容が違いますので、正しい手順で
命令してください。
もちろん Dispose を実行したなら、再度データベースに接続するには
インスタンスの生成からはじめる必要があります。
メモリ上にあった動作可能なオブジェクトは無くなってしまったのですから。
投稿者 刈谷勇  ()
投稿日時
2008/7/23 00:15:00
>>現在SqlServerExpressを使い勉強中のものです。
>>それとも
>>Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
>>なんかはフォームLoad時に宣言してしまえば個々に宣言する必要が無いのでしょうか?
これは、ACCESSの例ですが、SQL Serverでの接続は出来ていますか?
とりあえず、そこは問題ないとしてお話します。
>>そこで質問なのですが、ラジオボタン等を使用し接続したいテーブルが複数存在する場合、ラジオボタン処理のところ全部に上記のプログラムを記載する必要があるのでしょうか?
同じDB上にあるのであれば、SQLCm.CommandText = "SELECT 説明 FROM T_目マスタ" の部分をラジオボタン毎に変更すればいいと思います。
(補足)
同じ様な処理が複数の箇所に出てくる場合は、メソッドにしておくほうがいいです。
>>それとも
>>Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
>>なんかはフォームLoad時に宣言してしまえば個々に宣言する必要が無いのでしょうか?
これは、ACCESSの例ですが、SQL Serverでの接続は出来ていますか?
とりあえず、そこは問題ないとしてお話します。
>>そこで質問なのですが、ラジオボタン等を使用し接続したいテーブルが複数存在する場合、ラジオボタン処理のところ全部に上記のプログラムを記載する必要があるのでしょうか?
同じDB上にあるのであれば、SQLCm.CommandText = "SELECT 説明 FROM T_目マスタ" の部分をラジオボタン毎に変更すればいいと思います。
(補足)
同じ様な処理が複数の箇所に出てくる場合は、メソッドにしておくほうがいいです。
投稿者 hoido  ()
投稿日時
2008/7/22 23:00:00
現在SqlServerExpressを使い勉強中のものです。
多分大変初歩的な質問だと思うのですがなかなか答えにたどりつけないのでご指導お願いしたいと思います。
現在DataTableの利用のところの下記のプログラムを参考にさせていただきながら勉強しております。
'▼データ取得
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand
Dim Adapter As New OleDbDataAdapter(SQLCm)
Dim Table As New DataTable
SQLCm.CommandText = "SELECT 説明 FROM T_目マスタ"
Adapter.Fill(Table)
'▼値の表示
DataGridView1.DataSource = Table
'▼後処理
Table.Dispose()
Adapter.Dispose()
SQLCm.Dispose()
Cn.Dispose()
そこで質問なのですが、ラジオボタン等を使用し接続したいテーブルが複数存在する場合、ラジオボタン処理のところ全部に上記のプログラムを記載する必要があるのでしょうか?
それとも
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
なんかはフォームLoad時に宣言してしまえば個々に宣言する必要が無いのでしょうか?
またDisposeにしてもClose時に宣言してしまえばそれでよろしいのでしょうか。
ご指導お願いいたします。
多分大変初歩的な質問だと思うのですがなかなか答えにたどりつけないのでご指導お願いしたいと思います。
現在DataTableの利用のところの下記のプログラムを参考にさせていただきながら勉強しております。
'▼データ取得
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand
Dim Adapter As New OleDbDataAdapter(SQLCm)
Dim Table As New DataTable
SQLCm.CommandText = "SELECT 説明 FROM T_目マスタ"
Adapter.Fill(Table)
'▼値の表示
DataGridView1.DataSource = Table
'▼後処理
Table.Dispose()
Adapter.Dispose()
SQLCm.Dispose()
Cn.Dispose()
そこで質問なのですが、ラジオボタン等を使用し接続したいテーブルが複数存在する場合、ラジオボタン処理のところ全部に上記のプログラムを記載する必要があるのでしょうか?
それとも
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
なんかはフォームLoad時に宣言してしまえば個々に宣言する必要が無いのでしょうか?
またDisposeにしてもClose時に宣言してしまえばそれでよろしいのでしょうか。
ご指導お願いいたします。
刈谷様、るしぇ様回答ありがとうございました。
大変参考になりました。