1

我正在尝试使用数据源或 URI 使用 SQLiteConnectionStringBuilder (System.Data.SQLite v1.0.88.0) 构建有效的连接字符串:

    Dim connectionBuilder = New SQLiteConnectionStringBuilder
    connectionBuilder.DataSource = Path.Combine(datadir, "mydatabase.sqlite")
    connectionBuilder.Version = 3

    ' Open connection
    Dim connection As New SQLiteConnection(connectionBuilder.ConnectionString)

或者:

    Dim connectionBuilder = New SQLiteConnectionStringBuilder
    connectionBuilder.Uri = New Uri(Path.Combine(datadir, "mydatabase.sqlite")).AbsolutePath
    connectionBuilder.Version = 3

    ' Open connection
    Dim connection As New SQLiteConnection(connectionBuilder.ConnectionString)

两者都生成相同的连接字符串:

    uri=file:///C:/Users/myusername/Documents/Visual%20Studio%202010/Projects/myproject/myproject/bin/Debug/data/mydatabase.sqlite;version=3

URI 本身是有效的,连接字符串实际上看起来不错,但是当我尝试打开连接时,NotSupportedException由于 SQLite 中的路径格式,它会生成一个:

       bei System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath)
       bei System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath)
       bei System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[]         pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
       bei System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String[] pathList, Boolean checkForDuplicates,         Boolean needFullPath)
       bei System.IO.Path.GetFullPath(String path)
       bei System.Data.SQLite.SQLiteConnection.ExpandFileName(String sourceFile, Boolean toFullPath) in c:\dev\sqlite\dotnet\System.Data.        SQLite\SQLiteConnection.cs:Zeile 2690.
       bei System.Data.SQLite.SQLiteConnection.Open() in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteConnection.cs:Zeile 2009.

我怎样才能防止自己构建连接字符串的不足?

4

1 回答 1

0

该问题与以两个\\. 不知何故,SQLiteConnectionStringBuilder他们错误地逃脱了他们。

我已经解决了我的问题,将第一个替换\\\\\

connectionBuilder.DataSource = pathToFile.Replace("\\", "\\\")
于 2013-08-22T07:17:35.607 回答