|
|||
|
解決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對象,
該對象就代表一個數據庫的連接
使用DriverManager的getConnection(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實例實現
實現方式
【1】Statement stmt=con.createStatement();
【2】PrepareStatement pstmt=con.preparaedStatement(sql);
【3】CallableStatement cstmt=con.prepareCall("{CALLdemoSp(?,?)}");
4.執行SQL語句
Statement接口提供了三種執行SQL語句的方法:executeQuery、executeUpdate和execute
(1)、ResultSet executeQuery(String sqlString):執行查詢數據庫的SQL語句,返回一個結果集對象
(2)、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或DELETE語句以及SQL
DDL語句,如:create table和drop table等
(3)、execute(sqlString)用於執行返回多個結果集、多個更新計數或二者組合的語句
具體實現代碼
【1】ResultSetrs=stmt.executeQuery("SELECT * FROM …")
【2】introws=stmt.executeUpdate("Insert INTO…")
【3】booleanflag=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();
}
}