- ベストアンサー
エラーを発生させたい(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」なんて存在しないのに、先に進んでしまいます。 エラー処理の仕方を教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そりゃ,コマンドを実行していませんから。 SqlCommand.Execute~系のメソッドを呼び出すか, SqlDataAdapter.Fillを使って,実際にコマンドを発行するまで, SELECT文はDBに通知されません。
その他の回答 (2)
- buraigasho
- ベストアンサー率78% (32/41)
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) という感じでいかがですか?
お礼
ご回答ありがとうございます。 Executeが大切なのですね。
- kazuhisa01
- ベストアンサー率32% (158/487)
よく利用するサイトでADO接続があったので載せておきます。 ■SQLを実行する http://jeanne.wankuma.com/tips/vb.net/sqlserver/executenonquery.html ■SQLの実行結果を取得する http://jeanne.wankuma.com/tips/vb.net/sqlserver/executereader.html
お礼
そういう仕組みなのですね。 ご回答ありがとうございます。