在使用 SQLJ 和 JDBC 时获取最优的 DB2 性能
2008-09-16 16:29:32 来源:WEB开发网检索多行数据
到目前为止,所有示例使用的 SQL 语句都不返回数据。要从 DB2 返回一行或多行数据,使用 SELECT 语句。SELECT 语句返回多个行,它们是 SQL 查询的结果。检索和使用这个结果集中的行需要一些额外的 SQLJ 语法。
因为结果集可以包括多行数据,所以需要声明一个迭代器来遍历这些行。而且必须在任何方法以外声明迭代器,因为当对它们执行 SQLJ 转换程序时,会将它们转换成单独的类。然后,您可以创建一个迭代器实例并填充该实例。
您可以使用两种不同类型的迭代器 ― 指定名称迭代器或位置型迭代器。对于指定名称迭代器,用列名及其数据类型声明迭代器,其语法如下所示:
#sql iterator NamedIterator (String empno, String projno, int actno);
要检索数据,请创建一个迭代器类实例并通过赋给它 SQL 语句来填充它。然后,您可以通过使用 while 循环来循环遍历该数据,用 NamedIterator 类中创建的方法检索每个列:
...
}
}
static Connection con;
static DefaultContext ctx;
#sql iterator NamedIterator (String empno, String projno, int actno );
public static void main (String args[]){
SqlJDemo demoApp = new SqlJDemo();
demoApp.makeConnection();
demoApp.insertData();
demoApp.useNamedIterator();
}
public void useNamedIterator()
{
try
{
NamedIterator namedIter = null;
#sql [ctx] namedIter = {SELECT EMPNO, PROJNO, ACTNO FROM EMP_ACT};
while (namedIter.next())
{
System.out.println(namedIter.empno()+" "
+namedIter.projno()+" "+namedIter.actno());
}
namedIter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void makeConnection()
{
try
{
...
更多精彩
赞助商链接