我开发了一个工作正常的应用程序< = Windows 7.它使用带有VB和C#的SQLlite数据库。但是在 Windows 8 (从未在其他Windows操作系统上遇到此特定问题)尝试写入数据库时出现问题
System.Data.SQLite.SQLiteException: Attempt to write a read-only database
我在Windows 8 pc上创建了数据库文件,如:
Try
If (Not File.Exists(System.Environment.CurrentDirectory & "\MY_DB.db")) Then
Dim conn = New SQLite.SQLiteConnection("Version=3;New=True;Compress=False;Read Only=False;Data Source=" & System.Environment.CurrentDirectory & "\MY_DB.db")
conn.Open()
'...DO STUFF
conn.Close()
conn.Dispose()
conn = Nothing
End If
Catch ex As Exception
'Throw ex
Return False
End Try
但没效果。
基本上我已经尝试过了:
Read Only=False
但没有工作。如何才能使数据库可写?
答案 0 :(得分:5)
我不知道您通话时的当前目录是什么,但我肯定会将我的数据库放在每个用户都有设计读/写权限的文件夹中。
为什么不使用Environment.SpecialFolder enum?
所代表的文件夹您可以将代码更改为此类
Try
Dim appFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
appFolder = Path.Combine(appFolder, "MyAppDatabaseFolder")
If Not Directory.Exists(appFolder) Then
Directory.CreateDirectory(appFolder)
End If
Dim myDB = Path.Combine(appFolder, "MY_DB.db")
If (Not File.Exists(myDB)) Then
.....
End If
Catch ex As Exception
'Throw ex
Return False
End Try