こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エラーを発生させたい(SQLサーバーへの接続)

ネットのサンプルコードでSQLサーバーの接続テストをしましたが、
存在しないSQL文でもエラーになりません。(vb2005です)

Sub sqlサーバーへ接続()
' 接続文字列を生成する

Dim Cn As New System.Data.SqlClient.SqlConnection
Dim SQL As System.Data.SqlClient.SqlCommand

Dim stConnectionString As String = String.Empty
stConnectionString &= "Data Source = ××××\SQLEXPRESS;"
stConnectionString &= "Initial Catalog = ×××;"
stConnectionString &= "Integrated Security = SSPI;"

' SqlConnection の新しいインスタンスを生成する (接続文字列を指定)
Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString)

' データベース接続を開く
cSqlConnection.Open()
SQL = Cn.CreateCommand
SQL.CommandText = "SELECT テーブル1.あああフィールド1 FROM テーブル1" '間違ってても進んでしまう。

' 接続に成功した旨を表示する
MessageBox.Show("Microsoft SQL Server に接続されました")

' データベース接続を閉じる (正しくは オブジェクトの破棄を保証する を参照)
cSqlConnection.Close()
cSqlConnection.Dispose()
End Sub

「あああフィールド1」なんて存在しないのに、先に進んでしまいます。
エラー処理の仕方を教えてください。
よろしくお願いします。

投稿日時 - 2009-07-16 22:08:41

QNo.5131307

暇なときに回答ください

質問者が選んだベストアンサー

そりゃ,コマンドを実行していませんから。

SqlCommand.Execute~系のメソッドを呼び出すか,
SqlDataAdapter.Fillを使って,実際にコマンドを発行するまで,
SELECT文はDBに通知されません。

投稿日時 - 2009-07-17 02:25:25

お礼

そういう仕組みなのですね。
ご回答ありがとうございます。

投稿日時 - 2009-07-18 01:11:59

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

SQL文がDBへExecuteしていないですね。
Reader付けて拾ったらえらーが返るはずです。

dim SQLReadItem As SqlClient.SqlDataReader
cSqlConnection.Open()
SQL = Cn.CreateCommand
SQL.CommandText = "SELECT テーブル1.あああフィールド1 FROM テーブル1"
Try
  SQLReadItem = SQL.ExecuteReader
  msg = "Try Completed"
Catch
  msg = Err.Description
  SQLSelect = False
End Try

msgbox(msg)

という感じでいかがですか?

投稿日時 - 2009-07-17 11:26:31

お礼

ご回答ありがとうございます。
Executeが大切なのですね。

投稿日時 - 2009-07-18 01:14:36

ANo.2

よく利用するサイトでADO接続があったので載せておきます。

■SQLを実行する
http://jeanne.wankuma.com/tips/vb.net/sqlserver/executenonquery.html
■SQLの実行結果を取得する
http://jeanne.wankuma.com/tips/vb.net/sqlserver/executereader.html

投稿日時 - 2009-07-17 10:44:33