//Java 数据库连接演示程序

//JDBCDemo.java

//演示JDBC操作数据库(ODBC数据资源)的各项功能。

//创建表(CREATE)、删除表(DROP)、

//插入(INSERT)、选择(SELECT)、更改(UPDATE)。

public class JDBCDemo

 {

   public static void main(String args[])

    try{

         // Statement对象执行SQL得到结果

     Statement stmt; 

         PreparedStatement pstmt;

       //PreparedStatement对象预编译SQL

    //提供访问数据库表得到结果

         ResultSet rs; 

 

    //加载 jdbc-odbc 桥驱动程序

        Class.forName("sun.jdbc.odbc.JdbcodbcDriver");

    //定义JDBC URL

       String url = "jdbc:odbc:JDBCDemo";

 

    //得到与数据库的连接

        Connection con = DriverManager.getConnection(url);

    //显示URL和连接信息

       System.out.println("URL:"+url);

       System.out.println("Connection:"+con);

    //得到一个Statement对象

        stmt = con.createStatement();

    //如果表DemoTable已经存在,则删除之,否则,抛掷异常

     System.out.println("DROP TABLE DemoTable,if it exists.");

     try{

        stmt.executeUpdate("DROP TABLE DemoTable");

        }catch(Exception e){

        System.out.print(e);

        System.out.println("No existing table to delete");

    }

 

    //在数据库中创建一个表DemoTable

    stmt.executeUpdate("CREATE TABLE DemoTable("

       +"test_id int,test_val char(15) not null)");

    System.out.println("table DemoTable created!");

 

    //在表中插入一些值

    stmt.executeUpdate("INSERT INTO DemoTable ("

       +"test_id,test_val) VALUES(1,'One')");

    stmt.executeUpdate("INSERT INTO DemoTable ("

       +"test_id,test_val) VALUES(2,'Two')");

    stmt.executeUpdate("INSERT INTO DemoTable ("

       +"test_id,test_val) VALUES(3,'Three')");

    stmt.executeUpdate("INSERT INTO DemoTable ("

       +"test_id,test_val) VALUES(4,'Four')");

    stmt.executeUpdate("INSERT INTO DemoTable ("

       +"test_id,test_val) VALUES(5,'Five')");

 

    //得到另一个Statement对象

    stmt = con.createStatement();

 

    //查询数据库中的表DemoTable,得到以test_id排序后的所有记录

    //并存储在ResultSet对象rs中

    rs = stmt.executeQuery(

    "SELECT * from DemoTable ORDER BY test_id"); //排序

 

    //显示表DemoTable中的所有记录

    System.out.println("Display all results:");

    while(rs.next())

    {

      int theInt = rs.getInt("test_id");

      String str = rs.getString("test_val");

      System.out.println("\test_id="+theInt + "\tstr="+str);

     }

     //创建已准备好的语句,更新"DemoTable"表中

     //某条记录的test_val字段

     //已准备好的语句接受两个参数

     pstmt = con.prepareStatement(

       "UPDATE DemoTable SET test_val = ? WHERE test_id = ?");

 

     //更改表DemoTable中的第2条记录的test_val字段的值

     //填充UPDATE语句中的“?”,并执行UPDATE语句

     pstmt.setString(1,"Hello!");

     pstmt.setInt(2,2);

     pstmt.executeUpdate();

     System.out.println("Update row number 2:OK.");

 

     //显示表DemoTable中更新后的第2条记录

     stmt = con.createStatement();

     rs = stmt.executeQuery(

    "SELECT * from DemoTable ORDER BY test_id");

     System.out.println("Display row  2:");

     if (rs.next() && rs.net())

     {

      int theInt = rs.getInt("test_id");

      String str = rs.getString("test_val");

      System.out.println("\test_id="+theInt + "\tstr="+str);

     }

 

     con.close(); //关闭与数据库的连接

   }catch(Exception e){

      e.printStackTrace();

   }

  }

}