本地数据库“;SQL服务器Compact没有格式”;OneDrive下载.sdf文件后

本文关键字:下载 OneDrive sdf 文件 有格式 Compact 数据库 SQL 服务器 | 更新日期: 2023-09-27 18:22:02

我将我的应用程序数据库作为.SDF文件上传到OneDrive,其中包含以下行:

iso.CopyFile(AppResources.DatabaseName + ".sdf", "/shared/transfers/" + databaseBackupname + ".sdf");
LiveConnectClient liveClient = new LiveConnectClient(oneDriveAuthClient.Session);
try
{
   LiveOperationResult uploadResult = await liveClient.BackgroundUploadAsync(oneDriveFolderId, new Uri("/shared/transfers/" + databaseBackupname + ".sdf", UriKind.RelativeOrAbsolute), OverwriteOption.Overwrite);

在此之后,我可以成功下载此文件,代码为:

string tmpPathDatabase = "''shared''transfers''downloadedDatabase.sdf";
LiveOperationResult downloadResult = await liveClient.BackgroundDownloadAsync(file.FileID, new Uri(tmpPathDatabase, UriKind.RelativeOrAbsolute));

在我尝试将该文件用作数据库之前,一切都很好。但是当我尝试使用这个代码中的文件时:

string tmpDBConnectionString = "Data Source=isostore:" + tmpPathDatabase;
using (DBClass tmpDB = new DBClass(tmpDBConnectionString))
{
    if (tmpDB.DatabaseExists() == true)
    {
        DatabaseSchemaUpdater dbNewUpdater = tmpDB.CreateDatabaseSchemaUpdater();

创建DatabaseSchemaUpdater:时收到错误消息

正在引用的文件不是SQL Server Compact数据库文件格式[Databasename=C:''Data''Users''DefApps''APPDATA''Local''Packages''xxx.TimecardApp_evtaxn4jfh7hw''LocalState''downloadedDatabase.sdf]

上传或下载会改变文件的编码吗?因为当我只是复制IsolatedStorage中的文件时,我可以将它们用作数据库,而不做任何更改。我对使用OneDrive也有同样的想法。

本地数据库“;SQL服务器Compact没有格式”;OneDrive下载.sdf文件后

这是一个小错误。解决方案很简单:

await liveClient.DownloadAsync(file.FileID + "/content");

很确定它也能与DownloadBackgroundAsync一起工作。

我错过了/content。认为fileID就足够了,并且Live SDK API知道在下载文件时该做什么(不仅仅是获取属性)下载流几乎是空的。当我直接将文件再次上传到OneDrive时发现了这一点,并看到它只有2KB大。