Delphi用T-SQL大批量导入ACCESS数据注意问题

    技术2022-05-11  78

    使用DELPHI6的TADOQUERY执行如下ACCESS T-SQL语句时会出错:

    ...

    ADOQuery1.Close;

    ADOQuery1.SQL.Text := 'INSERT INTO TABLE1 (FIELD1,FIELD2) SELECT (A.FIELD1,A.FIELD2) FROM [;DATABASE=C:/T.MDB;PWD=1;].TABLE1 AS A WHERE A.ID=111';

    ADOQUERY1.EXECSQL;

    ...

    执行以上语句时,会报参数不正确的错误。但是我使用此SQL语句在DMB数据库文件中的查询里执行完全OK。

    难道是ADO驱动不支持此语句,但是为什么其它的如ALTER TABLE,DELETE FROM TABLE可以执行呢?于是根据所提示的错误(参数不正确)来进行查找,在ADOQUERY的属性列表中有个属性PARAMCHECK默认为TRUE,难道是它在作怪,于是在代码中加入了ADOQuery1.ParamCheck := False语句,在调试运行之,成功!!!

    总结:可能是以上的SQL语句包括"[]"的原因吧,使ADOQUERY组件认为其是个参数,需要程序员赋值的原因,导致执行SQL语句前检查SQL参数时报错!!!

    可能我总结的出错原因不对,如果读者你知道正确答案,请告诉我。谢谢~


    最新回复(0)