標籤:
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(); }}
java-JDBC-Oracle資料庫連接