2009-09-04 8 views
0

Я хотел бы запустить SQL-запрос на машине iSeries (... или «System i» или «AS/400» ...) как часть проверки Nagios, но не нашел подходящего способа взаимодействия в базе данных.Самый простой способ получить доступ к базе данных DB2 на iSeries с Linux (ubuntu)?

IBM предлагает использовать драйвер ODBC System i Access for Linux с unixODBC, но поскольку обе системы являются новыми для меня, я хотел бы знать, есть ли другие способы сделать это.

Взломы с участием telnet и expect - все в порядке. :-)

ответ

2

Я думаю, это было бы самым простым ...
То же, что для доступа к 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(); 
0

У меня был этот источник на моем диске. Это хороший пример. Для ясности я изменил имя машины, каталог и таблицу в источнике. Надеюсь, поможет. Он использует драйвер JDBC из проекта JTOpen.

Обратите внимание, что с помощью этого конкретного драйвера вы можете получить доступ к базе данных iSeries DB2 как к любой другой базе данных. Кроме того, база данных DB2 на iSeries является лишь одной из версий IBM Universal Database. Тем не менее, вы можете делать специальные трюки iSeries, даже с драйвером JDBC. Но если вы хотите оставить только стандартные значения по умолчанию 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); 
} 
}