我遇到了一个概念问题。我正在编写一个c#quiz应用程序,问题,答案和用户配置文件存储在随应用程序安装的sqlCE数据库中。用户运行应用程序,回答数据库中的问题。但是,他们也可以编写自己的问题,在某种日常更新后,这些问题应该可供同一应用程序的其他用户使用。
我无法解决的问题是导入和导出新的问答数据。我是一名LAMP开发人员,习惯于使用Web MySQL数据库,但从未使用像这样捆绑的数据库。我能想到的最好的是用户导出他们的新问题和答案集的转储(可能是csv),并将其上传到云中的主数据库。要更新其本地数据库,他们会导入整个基于云的数据库的csv并清空其本地数据库并插入csv的内容。
这种方式感觉不太对劲。这是一个小型的爱好应用程序,而不是商业;我真的只是想欣赏这个过程。我应该查看“检查更新”吗?
任何指针都非常赞赏,对此问题的非特定性质表示道歉。
答案 0 :(得分:0)
这取决于“主数据库”的位置和位置。
在这个答案中,我假设您有一台Windows机器作为服务器,您可以在其中安装自己的服务以及数据库。
我将主数据库(可能是SQL Server Express Edition)包装在Web服务(WCF)后面。客户向Web服务询问更新并向Web服务发送新问题 Web服务至少有两种方法:
void AddQuestion(Question question);
Question[] NewQuestions(DateTime fromDate);
服务器上的那些方法将处理新问题的保存以及在master数据库中检索新的/更新的问题。客户端处理将所有问题存储在本地Compact SQL数据库中。
不要让用户处理额外的工具和文件来同步数据库。让应用程序完成工作。
答案 1 :(得分:0)
SQL CE SDK附带了客户端代理,这是一个使用SQL Server执行远程复制的DLL。如果您的“主数据库”是SQL Server,并且允许您对其运行IIS服务器代理,则内置复制。
请注意,这会执行合并复制。也就是说,比较本地数据库和远程数据库之间的差异,并发送使远程数据库与服务器匹配的语句。