JAVA(Eclipse)+DB2 9.5

 

安装了db2 9.5 默认端口是50000 用默认的db2建立了数据库sample 另外将其改成server运行模式。
eclipse下导入2个外部jar
db2jcc.jar 和db2jcc_license_cu.jar 都在db2的安装目录下 java下边

一个简单的程序去创建一个新表在db2中
import java.sql.*;
    
public class CreateFirstTable {

 public static void main(String args[]) {
   
  String url = "jdbc:db2://localhost:50000/SAMPLE";
  Connection con;
  String createString;
  createString = "create table FirstTable " +
       "(USERS_NAME varchar(32), " +
       "USER_ID int, " +
       "YEAR_OF_BORN int, " +
       "GENDER varchar(6), " +
       "MOBILE int)";
  Statement stmt;
 
  try {
   Class.forName("com.ibm.db2.jcc.DB2Driver");

  } catch(java.lang.ClassNotFoundException e) {
   System.err.print("ClassNotFoundException: ");
   System.err.println(e.getMessage());
  }

  try {
   con = DriverManager.getConnection(url, "lliu", "goodgame");
 
   stmt = con.createStatement();       
          stmt.executeUpdate(createString);
 
   stmt.close();
   con.close();
 
  } catch(SQLException ex) {
   System.err.println("SQLException: " + ex.getMessage());
  }
 }
}

去db2控制中心 刷新后发现新表已经存在
另外一个例子 打印一个SAMPLE创建的表
import java.sql.*;
    
class PrintColumns  {

 public static void main(String args[]) {
   
  String url = "jdbc:db2://localhost:50000/SAMPLE";
  Connection con;
  String query = "select * from .STAFF";//这里要自己看具体表的模式写的谁
  Statement stmt;
 
  try {
   Class.forName("com.ibm.db2.jcc.DB2Driver");
 
  } catch(java.lang.ClassNotFoundException e) {
   System.err.print("ClassNotFoundException: ");
   System.err.println(e.getMessage());
  }

  try {
   con = DriverManager.getConnection(url,
          "lliu","goodgame");
 
   stmt = con.createStatement();       
 
   ResultSet rs = stmt.executeQuery(query);
   ResultSetMetaData rsmd = rs.getMetaData();
 
   int numberOfColumns = rsmd.getColumnCount();
 
   for (int i = 1; i <= numberOfColumns; i++) {
    if (i > 1) System.out.print(",  ");
    String columnName = rsmd.getColumnName(i);
    System.out.print(columnName);
   }
   System.out.println("");
 
   while (rs.next()) {
    for (int i = 1; i <= numberOfColumns; i++) {
     if (i > 1) System.out.print(",  ");
     String columnValue = rs.getString(i);
     System.out.print(columnValue);
    }
    System.out.println(""); 
   }
 
   stmt.close();
   con.close();
  } catch(SQLException ex) {
   System.err.print("SQLException: ");
   System.err.println(ex.getMessage());
  } 
 }
}
一会再推敲过程

还有 如果所要找的表不存在 或者没标明模式(username不对) 就会返回错误

SQLException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=LEI2.STAFF, DRIVER=3.50.152
很容易重现 大家可以自己试试
Reference: http://java.sun.com/products/jdbc/reference/codesamples/index.html

另外一个查所有db2 sql error code 的网址

http://os2ports.com/docs/DB2/db2m0/sql0100.htm

 

后记 几个比较有用的interface和类

首先是Class这个类 Class.ForName()这个方法就等于实例化一个类,把类放到JVM中去这样所有的静态对象都可以初始化并被直接调用,这里调用的是com.ibm.db2.jcc.DB2Driver这个类去挂sql的对数据库的通用操作

ResultSet是个interface,等于一个数据库中从上向下的指针,其操作只能针对某一行,取值也是可以用getString(列数)来获得某一行第几列的数值

ResultSetMetadata是用来获取数据表列信息的,一般来说用resultset.getmetadata来获得这一个类的对象。然后进行操作可以获得具体每一列的信息,包括列的总数。

然后一个从头到尾的循环,再从左到右取每一列的数值并在最后打印一行的结尾。就可以将整个数据表打印出来。

DriverManager属于一个类。按照其字面的意思也能够看明白如何使用了。这些在jdk里都有更详尽的方法,基本上很直观。

 con = DriverManager.getConnection(url,"lliu","goodgame");
    stmt = con.createStatement();   

    stmt.executeQuery(query);

这三个属于连接初始化数据库表数据的主要数据。 query则是sql语言

你可能感兴趣的:(Java相关)