2017-03-08 293 views
-2

我的數據庫位於所述應用程序文件夾 實施例以外:如何在C#中指定一個相對的SQLite數據庫路徑?

數據庫:SampleApplication\Database\Database.sqlite

應用:SampleApplication\Application\program.cs

我的代碼如下所示。

string relativePath = @"SampleApplication\Database\Database.sqlite"; 
string currentPath; 
string absolutePath; 
string connectionString; 
currentPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 
absolutePath = Path.Combine(currentPath, relativePath); 
connectionString = string.Format("Data Source={0};Version=3;Pooling=True;Max Pool Size=100;", absolutePath); 
m_dbConnection = new SQLiteConnection(connectionString); 
m_dbConnection.Open(); 
+0

嘗試VAR路徑= @「數據源= ./Database/Database.sqlite 「; –

+0

@Keshav檢查我的回答 –

回答

0

好吧,我想通了的傢伙。

string relativePath = @"Database\Database.sqlite"; 
var parentdir = Path.GetDirectoryName(Application.StartupPath); 
string myString = parentdir.Remove(parentdir.Length -34, 34); 
string absolutePath = Path.Combine(myString, relativePath); 
string connectionString = string.Format("Data Source={0};Version=3;Pooling=True;Max Pool Size=100;", absolutePath); 
m_dbConnection = new SQLiteConnection(connectionString); 
m_dbConnection.Open(); 

我刪除從parentdir字符,直到並與relativePath添加它。這使absolutePathdatabase。 第三行中的數字34表示要從parentdir的末尾刪除多少個字符。

0

試試這個

var parentdir =Path.GetDirectoryName(System.Windows.Forms.Application.StartupPath); 
0

我想你需要修改連接字符串,因此對於基本連接到SQL LITE數據庫中,你可以這樣做:

Data Source=c:\mydb.db;Version=3; 

在此處輸入代碼

在內存數據庫中:

Data Source=:memory:;Version=3;New=True; 

具有密碼

Data Source=c:\mydb.db;Version=3;Password=myPassword; 

你可以這樣做也是在你的C#代碼:

var connectionString = @"data source=c:\TestData\testsqldata.s3db; Version=3;" 
      connection = new SQLiteConnection(connectionString); 
      connection.Open(); 
+0

問題是我的數據庫不在我的應用程序的任何子文件夾中。 – Keshav

0

在ASP核心項目,如果你的數據庫是數據文件夾,寫入startup.cs下面的代碼:

public void ConfigureServices(IServiceCollection services) 
{ 
     services.AddDbContext<MyContext>(options => 
      options.UseSqlite("Data Source=" + 
      Path.Combine(Directory.GetCurrentDirectory(), "Data\\sqlite.db")) 
    ); 
} 
相關問題