- PR -

ADO.NETでSQLサーバー接続

1
投稿者投稿内容
z
常連さん
会議室デビュー日: 2004/04/20
投稿数: 21
投稿日時: 2004-04-20 14:56
下記ソースなのですが、メッセージボックスにNULLが来ているようで
エラーします。接続がされていないのでしょうか?

Dim cn As Data.OleDb.OleDbConnection
Dim da As Data.OleDb.OleDbDataAdapter
Dim cm As Data.OleDb.OleDbCommand
Dim pa As Data.OleDb.OleDbParameter
Dim ds As DataSet

cn = New Data.OleDb.OleDbConnection
cn.ConnectionString = _
"provider=sqloledb.1;" & _
"user id=sa;" & _
"initial catalog=sk_sql;" & _
"data source= TPX22"

da = New Data.OleDb.OleDbDataAdapter
cm = New Data.OleDb.OleDbCommand
cm.Connection = cn
cm.CommandText = "SELECT * FROM M31_TK"
da.SelectCommand = cm
MessageBox.Show(da.Fill(ds, "TKNAME"))
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-04-20 15:00
NAL-6295です。

ConnectionをOpenする処理が記述されてないようです。←間違い。ごめんなさい。

#あう、Adapterの時は記述しなくても良いんだった・・・。



[ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-04-20 15:09 ]
z
常連さん
会議室デビュー日: 2004/04/20
投稿数: 21
投稿日時: 2004-04-20 15:05
引用:

NAL-6295さんの書き込み (2004-04-20 15:00) より:
NAL-6295です。

ConnectionをOpenする処理が記述されてないようです。



本をみようみまねでコーディングしていますが
openはないんです どこに入れればいいでしょうか?
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-04-20 15:16
NAL-6295です。

エラーメッセージの詳細を記述して貰えないでしょうか。
あと、できれば、どのステップで例外が発生するのかも記述してもらえないでしょうか。
z
常連さん
会議室デビュー日: 2004/04/20
投稿数: 21
投稿日時: 2004-04-20 15:24
エラーメッセージ:
System.ArgumentNullException' のハンドルされていない例外が system.data.dll で発生しました。

追加情報 : 値を Null にすることはできません。

エラー発生ロジック:
MessageBox.Show(da.Fill(ds, "TKNAME"))

です、宜しくお願いします。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-04-20 15:29
引用:

zさんの書き込み (2004-04-20 15:24) より:
エラーメッセージ:
System.ArgumentNullException' のハンドルされていない例外が system.data.dll で発生しました。

追加情報 : 値を Null にすることはできません。

エラー発生ロジック:
MessageBox.Show(da.Fill(ds, "TKNAME"))


DataSetがNothingのままじゃないですか?
MessageBox.Showメソッドでエラーになってるんではなくて、
da.Fill メソッドでエラーになってると思いますよ。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-04-20 15:37
NAL-6295です。

なちゃさんの仰るとおり、DataSetのインスタンスが生成されていないのが原因ですね。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-04-20 15:43
MessageBox.Show(da.Fill(ds, "TKNAME"))

2行で書くと何処でエラーになるかが分かりやすい。

ret = da.Fill(ds, "TKNAME")
MessageBox.Show(ret)

VS.NETであれば、ブレークポイントを置いて、dsをクイックウオッチとか。
1

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