C#.netでWindowsフォームアプリケーションをあるコンピュータから別のコンピュータに転送すると、データベースファイルの場所が変更されるたびに接続文字列を変更する必要があります。C#.netでWindowsフォームアプリケーションの接続文字列を作る方法、コンピュータに依存しない?
どのように私は何度も何度も接続文字列を変更する必要がないように私は、これを防ぐことができますすることができますか?
C#.netでWindowsフォームアプリケーションをあるコンピュータから別のコンピュータに転送すると、データベースファイルの場所が変更されるたびに接続文字列を変更する必要があります。C#.netでWindowsフォームアプリケーションの接続文字列を作る方法、コンピュータに依存しない?
どのように私は何度も何度も接続文字列を変更する必要がないように私は、これを防ぐことができますすることができますか?
あなたが接続する必要があるサービスは常にローカルマシン上で実行されている場合は、サーバー名としてlocalhost
を使用する場合があります...
localhost
がホストでip 127.0.0.1にマップされているところでは、ファイル。
は、アプリケーションのexeファイルの同じ場所にDBファイルを持って、あなたがパスを取得するために
Application.StartupPath()
を使用することができます。
*これはWindowsフォームアプリケーションであると想定しています。
文字列c = Application.StartupPath; SqlConnection con =新しいSqlConnection(@ "DataSource =。\ SQLEXPRESS; AttachDbFilename = '" + c + "' \\ abcd.mdf;統合セキュリティ= True;接続タイムアウト= 30;ユーザーインスタンス= True"); ArgumentExceptionは処理されませんでした。 – Tom007
データベースの元のパス: - データソース=。\ SQLEXPRESS; AttachDbFilename = E:\ visual2008 \ WindowsFormsApplication1 \ WindowsFormsApplication1 \ bin \ Debug \ abcd.mdf;統合セキュリティ= True;接続タイムアウト= 30;ユーザーインスタンス= True – Tom007
使用している接続文字列のタイプ(またはアクセスしているデータベース)の例がなくても、相対パスを使用できず、データベースがアプリのどこかにあると仮定するのは難しいです?あなたはこのようなあなたの接続刺さを設定した場合
...
<connectionStrings>
<add name="ConsoleApplication1.Properties.Settings.Database1ConnectionString"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
...その後| DataDirectoryの|既定ではアプリケーションのフォルダーに解決されます。ただし、AppDomain.SetDataメソッドを呼び出してDataDirectoryを変更することはできます。
...それを変更する方法については、以下を参照してください。私はあなたが設定で接続文字列を設定したいどのように示しましたが、あなたはコードでそれを設定している場合も同様です。あなたは、コード内の接続文字列を構築している場合は、私は
http://msdn.microsoft.com/en-us/library/ms254947.aspx
...あなたは、接続文字列ビルダを使用して見て提案することができる私はあなたの接続文字列にファイルパスを想定し、もちろん、ですが、それがデータベースであれば、localhostも動作しません。
SqlConnection (= "データソース=。\ SQLEXPRESS; AttachDbFilename = C:\ DocumentsとSettings \ Darshan \ My Documents \ abc.mdf;統合セキュリティ= True;接続タイムアウト= 30;ユーザーインスタンス= True")。 – Tom007
データベースの場所はどのように変更されましたか?すべてのコンピュータ/ユーザがアクセスできる中央の場所にはありませんか?
そうでない場合は、接続情報を設定に保存し、必要に応じて接続情報を更新できるフォームを作成できます。このフォームは、インストーラの一部として、またはアプリケーションの最初の実行時に起動できます。
実際の解決策を提示する際に役立つ情報をもう少し詳しくお聞かせください。
SqlConnection con =新しいSqlConnection(@ "データソース=。\ SQLEXPRESS; AttachDbFilename = C:\ DocumentsとSettings \ Darshan \ My Documents \ abc.mdf;統合セキュリティ= True;接続タイムアウト= 30;ユーザーインスタンス= True) ; – Tom007
データベースファイルを一貫した場所に配置しますか? – Lazarus
**このような接続文字列をサンプルとして**表示できますか?どのデータベースをここで話しているのですか? –
今どこに接続文字列を保存していますか?確かに、アプリケーションを別のマシンに置くために*アプリケーションを再コンパイルしなければならないということではありませんか? –