本章都是使用如下的數據庫
二、JDBC的編程步驟(以mysql爲例子)
如下:
1、加載數據庫驅動(jar文件):每個服務商提供包
Class.forName("com.mysql.jdbc.Driver");//加載包爲mysql軟件包
其他數據庫軟件加載包如下:
- Oracle數據庫:oracle.jdbc.driver.OracleDriver
- SQL Server2008數據庫:com.microsoft.jdbc.sqlserver.SQLServerDriver
- DB2數據庫:com.ibm.db2.jdbc.Net.DB2Driver
2、獲得數據庫鏈接
形如:
conn= DriverManager.getConnection( "url" , "user" , "password" );
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cxg2850105498","root","cxg200888");//這裏是mysql數據庫鏈接方式
- Oracle數據庫:jdbc:oracle:thin:@localhost:1521:orcl(爲數據庫的SID) , sUsr(用戶) , sPwd(密碼)
- SQL Server2008數據庫:jdbc:sqlserver://localhost:1433;databasename=stu, sa(用戶), sPwd(密碼)
- DB2數據庫:jdbc:db2://localhost:5000/sample(爲你的數據庫名),sUsr(用戶), sPwd(密碼)
3、創建語句
4、執行查詢
5、遍歷結果集合
6、關閉數據庫
以mysql爲例子:
package com;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Statement;
public class Test {
public static void main(String []args){
java.sql.Connection conn=null;
//1.加載註冊驅動類
try {
Class.forName("com.mysql.jdbc.Driver");//加載驅動
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//2.創建數據庫鏈接
try {
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cxg2850105498","root","cxg200888");
} catch (SQLException e) {
e.printStackTrace();
}
//3.創建語句
String sql="select id,name,email from c";
try {
Statement s=(Statement) conn.createStatement();//Statement 接口需要通過Connection 接口進行實例化操作
//4.執行SQL查詢
ResultSet r=s.executeQuery(sql);
//5.遍歷結果集
while(r.next()){
//r.next()判斷是否還有數據
//按1、2、3順序取數據庫的值
int id=r.getInt(1);
String name=r.getString(2);
String email=r.getString(3);
System.out.println(id+" "+name+" "+email);
}
} catch (SQLException e) {
e.printStackTrace();
}
//6.關閉數據庫
finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
通過SELECT 語句,可以查詢數據中的內容,在mysql 中直接查詢的時候可以發現將返回全部的查詢結果給用戶看,那麼對於程序的操作中也是一樣的,所有的查詢結果要返回到程序處進行輸出查看,那麼程序通過ResultSet 接口保存全部的查詢結果,通過Statement 接口中的executeQuery()方法查詢。
查詢之後的數據需要分別的取出。通過 next ()方法找到返回的每一行數據,每一行中各個列的數據需要通過getXxx()方法取得,例如:
取得整型:getInt()
取得字符串:getString()
取得日期:getDate()
取得小數:getFloat()
三、第一種改進JDBC
1、將驅動和數據庫鏈接封裝在DBUtil中(創建DBUtil.java類)
package com;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
public class DBUtil {
//定義成不可修改的
private static String driver;
private static String url;
private static String username;
private static String password;
//把值都按要求填入
static {
driver="com.mysql.jdbc.Driver";
url="jdbc:mysql://localhost:3306/cxg2850105498";
username="root";
password="cxg200888";
}
//打開數據庫
public static Connection open() {
try {
//1、註冊加載驅動
Class.forName(driver);
//2、鏈接數據庫
return (Connection) DriverManager.getConnection(url,username,password);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//關閉數據庫
public static void close(Connection conn) {
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2、將Test.java修改
package com;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
public class Test {
public static void main(String []args){
Connection conn=DBUtil.open();
//3.創建語句
String sql="select id,name,email from c";
//4.執行SQL查詢
try {
Statement s=(Statement) conn.createStatement();
ResultSet r=s.executeQuery(sql);
//5.遍歷結果集
while(r.next()){
//r.next()判斷是否還有數據
int id=r.getInt(1);
String name=r.getString(2);
String email=r.getString(3);
System.out.println(id+" . "+name+" || "+email);
}
} catch (SQLException e) {
e.printStackTrace();
}
//6、關閉數據庫
finally{
DBUtil.close(conn);
}
}
}
四、第二種改進JDBC
1、將加載註冊和數據庫鏈接弄到config.properties配置文件裏
不能有任何空格逗號
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/cxg2850105498
username=root
password=cxg200888
2、DBUtil.java
package com;
import java.io.FileNotFoundException;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import com.mysql.jdbc.Connection;
public class DBUtil {
//定義成不可修改的
private static String driver;
private static String url;
private static String username;
private static String password;
//把值都按要求填入
static {
//此對象是用於加載properties文件數據
ResourceBundle rb=ResourceBundle.getBundle("Config");
driver=rb.getString("driver");
url=rb.getString("url");
username=rb.getString("username");
password=rb.getString("password");
}
//打開數據庫
public static Connection open() {
try {
//註冊加載驅動
Class.forName(driver);
//鏈接數據庫
return (Connection) DriverManager.getConnection(url,username,password);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//關閉數據庫
public static void close(Connection conn) {
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}