2010-06-27 53 views
1

我是NetRexx和Java中的两天新手。为什么我不能通过executeQuery obj中的整数访问列数据?

我试图修改IBM红皮书示例来创建一个多线程tcp服务器,该服务器在firebird数据库上执行SQL。

的第一次尝试是在这里http://www.compkarori.co.nz:8000/NetRexx/JDBC-bridge.nrx

当我尝试环路直通列数据

loop col=1 to nbr_columns 
say 'Column' col 
-- say rs.getString(col) -- gives error Message: Column name 1 not found in result set. 
if buffer = '' then 
    buffer = rs.getString(column_name).trim() 
else 
    buffer = buffer || '|' || rs.getString(column_name).trim() 
end 

我得到一个错误作为,如果我用循环计数器的指数即代码中的注释: rs.getString(col),所以我诉诸使用列名。但如果我这样做:

say rs.getString(1) 

这很好。这是因为col是一个Rexx字符串,而不是Java整数或什么?

此外,我必须关闭每个查询后的套接字和线程,否则我没有得到任何回应。这是必要的,或者我可以以某种方式离开运行的线程接受新的查询?

(PS:有人可以添加NetRexx标签?)

+0

解决了它。需要强制编译器识别整数值 '说rs.getString(int col)' 仍然想知道我是否可以重新使用线程/套接字。 – 2010-06-28 02:04:55

+0

getString方法被重载,这就是为什么我需要强制int值。我想出了如何重用线程和套接字......注意只有Oracle和Firebird/Interbase JDBC连接对象看起来是线程安全的。 – 2010-07-10 21:58:16

+0

我会提交一个答案,然后检查它(几天后)。否则,人们会认为你仍在寻找答案。 – Gray 2010-07-20 01:30:16

回答

1

getString方法是重载这就是为什么我需要强制int值。我想出了如何重用线程和套接字..注意只有Oracle和Firebird/Interbase JDBC连接对象看起来像线程安全的。