0

これは、この貴重なウェブサイトへの私の最初の投稿です。私は vb.net の新しい学習者です。私は単純な購入プロジェクトに取り組んでいますが、エラーが発生しました。しかし、最初に私を困惑させたのは次のとおりです。

これは、開発したマシンのモジュール レベルでの接続文字列です。

    Public strCn As String = "Data Source = (local); Initial Catalog = PSys; Integrated Security = false; User ID = sa; Password = 123;"

データ ソースがシステム名の元の名前でなければならないことは必須ですか。つまり、(ローカル)または( . )を使用すると、機能するかどうか?プロジェクトをさらに開発するために他のシステムにコピーすると、データソースを変更する必要があるたびに、「ネットワーク関連またはインスタンス固有のエラーが発生しました.......」というエラーが表示されるためです。

私がしなければならないことを親切に教えてください。

4

1 に答える 1

1

MsSQL などのデータベース サーバーを使用するアプリケーションを開発する場合、インストール先のすべての PC にアプリケーションと共にサーバーをインストールするのは賢明ではありません。たとえば、顧客が 10 台のコンピューターを備えたローカル ネットワークを持っている場合、あなたはどうしますか? それらの 10 個すべてに SQL サーバーをインストールしますか? その場合、データを共有する必要がある場合はどうすればよいでしょうか?

したがって、(他のアプリケーションでの一般的な慣行に基づく) 最善のアプローチは、ユーザーが SQL サーバーを必要な場所にインストールできるようにし、アプリケーションを構成してサーバーの場所を指すようにすることです。そのパスをたどると、アプリケーションの構成は、セットアップ アプリケーションまたはアプリケーション自体で行うことができます。

開発段階についてですが、同じアプリケーションを 2 台の異なるコンピューターで開発する必要があったという同様の状況がありました。私がしたことは、名前付きインスタンス「sqlexpress」を使用して両方にSQLサーバーをインストールし、次に使用したアプリケーションで

Data.SqlClient.SqlConnectionStringBuilder

接続文字列を作成するクラス。私はこのようなことをしました:

Public Function getDevConnectionString() As String
    Dim csb As New Data.SqlClient.SqlConnectionStringBuilder(My.Settings.dbConnectionString) '<-My original cs in app settings

    csb.DataSource = My.Computer.Name & "\sqlexpress"

    Return csb.ConnectionString
End Function

接続文字列が必要なときはいつでも、getDevConnectionString() を呼び出すだけで、コンピューター名と SQL Server インスタンス名に基づいて接続文字列が返されます。例えば:

        Dim cs As String
#If DEBUG Then
    cs = getDevConnectionString()
#Else
    cs = getReleaseConnectionString()
#End If

getReleaseConnectionString() は、顧客が構成した接続文字列を返す関数です。

これが正しい方向を示してくれることを願っています...

于 2013-07-06T14:06:03.187 に答える