Платформы корпоративных информационных систем

         

Исходный код приложения Exec для выполнения динамического SQL



Пример 14-6. Исходный код приложения Exec для выполнения динамического SQL

import java.sql.*;

public class Exec {

public static void main(String args[]) {
Connection con = null; String sql = "";

for(int i=0; i<args.length; i++) {
sql = sql + args[i];
if( i < args.length - 1 ) {
sql = sql + " ";

}
}



System, out. рrintln("Выполнение: " + sql);
try {

Class.forName("com.imaginary. sql.msql.MsqlDriver").newlnstance();

String url = "jdbc:msql://athens.imaginary.com:1114/db_test";

con = DriverManager.getConnection(url, "borg", "");

Statement s = con.createStatement();

if( s.execute(sql) ) {

ResultSet r = s.getResultSet();
ResultSetMetaData meta = r.getMetaData();
int cols = meta.getColumnCount();
int rownum = 0;

while( r.next() ) { rownum++;

System, out. println("Crpокa: " + rownum);
for(int i=0; i<cols; i++) {

System.out.print(meta.getColumnLabel(i+1) + ": ' + r.getObject(i+1) + ", ");

}

System.out.println("");

}
}
else
{

System.out.println(s.getUpdateCount() + " строк обработано.");

}

s.close();

con.close();

}

catch( Exception,e ) { e. printStackTrace();

}

finally
{

if( con != null )
{

try { con.close();
}
catch( SQLException e ) { }
}
}
}
}

Для каждого результирующего набора обеспечивается получение экземпляра ResultSetMetaData с помощью метода getMetaData(). При динамическом доступе к базе данных необходимо узнать, сколько колонок в результирующем наборе, чтобы с уверенностью извлечь все колонки и их имена для вывода пользователю. Метаданные нашего результирующего набора обеспечивают получение всех этих данных с помощью методов getColumnCount() и getColumnLabel().



Содержание раздела