Java連接mysql詳解&解決亂碼

 

 

解決java插入數據到數據庫亂碼問題

 

將原來的

jdbc:mysql://localhost:3306/YourDb

改爲

jdbc:mysql://localhost:3306/YourDb?useUnicode=true&characterEncoding=UTF-8

做完以上工作後,插入到mysql的中文應該不會再是亂碼了.

 

來自 <http://blog.csdn.net/fancylovejava/article/details/9229941>

 

 

 

1、加載JDBC驅動程序

在連接數據庫之前,首先加載想要連接的數據庫的驅動,即使數據庫廠商提供的jar包,這通過java.lang.Class類的靜態方法實現

 

Try{

Class.forName("com.mysql.jdbc.Driver");

 

System.out.println("成功加載驅動")

}catch(ClassNotFoundException e){

System.out.println("找不到驅動程序類,加載驅動失敗")

e.printStackTrace();

}

成功加載後,會將Driver類的實例註冊到DriverManager類中,在下一步,就可以直接調用類中的方法

 

 

2.創建數據庫的連接

要連接數據庫,需要向java.sql.DriverManager請求並獲得Connection對象,

該對象就代表一個數據庫的連接

使用DriverManagergetConnection(String url,String username,String password )

來獲得路徑,用戶名,密碼

 

String url="jdbc:mysql://localhost:3306/test";

String username="root";

String password="root";

try{

Connection con=DriverManager.getConnection(url,username,password);

System.out.println("數據庫連接成功");

 

}catch(SQLExceptionse){

System.out.println("數據庫連接失敗");

se.printStackTrance();

}

 

也可以直接把用戶名和密碼附在url

jdbc:mysql://localhost:3306/test?username=root&password=root;

3.創建一個Statement

要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分爲一下3種類型

1)、執行靜態SQL語句,通常通過Statement實例實現

2)、執行動態sql語句,通常通過PreparedStatement實例實現

(當查詢中的欄位,表或者條件等不確定,或者是變量時,就需要使用動態SQL,因爲此時,無法寫出靜態的(也就是固定的)SQL)

3)、執行數據庫存儲過程,通常通過CallableStatement實例實現

實現方式

1Statement stmt=con.createStatement();

2PrepareStatement pstmt=con.preparaedStatement(sql);

3CallableStatement cstmt=con.prepareCall("{CALLdemoSp(?,?)}");

4.執行SQL語句

Statement接口提供了三種執行SQL語句的方法:executeQueryexecuteUpdateexecute

(1)ResultSet executeQueryString sqlString):執行查詢數據庫的SQL語句,返回一個結果集對象

(2)int executeUpdateString sqlString):用於執行INSERTUPDATEDELETE語句以及SQL

DDL語句,如:create tabledrop table

(3)executesqlString)用於執行返回多個結果集、多個更新計數或二者組合的語句

具體實現代碼

1ResultSetrs=stmt.executeQuery("SELECT * FROM …")

2introws=stmt.executeUpdate("Insert INTO…")

3booleanflag=stmt.execute(String sql);

 

 

5、處理結果

兩種情況

1、執行更新返回的是本次操作影響到的記錄數

2、執行查詢返回的結果是一個ResultSet對象

具體實現代碼

While(rs.next()){

String name=rs.getString("name");

String pass=rs.getString(1);

 

}

6、關閉JDBC對象

操作結束後要把所使用的JDBC獨享全都關閉,以釋放JDBC資源,關閉順序和生命順序相反

1)關閉記錄集

2)關閉生命

3)關閉連接對象

具體實現

If(rs!=null){

//關閉記錄集

Try{

rs.close

}catch(SQLException e){

e.printStackTrance();

}

}

 

 

If(stmt!=null){

Try{

stmt.close

}catch(SQLException e){

e.printStackTrance();

}

}

 

 

If(con!=null){

Try{

con.close

}catch(SQLException e){

e.printStackTrance();

}

}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章