使用ADO连接Oracle数据库的完整代码: Local $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") $oConnection=ObjCreate("ADODB.Connection") $oConnection.ConnectionString="Provider=OraOLEDB.Oracle;Data Source=ORCL;User Id=SCOTT;Password=tiger;" $oConnection.Open $oCommand = ObjCreate("ADODB.Command") $oCommand.ActiveConnection = $oConnection $oCommand.CommandText = "select * from emp" $oRecordSet = $oCommand.Execute while not $oRecordSet.eof ConsoleWrite($oRecordSet.fields(0).value & @CRLF) $oRecordSet.movenext() WEnd $oConnection.Close Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & " error number is: " & $HexNumber & @CRLF & " windescription is: " & $oMyError.windescription) SetError(1) EndFunc
配置Oracle客户端
首先需要在AutoIt机器上安装Oracle客户端,确保tnsnames.ora文件配置正确。数据源名称如ORCL对应数据库实例。使用ODBC驱动或OLEDB提供程序连接。
处理中文字符问题
在连接字符串中添加PLSQLCompatibilityMode=0;以解决中文乱码。代码中读取数据时使用$oRecordSet.fields(0).value & ""强制转为字符串。
执行存储过程
$oCommand.CommandText = "{call 你的存储过程(?,?,?)}" $oCommand.Parameters.Append($oCommand.CreateParameter("param1", 200, 1, 0, $value1)) $oCommand.Execute
批量数据插入优化
使用事务包裹批量操作:$oConnection.BeginTrans() 循环插入后 $oConnection.CommitTrans() 。避免频繁开闭连接,提高效率。
错误处理与连接池
实现连接重试机制,捕获ORA错误码。建议使用全局连接对象管理,避免每次操作新建连接。
Q: AU3连接Oracle失败提示Provider不能加载?
A: 安装对应位数的Oracle Instant Client,并设置环境变量PATH和TNS_ADMIN。
Q: 数据插入速度慢怎么优化?
A: 使用Prepare语句预编译SQL,开启事务,禁用自动提交。
Q: 如何处理大文本CLOB字段?
A: 使用OracleCommandStream或AppendChunk方法分块写入。
Q: 连接字符串怎么写?
A: "Provider=OraOLEDB.Oracle;Data Source=实例名;User Id=用户名;Password=密码;"