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

解決済みの質問

VBExpressからSQLサーバーへの接続

VBExpress2010をDLしSQLServercompactをいじろうと思ったのですが、接続がそもそも出来ず詰まってしまいました。

適当にフォームを作ってボタンを配置し、

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim St As String
Dim Cn As New System.Data.SqlClient.SqlConnection
Dim SQL As System.Data.SqlClient.SqlCommand
Dim ServerName As String = "C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples\Northwind.sdf"
    Dim DatabaseName As String = "Northwind" 'データベース

St = "Server=""C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples\Northwind.sdf"";"
St &= "integrated security=SSPI;"
St &= "initial catalog = Northwind"

Cn.ConnectionString = St

SQL = Cn.CreateCommand

SQL.CommandText = "SELECT FirstName FROM Employees"

Cn.Open()

MsgBox(SQL.ExecuteScalar)

Cn.Close()
SQL.Dispose()
Cn.Dispose()

End Sub

としました。結構単純な流れだと思うのですがCn.Open()の部分で「sqlexpressionはハンドルされませんでした」とエラーが出ます。 SQL Network Interfaces, error: 26 だそうです。資格情報の有無もなにもデータベースエクスプローラで内部の閲覧は出来るし、パスワードフリーなのでどのセッションが不可なのか見当がつきません。アドバイスよろしくお願い致します。

投稿日時 - 2011-11-14 09:50:32

QNo.7132293

困ってます

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

方法は変更するので心苦しいのですが、ADOを使用して接続したほうが良いように思います。
    Dim StrDBConect As String        'DB接続文字列
    Dim AdoConnect As New ADODB.Connection  'ADO接続
    Dim AdoCommand As New ADODB.Command   'ADOストアド実行用
    Dim AdoRecordset As New ADODB.Recordset 'ADOレコードセット実行用
    Dim StrSQL As String           'クエリ文挿入用
    StrDBConect = ""
    StrDBConect = StrDBConect & "Provider=SQLOLEDB;"
    StrDBConect = StrDBConect & "Data Source=データベースサーバ名;"
    StrDBConect = StrDBConect & "Initial Catalog=Northwind;"
    StrDBConect = StrDBConect & "Persist Security Info=True;"
    StrDBConect = StrDBConect & "User ID=SQL Server ログインユーザID;"
    StrDBConect = StrDBConect & "Password=SQL Server ログインパスワード;"
    
    'データベースに接続
    AdoConnect.ConnectionString = StrDBConect
    AdoConnect.Open()

    'コマンドを実行する接続先を指定
    AdoCommand.ActiveConnection = AdoConnect

    'SQL文を作成する
    StrSQL = ""
    StrSQL = StrSQL & "SELECT FirstName FROM Employees;"
    
    'パラメータを?マークで指定する
    AdoCommand.CommandText = StrSQL


    AdoRecordset = AdoCommand.Execute
    Do Until AdoRecordset.EOF

      msgbox(AdoRecordset("FirstName").Value)
      AdoRecordset.MoveNext()
    Loop
    AdoRecordset.Close()
    AdoConnect.Close()
    AdoRecordset = Nothing
    AdoCommand = Nothing
    AdoConnect = Nothing

ちなみに上記の方法でプログラミングを行う場合、
参照定義に「Microsoft ActiveX Data Objects 2.x Library」を追加する必要があります。

※ 内容を見やすくするため、ソースの前には全角スペースを入れています。
複写される場合は半角スペースに置換してください。

投稿日時 - 2011-11-14 17:28:48

ANo.1

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

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

回答(1)

あなたにオススメの質問