我正在使用C ++ Builder开发项目。我需要创建一个程序,允许用户检查数据库(Firebird或SQL Server)的结构是好还是坏。
我有很多用于Firebird的XML文件,我有很多用于SQL Server的XML文件。在这些文件中定义了许多SQL查询。
我想要实现的想法是使用data-type
执行每个查询。如果表的结构有任何问题,ExecSQL()
会抛出错误的所有细节,我只需要收集所有错误消息并生成报告PDF。
我在XML文件中的查询类型包括ExecSQL()
,ALTER
和INSERT
。
执行CREATE
时,如果表不存在,我可以执行查询,但是如果表存在且存在不存在的列,则从{{1}获取错误只告诉我表存在,但没告诉我列缺失。
例如,如果我有这个SQL代码:
CREATE
连接数据库并执行查询后,有3种情况:
如果表格不存在,ExecSQL()
运行没有问题。
如果表存在并且我需要创建的所有列都已存在,则我得到的例外是CREATE TABLE CUSTOMERS(ID INT NOT NULL, NAME VARCHAR (20) NOT NULL);
。
如果表存在且一个或多个列不存在,则我获得的异常为ExecSQL()
。它没有告诉我有关色谱柱的信息。