1. 程式人生 > >JDBC連線mysql步驟

JDBC連線mysql步驟

jdbc連線時需要用到 mysql-connector-java-5.1.39-bin.jar
下載地址 http://dev.mysql.com/downloads/connector/j/


import java.sql.*;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;

public class JDBCMain {
    /*
        JDBC 問題
        1、資料庫連線,使用時建立,用完釋放,對資料庫進行頻繁連線開啟和關機,對資料庫造成資源浪費,影響資料庫效能
        解決方案:使用資料庫連線池管理資料庫連線

       2、將sql語句硬編碼帶java程式碼中,如果sql語句要修改,需要重新編譯java程式碼,不利於系統維護
       解決方案:使用配置檔案。將sql語句配置到xml檔案中,即使sql語句發生變化,不需要對java程式碼進行重新編譯

       3、向statement設定引數時,對佔位符位置和設定引數值,硬體碼在java程式碼中,不利於系統維護
       解決方案:使用配置檔案。將sql語句及佔位符和引數全部設定在xml中。

       4、從resultset中遍歷結果集資料時,存在硬編碼,將獲取表的欄位進行硬編碼
       解決方案:將結果集自動對映成java物件
     */
public static void main(String[] args) { //資料庫連線 Connection connection = null; //預編譯狀態(statement) , 使用預編譯的Statement提高資料庫效能 PreparedStatement preparedStatement = null; //結果集 ResultSet resultSet = null; try { //載入資料庫驅動 Class.forName("com.mysql.jdbc.Driver"
); //通過驅動管理獲取資料庫連線 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mdb?charaterEncoding='UTF-8'","root","root"); //定義sql語句 ?表示佔位符 String sql = "select * from user where username = ?"; //獲取預處理statement preparedStatement = connection.prepareStatement(sql); //設定引數
preparedStatement.setString(1,"王五"); //像資料庫查詢,返回結果集 resultSet = preparedStatement.executeQuery(); //便利查詢結果集 while (resultSet.next()){ System.out.println(resultSet.getString("id")+" "+resultSet.getString("username")); } }catch (Exception e){ e.printStackTrace(); }finally { //關閉順序與建立順序相反 if (resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if (preparedStatement!=null){ try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }