java-資料庫操作(JDBC)
前言:JDBC用到的API和常用方法
-
DriverMannager類
載入驅動並創建與資料庫的連接,通常使用Class類的靜態方法
forName()來實現載入驅動,使用getConnection(String url,String user,String pwd)方法實現連接,返回如下Connection對象
-
Connection介面
使用
createStatement()返回一個用於向資料庫發送語句的Statement對象,prepareStatement(String sql)返回一個用於向資料庫發送參數化的SQL語句的PreparedStatement對象
-
Statement介面
用於執行靜態SQL語句,並返回一個結果對象
boolean execute(String sql)//用於執行各種SQL語句,返回布爾值,true代表有查詢結果,可用getResultSet()獲得查詢結果 int executeUpdate(String sql)//用於執行insert、update、delete語句,返回資料庫中受影響的記錄條數 ResultSet executeQuery(String sql)//執行select語句,返回ResultSet對象
-
PreparedStatement介面
是Statement的子介面,擴展了帶有參數SQL語句的執行操作,使用佔位符"?"代替參數,使用setXXX()方法賦值
int executeUpdate()//執行SQL語句,限制語句為無返回內容的sql或DML語句 ResultSet executeQuery()//執行SQL查詢 返回ResultSet對象 void setInt(int index,int x)//將指定的對應表頭的參數設置為x void setFloat(int index,float x) void setString(int index,String x) void setDate(int index, Date x)//注意:Date類型必須為java.sql.Date,非java.util.Date
-
ResultSet介面
用於保存查詢後的結果集,封裝在一個邏輯表格中,介面內部有指向表格數據行的游標(指針),調用
next()方法作為循環條件迭代結果集String getString(int columnindex)//根據索引獲取指定欄位的String的值 String getString(String columnname)//根據欄位名稱獲取指定欄位的String的值 int getInt(int columnindex)//根據索引獲取指定欄位的int的值 int getInt(String columnname)//根據欄位名稱獲取指定欄位的int的值 Date getDate(int columnindex)//根據索引獲取欄位的Date值 Date getDate(String columnname)//根據欄位名稱獲取欄位的Date值 boolean next()//游標下移一行 boolean absolute(int row)//游標移動到指定行
步驟概述:
1.載入資料庫驅動
資料庫驅動zip包下載://dev.mysql.com/downloads/connector/j/
選擇Platform Independent,完成後在項目結構中導入文件夾里的Jar包

載入驅動
Class.forName("com.mysql.jdbc.Driver");//Mysql驅動
//IDEA親測提示上面語句已經棄用,可改為com.mysql.cj.jdbc.Driver""
Class.forName("oracle.jdbc.driver.OracleDriver");//Oracle驅動
2.通過DriverManager獲取資料庫連接
Connect conn=DriverManager.getConnection(String url,String user,String pwd);
url格式:jdbc:mysql://localhost:3306/database-name
3.通過Connection對象獲取Statement對象
Statement stmt=conn.creatStatement();或stmt=conn.prepareStatement(String sql);
4.使用Statement執行SQL語句
ResultSet rs=stmt.executeQuery(sql);
5.操作得到的結果集
rs.getXXX();
6.關閉連接,釋放資源
在try...catch..後的finally{}中統一關閉資源
實例
public class sql {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1.載入資料庫驅動
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://114.xx.xxx.62:3306/company";
String user = "root";
String pwd = "xxxxxx";
//2.通過DriverManager獲取資料庫連接
conn = DriverManager.getConnection(url, user, pwd);
//3.通過Connection獲取statement對象
stmt = conn.createStatement();
//4.執行SQL語句
rs = stmt.executeQuery("select * from demo1");
//5.操作結果集
while (rs.next()) {
String name = rs.getString("企業名稱");
String lat = rs.getString("經緯度");
String flag1 = rs.getString("flag1");
System.out.println(name+" | "+lat+" | "+flag1);
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
//6.關閉連接,釋放資源
if(rs!=null){rs.close();}
if(stmt!=null){stmt.close();}
if(conn!=null){conn.close();}
}
}
}
}
運行結果


