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(); } }