【问题标题】:Simplest way to access a DB2 database on iSeries from a Linux (ubuntu) machine?从 Linux (ubuntu) 机器访问 iSeries 上的 DB2 数据库的最简单方法是什么?
【发布时间】:2009-09-04 11:00:49
【问题描述】:

我想在 iSeries(...或“System i”或“AS/400”...)机器上运行 SQL 查询作为 Nagios 检查的一部分,但没有找到合适的方法尚未连接数据库。

IBM 建议将 System i Access for Linux 的 ODBC 驱动程序与 unixODBC 一起使用,但由于这两个系统对我来说都是新的,我想知道是否有其他方法可以做到这一点。

涉及telnetexpect 的黑客攻击非常好。 :-)

【问题讨论】:

    标签: odbc db2 ibm-midrange nagios unixodbc


    【解决方案1】:

    我认为这将是最简单的...
    与 Access for 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();
    

    【讨论】:

      【解决方案2】:

      在 Nagios 交易所找到:
      DB2 Checker
      Download DB2 Checker

      未经测试...

      【讨论】:

        【解决方案3】:

        我的磁盘上有这个源。这是一个很好的例子。为清楚起见,我确实更改了源代码中的机器、目录和表名。希望能帮助到你。它使用来自 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);
         }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多