我实际上使用的是旧版本的Realbasic(2008),并且一直在使用VB脚本将几个小型数据库备份为Zip文件。
我现在发现这种方法在Windows 8上不起作用,也不是跨平台的。
由于我希望备份位于单个文件中,以便它可以是增量的,因此我使用大型数据库来保存较小数据库的副本。
这可能吗?
我无意为此购买插件。
类似于保罗的回答。 您可以将要存储的文件的二进制数据读取到内存块中,然后将生成的字符串保存到数据库中。 我们已经在几个应用程序中做到了这一点。 不要指望它很快,因为所有这些都首先发生在RAM中,然后被写入数据库。
理想情况下,我认为,您想在保存之前压缩文件/字符串。 但是 Xojo 没有内置 gzip,因此您必须使用第三方解决方案进行压缩或通过声明进行操作系统调用。
您可以将任何内容作为 BLOB 存储在 SQLite 表中。
您还可以考虑使用 VirtualVolume 和 BinaryStream 将数据库文件写入单个"容器"文件中。
http://docs.xojo.com/index.php/VirtualVolume
感谢Paul和BKeeney的帮助。 BKeeney最接近,经过一些实验,我成功了!
这是我所做的...
//
Dim l, p As Integer
Dim ReadFromFile as BinaryStream
Dim f as FolderItem
f= GetFolderItem("Keyhoe.db3")
If f <> Nil Then
l = f.Length
ReadFromFile=f.OpenAsBinaryFile( False)
mb = New MemoryBlock(l)
While Not ReadFromFile.EOF
mb.byte(p) = ReadFromFile.ReadInt8
p = p + 1
wend
ReadFromFile.close
End If
Dim dbFile as FolderItem
Dim db as REALSQLdatabase
db= New REALSQLdatabase
Dim mydate as New Date
Dim rec as DatabaseRecord
dbFile = GetFolderItem("Backup.db3")
db.DatabaseFile = dbFile
If db.Connect Then
rec = New DatabaseRecord
rec.Column("Name") = "Keyhoe"
rec.BlobColumn("Content") = mb.LeftB(l)
db.InsertRecord("Databases",rec)
db.Commit
else
MsgBox "Error: "+db.ErrorMessage
End if
msgbox "Done..."
再次感谢...我现在要做的就是弄清楚如何恢复数据库,但该任务有几个示例。
干杯
艾伦。。。