?創建一個以JDBC連接數據庫的程序,包含7個步驟:
1、加載JDBC驅動程序:
在連接數據庫之前,首先要加載想要連接的數據庫的驅動到JVM(Java虛擬機),這通過java.lang.Class類的靜態方法forName(String? className)實現。 ? 例如:
try{
//加載MySql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,加載驅動失敗!");
e.printStackTrace() ;
}
成功加載后,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL
?連接URL定義了連接數據庫時的協議、子協議、數據源標識。????? ?書寫形式:協議:子協議:數據源標識
協議:在JDBC中總是以jdbc開始
子協議:是橋連接的驅動程序或是數據庫管理系統名稱。
數據源標識:標記找到數據庫來源的地址與連接端口。
例如:(MySql的連接URL)jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字符編碼方式。
3、創建數據庫的連接
?要連接數據庫,需要向java.sql.DriverManager請求并獲得Connection對象,該對象就代表一個數據庫的連接。????? ?使用DriverManager的getConnectin(String url , String username ,??? String password )方法傳入指定的欲連接的數據庫的路徑、數據庫的用戶名和密碼來獲得。
例如://連接MySql數據庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("數據庫連接失敗!");
se.printStackTrace() ;
}
4、創建一個Statement
?要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3? 種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。??????? 2、執行動態SQL語句。通常通過PreparedStatement實例實現。??????? 3、執行數據庫存儲過程。通常通過CallableStatement實例實現。
具體的實現方式:Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、執行SQL語句
Statement接口提供了三種執行SQL語句的方法:executeQuery 、executeUpdate?和execute
1、ResultSet executeQuery(String sqlString):執行查詢數據庫的SQL語句????????? ,返回一個結果集(ResultSet)對象。?????? 2、int executeUpdate(String sqlString):用于執行INSERT、UPDATE或????????? DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等?????? 3、execute(sqlString):用于執行返回多個結果集、多個更新計數或二者組合的?? 語句。
具體實現的代碼:ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、處理結果
兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。?????? 2、執行查詢返回的結果是一個ResultSet對象。
? ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法提供了對這些 行中數據的訪問。????? ? 使用結果集(ResultSet)對象的訪問方法獲取數據:while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比較高效
}
(列是從左到右編號的,并且從列1開始)
7、關閉JDBC對象
操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲??明順序相反:
1、關閉記錄集?????? 2、關閉聲明?????? 3、關閉連接對象if(rs != null){ // 關閉記錄集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 關閉聲明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 關閉連接對象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
下面是一個java連接Mysql數據庫的代碼塊package package1;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class Test {??? public static void main(String[] args) {
//聲明Connection對象
Connection con;
//驅動程序名
String driver = "com.mysql.jdbc.Driver";
//URL指向要訪問的數據庫名mydata
String url2="jdbc:mysql://localhost:3306/studentin?useUnicode=true&characterEncoding=utf-8&useSSL=false";
//MySQL配置時的用戶名
String user = "root";
//MySQL配置時的密碼
String password = "12305";
//遍歷查詢結果集
try {
//加載驅動程序
Class.forName(driver);
//1.getConnection()方法,連接MySQL數據庫!!
con = DriverManager.getConnection(url2,user,password);
if(!con.isClosed())
System.out.println("Succeeded connecting to the Database!");
//2.創建statement類對象,用來執行SQL語句!!
Statement statement = con.createStatement();
//要執行的SQL語句
String sql = "select name,age from student";
//3.ResultSet類,用來存放獲取的結果集!!
ResultSet rs = statement.executeQuery(sql);
System.out.println("-----------------");
System.out.println("執行結果如下所示:");
System.out.println("-----------------");
System.out.println("name" + "\t" + "age");
System.out.println("-----------------");
String name = null;
int age;
while(rs.next()){
//獲取stuname這列數據
name = rs.getString("name");
//獲取stuid這列數據
//age = rs.getString("age");
age = rs.getInt("age");
//輸出結果
System.out.println(name + "\t" +age);
}
rs.close();
con.close();
} catch(ClassNotFoundException e) {
//數據庫驅動類異常處理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch(SQLException e) {
//數據庫連接失敗異常處理
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("數據庫數據成功獲取!!");
}
}}我的數據庫名稱為studentin,表名為student,下圖分別是表和程序結果的截圖
參考:http://www.aspku.com/kaifa/java/236248.html