从Linux(Ubuntu)机器访问iSeries上的DB2数据库的最简单方法?
问题描述:
我想在iSeries(...或“System i”或“AS/400”...)机器上运行SQL查询作为Nagios检查的一部分,但尚未找到合适的接口连接方式数据库呢。从Linux(Ubuntu)机器访问iSeries上的DB2数据库的最简单方法?
IBM建议使用System i Access for Linux与的ODBC驱动程序,但由于这两个系统对我来说都是新手,所以我想知道是否有其他方法来执行此操作。
涉及telnet
和expect
的黑客都很好。 :-)
答
我认为这将是最简单的...
同为Linux访问,但它是开源版本:JTOpen
取自iSeries Information Center的示例:
// Connect to the server.
Connection c = DriverManager.getConnection("jdbc:as400://mySystem");
// Create a Statement object.
Statement s = c.createStatement();
// Run an SQL statement that creates
// a table in the database.
s.executeUpdate("CREATE TABLE MYLIBRARY.MYTABLE (NAME VARCHAR(20), ID INTEGER)");
// Run an SQL statement that inserts
// a record into the table.
s.executeUpdate("INSERT INTO MYLIBRARY.MYTABLE (NAME, ID) VALUES ('DAVE', 123)");
// Run an SQL statement that inserts
// a record into the table.
s.executeUpdate("INSERT INTO MYLIBRARY.MYTABLE (NAME, ID) VALUES ('CINDY', 456)");
// Run an SQL query on the table.
ResultSet rs = s.executeQuery("SELECT * FROM MYLIBRARY.MYTABLE");
// Close the Statement and the
// Connection.
s.close();
c.close();
答
我在我的磁盘上有此源。这是一个很好的例子。为了清楚起见,我确实在源代码中更改了机器,目录和表名。希望能帮助到你。它使用JTOpen项目中的JDBC驱动程序。
请注意,使用此特定驱动程序,您可以像访问其他数据库一样访问iSeries DB2数据库。另外,iSeries上的DB2数据库只是IBM Universal Database的一个版本。但是,即使使用JDBC驱动程序,您也可以执行iSeries的特定技巧。但是,如果你只想保持SQL默认值,那也没关系。
import java.sql.*;
public class TestSQL {
public static void main(String[] args) {
try {
DriverManager
.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
Connection conn = DriverManager
.getConnection("jdbc:as400://YOURISERIES/YOURLIBRARY");
Statement select = conn.createStatement();
ResultSet rs = select.executeQuery("select * from whatever");
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()) {
for (int x=1; x <= rsmd.getColumnCount(); x++) {
System.out.print(rs.getString(x));
}
System.out.println();
}
} catch (Exception e) {
System.out.println("error: " + e.getMessage());
}
System.exit(0);
}
}