java-JDBC-Oracle数据库连接

java-JDBC连接oracle数据库,StateMent和PreparedStatement对比(查询query)


1、 PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。

2、作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数

3、在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替 Statement.也就是说,在任何时候都不要使用Statement.
 
 
import java.awt.Color;
import java.awt.Container;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class JavaJdbc extends JFrame {
    Connection connection=null;//驱动连接接口
    Statement statement=null;//得到接口实现对象
    ResultSet rs=null;//结果集接口
    ResultSetMetaData rsmd=null;
    public JavaJdbc(){
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver"); //加载驱动
            String dbUrl="jdbc:oracle:thin:@localhost:1521:orcl"; //连接oracle数据库
            String username="admin"; //数据库的登录帐号和密码
            String password="admin";
            connection=DriverManager.getConnection(dbUrl,username,password);
            statement=connection.createStatement();
            rs=statement.executeQuery("select * from student");//sql查询语句
            rsmd=rs.getMetaData();
            int length=rsmd.getColumnCount();
            for(int i=1;i<=length;i++)
                System.out.print(rsmd.getColumnName(i)+" ");
            System.out.println();
            while(rs.next()){
                for(int i=1;i<=length;i++)
                    System.out.print(rs.getString(i)+" ");
                System.out.println();
            }
            
        }catch(ClassNotFoundException e){
            //System.out.println("数据库驱动加载失败..."+e.getStackTrace());
            e.printStackTrace();
        }catch(SQLException e){
            System.out.println("数据库连接失败..."+e.getStackTrace());
        }finally{
            try{
                if(rs!=null){
                    rs.close();
                }
                if(connection!=null){
                    connection.close();
                }
            }catch(SQLException e){
                e.getStackTrace();
            }
        }
    }
    public static void main(String args[]){
        new JavaJdbc();
    }
}

 preparedStatement

import java.awt.Color;
import java.awt.Container;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class JavaJdbc extends JFrame {
    Connection connection=null;//驱动连接接口
    PreparedStatement preparedstatement=null;//得到接口实现对象
    ResultSet rs=null;//结果集接口
    ResultSetMetaData rsmd=null;
    public JavaJdbc(){
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver"); //加载驱动
            String dbUrl="jdbc:oracle:thin:@localhost:1521:orcl"; //连接oracle数据库
            String username="admin"; //数据库的登录帐号和密码
            String password="admin";
            connection=DriverManager.getConnection(dbUrl,username,password);
            String sql="select * from student";
            //创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
            preparedstatement=connection.prepareStatement(sql);
            rs=preparedstatement.executeQuery();//获得结果集
            rsmd=rs.getMetaData();
            int length=rsmd.getColumnCount();
            for(int i=1;i<=length;i++)
                System.out.print(rsmd.getColumnName(i)+" ");
            System.out.println();
            while(rs.next()){
                for(int i=1;i<=length;i++)
                    System.out.print(rs.getString(i)+" ");
                System.out.println();
            }
            
        }catch(ClassNotFoundException e){
            //System.out.println("数据库驱动加载失败..."+e.getStackTrace());
            e.printStackTrace();
        }catch(SQLException e){
            System.out.println("数据库连接失败..."+e.getStackTrace());
        }finally{
            try{
                if(rs!=null){
                    rs.close();
                }
                if(connection!=null){
                    connection.close();
                }
            }catch(SQLException e){
                e.getStackTrace();
            }
        }
    }
    public static void main(String args[]){
        new JavaJdbc();
    }
}