2016-05-03 2 views
-1

私はサンプルC#アプリケーションを作成しました。(最初のプロジェクトは完了しました)データベースを使ってデータを保存し、データを編集する非常に簡単なアプリケーションです。私はsqlデータベースをC#プロジェクトの一部にすることができます

問題は私のコンピュータで問題なく動作しますが、アプリケーションを公開して別のコンピュータに置くと、プロジェクトの一部ではないためデータベースを使用できなくなります。

は、私は明らかに自分のコンピュータ上のデータベースへのパスで、次のコンピュータ上で同じではありません接続文字列

private SqlConnection con = new SqlConnection("Data Source = (LocalDB)\\MSSQLLocalDB; AttachDbFilename = \"C:\\Users\\Ryan\\Documents\\Visual Studio 2015\\Projects\\youtubeLoginTut\\youtubeLoginTut\\data.mdf\"; Integrated Security = True; Connect Timeout = 30"); 

を使用しました。とにかく私はパッケージにデータベースを含めることができるので、アプリケーションがどこから参照されるかを参照します。

アイブは、たとえば.. \ data.mdfへのパスを短くしようとしましたが、役に立たないし、Googleで何も見つからないので、すべてのアイデアがありません。

すべてのコンピュータでプロジェクトの場所を取得する方法があり、C#

乾杯 ライアン

答えて

0

に移動簡単イムは非常に新しい:(/ binに/デバッグの内側)

string path = AppDomain.CurrentDomain.BaseDirectory //example : C:/Users/Ryan/Documents/Visual Studio 2015/Projects/Youtubetut/bin/debug 

このパスにプロジェクトのフォルダ内のデータベースの場所を追加するだけで済みます。 pathがあなたの "C:\ Users \ Ryan \ Documents \ Visual Studio 2015 \ Projects \ youtubeLoginTut"を置き換え、データベースをデバッグフォルダ内に移動してください。

+0

私は必要としているのは、公開するときにデータベースを取り込むことです。それはMicrosoft Visual Studioで完全に正常に動作しますが、データベースを公開して実行すると、私はexeがどこにあるのかデータベースを移動しましたが、それは動作しますが、とにかく私はそれを得ることができるので自動的にこれを行いますか?乾杯 – Hadley8899

+0

私はあなたがここで見ているものを見つけることができると思う - http://stackoverflow.com/questions/28321508/publish-a-project-with-local-database –

+0

ありがとう、あまりにも、完全に働いた – Hadley8899

0

プロジェクトを使用してデータベースをpubliching Afeterあなたはbyuse展開からInstalltionパスを取得する:それはあなたがSQLiteのように埋め込まDBを使用しようとすることができ、簡単なアプリケーションの場合は

string sourcePath =System.Reflection.Assembly.GetExecutingAssembly().Location 
sourcePath =sourcePath +"\data.mdf"; 
0

。私は私のアプリケーションでそれを使用し、正常に動作します。

+0

どうすればいいのか説明できますかこれでどうぞよろしいですか? – Hadley8899

0

SQLiteを使いたい場合は、一歩一歩進みましょう。

  1. ダウンロードプロジェクト
  2. への.NET Framework
  3. リンクSystem.Data.SQLite.dllのバージョンに動的ライブラリSystem.Data.SQLite.dllが作成し、この

ようなコードの何かを書きますテーブル

SQLiteConnection con = new SQLiteConnection(String.Format(@"Data Source={0};Version=3;New=True;", "./db/mydatabase.sdb")); 
con.Open(); 
SQLiteCommand cmd = con.CreateCommand(); 
cmd.CommandText = @"CREATE TABLE Books (BookId int, BookName varchar(255), PRIMARY KEY (BookId));"; 
cmd.ExecuteNonQuery(); 
con.Close(); 

データを読む

using(SQLiteConnection con = new SQLiteConnection(String.Format(@"Data Source={0};Version=3;New=False;", "./db/mydatabase.sdb")) { 
    con.Open(); 
    using (SQLiteCommand cmd = con.CreateCommand()) 
    { 
     cmd.CommandText = @"SELECT BookName FROM Books WHERE BookId=1 LIMIT 1;"; 
     using (SQLiteDataReader reader = cmd.ExecuteReader()) { 
     if (reader.HasRows && reader.Read()) { 
      oResult = Convert.ToString(reader["BookName"]); 
     } 
     reader.Close(); 
     } 
    } 
    con.Close(); 
} 
+0

これは私のプロジェクトには完璧です。 :) – Hadley8899

関連する問題