SQLite连接字符串不能包含逗号?

时间:2018-09-13 17:51:23

标签: sqlite

当连接字符串包含逗号时,我从SQLite收到错误消息。我无法完全控制数据库的最终存放位置,因此用户可能会将其放置在包含任意字符的目录中。在这种情况下,似乎在连接中路径中逗号(,)的存在会导致错误。这是连接字符串:

Data Source=C:/Users/Dan/AppData/LocalLow/Gravia Software, LLC/Gravia/exampleDatabase.db;

尝试连接时会导致以下异常:

ArgumentException: Invalid ConnectionString format for parameter "LLC/Gravia/exampleDatabase.db"

似乎是连接字符串中出现逗号的问题。我尝试转义命令(\,),将整个内容用引号引起来,但这似乎无关紧要。有什么想法吗?

编辑:

我正在执行的实际代码来自以下页面:https://ornithoptergames.com/how-to-set-up-sqlite-for-unity/

var dbPath = "URI=file:" + Application.persistentDataPath + "/exampleDatabase.db";
using (var conn = new SqliteConnection(dbPath)) {
    conn.Open(); // Error occurs here
    // etc
}

我尝试将URI = file:更改为Data Source =,因为结果相同。

2 个答案:

答案 0 :(得分:0)

我通过这种方式解决了

        var currDir = Directory.GetCurrentDirectory();

        Directory.SetCurrentDirectory(Path.GetDirectoryName(Application.streamingAssetsPath + "/DB/"));

        SqliteConnection dbcon = null;
        try
        {
            dbcon = new SqliteConnection(_Connection);
            dbcon.Open();
        }
        catch (Exception e)
        {
            Debug.Log(e.Message);
            return null;
        }
        finally
        {
            Directory.SetCurrentDirectory(currDir);
        }

答案 1 :(得分:0)

您可以使用花括号(class EditableNameAndDescriptionModel(NameAndDescriptionModel, TimeStampedModel): def __str__(self): return self.name class Meta(NameAndDescriptionModel.Meta): from core.admin import TimeStampedNamedAndDescriptionAdmin # import it here abstract = True admin_class = TimeStampedNamedAndDescriptionAdmin )对ODBC连接变量中的不受支持的字符进行转义。

因此包装您的变量,如下所示

{}

Source