我的数据库位于应用程序文件夹之外 示例:
数据库: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 :(得分: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"))
);
}