重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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 だそうです。資格情報の有無もなにもデータベースエクスプローラで内部の閲覧は出来るし、パスワードフリーなのでどのセッションが不可なのか見当がつきません。アドバイスよろしくお願い致します。

A 回答 (1件)

方法は変更するので心苦しいのですが、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」を追加する必要があります。

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す