gpt4 book ai didi

c# - 通过 C# 访问 sqlite 数据库时相对路径不起作用

转载 作者:行者123 更新时间:2023-12-03 18:52:20 29 4
gpt4 key购买 nike

我正在创建一个 Excel 插件,我想通过它访问数据库。代码如下

    [ExcelFunction("My First Excel-DNA Function")]
public static string GreetFunction(string name)
{
GetConnection();
return "Hello" + " " + name;
}

public static void GetConnection()
{

//db = new SQLiteConnection("Data Source="+System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)+"\\Database\\XLSQLiteDemo.sqlite");
db = new SQLiteConnection("Data Source=Database/XLSQLiteDemo.sqlite");
try
{
db.Open();
cmd = db.CreateCommand();
System.Windows.MessageBox.Show("Connection created");
}
catch (SQLiteException ex)
{
System.Windows.MessageBox.Show(ex.ToString());
}
}

所以当我给出像 c:/test/firstlibrary.../XLSQLiteDemo.sqlite 这样的绝对路径时有用。

但是当我使用像 db = new SQLiteConnection("Data Source=Database/XLSQLiteDemo.sqlite"); 这样的相对路径时

它抛出一个异常: unable to open database file error code 14.注释中的代码,即
//db = new SQLiteConnection("Data Source="+System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)+"\\Database\\XLSQLiteDemo.sqlite");

也不起作用,即它计算绝对路径但是当我尝试调试时;调试在 db.Open(); 之后自动终止
excel表中的输出也是 #Value这表明一些错误。

最佳答案

@adrino 可能是你的字符串中的"file"字是问题。删除它。

       string relativePath = @"Database\XLSQLiteDemo.sqlite";
string currentPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
string absolutePath = System.IO.Path.Combine(currentPath, relativePath);
absolutePath=absolutePath.Remove(0, 6);//this code is written to remove file word from absolute path
string connectionString = string.Format("Data Source={0}", absolutePath);

这适用于我的机器。告诉我它是否正确。

关于c# - 通过 C# 访问 sqlite 数据库时相对路径不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24485197/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com