2017-10-19 16 views
-1

私はそれが単なる特定の場所に限られていないように、私は今までのフォルダを置く場所でプログラムを使用できるようにしようとしています。 これは私が今使っている接続文字列であるC#データベース接続SQL

string constring = "Data Source = (LocalDB)\\MSSQLLocalDB; 
AttachDbFilename = C:\\Users\\hannes.corbett\\Desktop\\Barcode Scanning\\Barcode Scanning\\BarcodeDB.mdf; 
Integrated Security = True"; 

この接続文字列は正常に動作し、上記の言ったようにすべてが、私はそれが私があなたに変数を提供することができます

答えて

0

それを置く場所への環境になりたいですデータソース、attachDbFilenameなどの値。その後、ロードイベントで値を取得します。または、設定ファイルを使用して接続文字列を取得します。この

string constring = "Data Source = "+ YourDataSource +"; AttachDbFilename = "+ YourAttachedDBFilePath +"; Integrated Security = True"; 
+0

読み込み時に値を取得するにはどうすればよいですか? –

+0

あなたはどのタイプのプロジェクトを作成していますか?プロジェクトの種類によって異なります。ほとんどの場合、データベース接続文字列は、Windowsアプリケーションのapp.configファイルとWebアプリケーションのweb.configファイルで定義されます –

0

のように表示され、第一の溶液のようにあなたは、フォルダアプリ(デバッグまたはリリース)内のデータベースファイルを置く必要があり、それが可能である場合には、AppDataフォルダに必要なデータベースを置くApplication.StartupPath

0

でそれを呼び出しますその後、そうでない場合、

Server=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|BarcodeDB.mdf;Database=BarcodeDB; 

のConnectionString

にPromod を提案したオプションを使用するようにそれを行うための最良の方法を を以下のように使用しますが、その場合には、あなたが電子を知っている必要がありますすべての単一環境でデータベースの場所をxactしたり、必要なDBを見つけるためにあらゆる環境で検索を行います。あなたのプロジェクトのパスを検索したい場合は

0

あなたが使用することができます。

string path = System.AppDomain.CurrentDomain.BaseDirectory; 

代替を、あなたは(あなたの実行可能ファイルに次)のビルドフォルダ内のDBファイルを保存することにした場合:

string path = Path.GetDirectoryName(new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath); 

例:だから、あなたのプロジェクトを移動したり、様々なマシン上でそれを持っているとき(デシベルを想定し

// filename of your Db file 
string filename = "BarcodeDB.mdf"; 
// combine filename and your local path 
string dbFilePath = Path.Combine(path, filename); 
// use the db filepath in your constring using string interpolation 
string constring = $"Data Source = (LocalDB)\\MSSQLLocalDB; AttachDbFilename = {dbFilePath}; Integrated Security = True"; 

ファイルが存在する場合)、それを見つけることができるはずです。

関連する問題