我开发了一个客户端/服务器应用程序,它使用mySQL数据库作为服务器上的数据库。现在,将访问服务器的应用程序还将拥有一个存储本地数据的数据库。为此,我使用了火鸟数据库。
现在,应用程序必须使用mySQL数据库中的记录更新本地数据库,例如每天一次。现在问题是,我需要在更新firebird数据库后立即更改mySQL中的记录,但是当我想要运行应用程序并单击更新按钮时,我收到以下错误并且没有数据更新到firebird数据库:
database.exe raised exception class EDatabaseError with message 'tbStudent: Cannot modify a
read-only dataset'.
目前我正在我的localhost上通过XAMMP运行mySQL,而firebird也在localhost上运行。我正在使用Delphi XE2进行开发
编辑:对不起伙计们,似乎问题不明确。对于mySQL连接,我使用标准TSQLConnection和TSQLTable组件,查询使用TSQLQuery。因此,当我尝试使用TGrid访问mySQL数据库时,它会让我对单向数据集不允许执行操作。我无法写入TSQLTable,因为它给了我只读数据集错误。我尝试查看组件,没有地方可以将它们从只读更改为授予写访问权限。这就是我想弄清楚的,如何授予写访问权答案 0 :(得分:0)
我设法得到了上述问题的答案。我花了一些时间阅读,并在Bob Swart的一本名为C ++ builder Database Development的书中找到了解决方案。
“所有dbExpress数据集(TSQLDataset,TSQLTable,TSQLQuery和TSQLStoredProc - 如果返回数据集)都非常特殊,因为它们的内容是只读的和单向的。这意味着您可以读取TSQLTable中的记录,但仅限于从第一个到最后一个,您无法对此数据进行任何更改。“
由于TDBGrid一次可以显示多个记录,因此它允许您从一个记录导航到另一个记录(并返回),这不允许直接在dbExpress数据集上。
如果我们可以将dbExpress数据集的内容传输到TClientDataSet,那么我们可以查看和导航我们想要的所有内容。这解决了我的问题。这是一个真正的noob错误,但话又说回来,我仍然认为自己是一个菜鸟: - )。
答案 1 :(得分:-1)