none
データベースの接続について RRS feed

  • 質問

  • AccessからVB+SQLSErverへの移行を勉強中なのですが、Accessの場合、非連結フォームを用いる場合は、データの取得・更新の際にデータベースへの接続・切断ということをしていたのですが、VBの場合は、どのようにすることが一般的なのでしょうか。

    また、Accessでリンクテーブルを使用する場合は、

    Con=CurrentProject.Connection

    で指定をすることができたのですが、VBの場合は、ウィザードを使用してデータソースを作成でき、その最後のほうで、接続文字列を構成ファイルに保存するといった部分があったように思うのですが、こちらを活用することができるのでしょうか。

    現在は、ConnectionStringに対して、直接記述をしているのですが、ヘルプを調べているうちに、System.Configurationという項目の何かを使用することで、保存してある接続文字列を取り出すことができるような記述がしてあったのですが、以下の部分でとまっています。

    Dim ConStr As String = "HPSYSTEMSQLConnection"
        ReadOnly Property Connectionstrings() As String
            Get
                Connectionstrings = ConStr
                Exit Property
            End Get
        End Property

    dim Con as New SqlConnection=(ここへの指定方法がわかりません。)

    どうか、アドバイスをお願いします。

    2006年12月16日 21:07

回答

  • Visual Basic Express EditionというIDEの機能として、リモートのデータベースへの接続はできません。ただし、あくまでIDEとしてサポートしていないということであって、コードで手動でconnectionを書いてあげれば接続することができます。IDEはあくまでコードを便利に効率的に作成するツールであって、その機能が、Visual Basic Express Editionでは一部制限されているということです。IDEがなくても、その気になれば、メモ帳だけあればプログラムが作れないわけではありません。ただし、かなり大変でしょうが。(^^;
    2006年12月30日 3:41
    モデレータ

すべての返信

  •  TI-cb400s さんからの引用

    Accessの場合、非連結フォームを用いる場合は、データの取得・更新の際にデータベースへの接続・切断ということをしていたのですが、VBの場合は、どのようにすることが一般的なのでしょうか。

    VBというよりADO.NETは非接続型が中心です。イメージとしては、データベースからデータテーブルに値を取ってきて、すぐにデータベースとの接続が切れるという感じです。アプリケーションはデータベースから切り離されたデータテーブルを相手に動くことになります。もちろん、アプリケーションでデータテーブルの値を変更した後、データテーブルからデータテーブルへ書き戻さなければ、データベースへ反映されません。
    ADO.NETでもDataReaderは接続型ですので、それを利用している間中、データベースへ接続されたままになります。

     TI-cb400s さんからの引用

    VBの場合は、ウィザードを使用してデータソースを作成でき、その最後のほうで、接続文字列を構成ファイルに保存するといった部分があったように思うのですが、こちらを活用することができるのでしょうか。

    できます。プロジェクトを右クリックしてプロパティを開き、設定を開いてください。そこに接続文字列を指定できます。それを使う時は、
    Properties.Settings.Default.上で付けた名前
    でアクセスできます。

    2006年12月18日 3:14
    モデレータ
  • ご回答ありがとうございます。

    Properties.Settings.Default.上で付けた名前
    を使用する際に、何か宣言が必要でしょうか。

    sqldatareaderをを使用するため、

    Dim cmd as New SqlCommand("sp_disp_ptdata",cn)の「cn」の部分を「Properties.Settings.Default.上で付けた名前」に置き換えたところ「Propeties」のところに青の下線が引かれています。

    Settingsをヘルプで見たところ、何か宣言が必要なようですが、それ以上がわかりませんでした。

    教えていただいた、プロパティの設定の部分ですが、データソースウィザードを使用しても、そこにデータベースへの接続の情報が表示されるのですが、これを用いる場合も、教えていただいた方法で、使用することができるのでしょうか。

    お返事が遅くなって申し訳ありませんでしたが、どうかよろしくお願いします。

    2006年12月23日 20:32
  •  TI-cb400s さんからの引用

    Dim cmd as New SqlCommand("sp_disp_ptdata",cn)の「cn」の部分を「Properties.Settings.Default.上で付けた名前」に置き換えたところ「Propeties」のところに青の下線が引かれています。

    このcnのところには、SqlConnectionオブジェクトが入ります。SqlConnectionの接続を指定するために、「Properties.Settings.Default.上で付けた名前」を使います。つまり、sqlConnection1.ConnectionStringに対して指定して下さい。

     TI-cb400s さんからの引用

    教えていただいた、プロパティの設定の部分ですが、データソースウィザードを使用しても、そこにデータベースへの接続の情報が表示されるのですが、これを用いる場合も、教えていただいた方法で、使用することができるのでしょうか。

    できます。実はこうやって指定する方が確実です。接続文字列を自動で生成してくれますので。

    TI-cb400sさんのペースでかまいませんので、がんばって下さい。

    2006年12月24日 1:54
    モデレータ
  • ご回答ありがとうございます。

     trapemiya さんからの引用

    このcnのところには、SqlConnectionオブジェクトが入ります。SqlConnectionの接続を指定するために、「Properties.Settings.Default.上で付けた名前」を使います。つまり、sqlConnection1.ConnectionStringに対して指定して下さい。

    まず、この部分の「sqlConnection1」というのは、どこから出てきたのでしょうか。

    接続状態を確認するために、以下のコードを作成しました。

    Private Sub test2()
            Dim Con As New SqlConnection(properties.settings.default.HPSYSTEMSQLConnectionString)

            Con.Open()

            '接続状態を表示
            MessageBox.Show("接続状態:" & Con.State.ToString, "処理結果")

            Con.Close()

            '接続状態を表示
            MessageBox.Show("接続状態:" & Con.State.ToString, "処理結果")
        End Sub

    しかし、やはり2行目の「properties」の部分に青い線が引かれて、「宣言されていません」とのメッセージが出ます。

    この部分におけるわからない点は2つあり、「properties」の宣言はどこに、どのような形で行えばよいのか。記述自体はこの形で問題がないのか。です。

    また、データベースへの接続を直接プログラムに記述する場合は、データベースへ接続する必要のあるモジュール(プロシージャ?すいません。この表現がよくわかりません)ごとにこのような宣言を行いデータベースへの接続を行えばよいのか。それとも、新しい項目の中にある、モジュールの中で、データベースへの接続文字列を宣言しておけばすべてのフォームから使用できるのか。

    現在、Accessで作成しているものについては、外部データベースに接続する場合は、モジュールの中にデータベースをオープンするものとクローズするプログラムを記述しておき、callで呼び出しをしていました。

    だいぶ、わかりにくい文章だとは思うですが、わからない点についてはご指摘ください。よろしくお願いいたします。

    2006年12月29日 6:36
  •  TI-cb400s さんからの引用

    まず、この部分の「sqlConnection1」というのは、どこから出てきたのでしょうか。

    SqlConnectionオブジェクトのつもりで書きました。誤解を招いてすみません。無視して下さい。

     TI-cb400s さんからの引用

    しかし、やはり2行目の「properties」の部分に青い線が引かれて、「宣言されていません」とのメッセージが出ます。

    ごめんなさい。私が示したのはC#の場合でした。VBでは違うようです。
    My.MySettings.Default.名前
    のようにしてみて下さい。

     TI-cb400s さんからの引用

    また、データベースへの接続を直接プログラムに記述する場合は、データベースへ接続する必要のあるモジュール(プロシージャ?すいません。この表現がよくわかりません)ごとにこのような宣言を行いデータベースへの接続を行えばよいのか。それとも、新しい項目の中にある、モジュールの中で、データベースへの接続文字列を宣言しておけばすべてのフォームから使用できるのか。

    どこからでも「My.MySettings.Default.名前」で参照できるはずです。

    2006年12月29日 7:04
    モデレータ
  • ご返事ありがとうございます。

    教えていただいた方法で、うまくできました。

    接続に関することで、あわせて教えていただきたいのですが、マイクロソフトのホームページを見ていたら、ExpressEditionのデータアクセスがローカルのみとなっていたのですが、別のPC上にあるデータベースへの接続ができないということでしょうか。私のところではこのような環境を作れないので、参考までに教えていただければ幸いです。

    2006年12月29日 23:13
  • Visual Basic Express EditionというIDEの機能として、リモートのデータベースへの接続はできません。ただし、あくまでIDEとしてサポートしていないということであって、コードで手動でconnectionを書いてあげれば接続することができます。IDEはあくまでコードを便利に効率的に作成するツールであって、その機能が、Visual Basic Express Editionでは一部制限されているということです。IDEがなくても、その気になれば、メモ帳だけあればプログラムが作れないわけではありません。ただし、かなり大変でしょうが。(^^;
    2006年12月30日 3:41
    モデレータ
  • ご回答ありがとうございます。

    非常にわかりやすく、ためになりました。

    また、困ったときはよろしくお願いします。

    2006年12月30日 7:22