如何在C#中指定相对的SQLite数据库路径?

时间:2017-03-08 12:40:00

标签: c# database 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();

4 个答案:

答案 0 :(得分:2)

好吧,我把它想出来了。

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中的字符移至SampleApplication\,并将其添加到relativePath。这使absolutePath成为database。 第三行中的34数字表示要从parentdir末尾删除的字符数。

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

我想你需要修改你的连接字符串,所以对于SQL LITE DATABASE的基本连接,你会这样做:

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();

答案 3 :(得分:0)

在ASP CORE项目中,如果您的数据库位于Data文件夹中,请在 startup.cs 中编写以下代码:

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