# JDBC
java database connection ?Java 數據庫連接技術
## JDBC 驅動程序
如果需要通過jdbc技術連接關系型數據庫,就需要為jdbc提供一個該數據庫的驅動。
驅動程序由對應的數據庫廠商提供。
mysql提供了針對于各種語言的驅動程序。去官網下載和java相關的驅動即可
## JDBC連接的步驟
1.?導入mysql的驅動.jar ?
2.?注冊驅動,在jdbc4.0 之后變為可選,因為下載的驅動中包含了對驅動類的配置
? ?Class.forName("com.mysql.cj.jdbc.Driver")
3.?獲取連接
? ?DriverManager 類 管理驅動,并可以通過方法從驅動中獲取連接
? ?getConnection()
? ? ?jdbcUrl:數據庫的路徑
? ? ?user:用戶名
? ? ?password :密碼
? ?String jdbcUrl = "jdbc:mysql://localhost:3306/empdb?useSSL=true&serverTimezone=Asia/Shanghai&charset=UTF-8";
? ?String username = "root";
? ?String password = "admin"
? ?Connection conn = DriverManager.getConnection(jdbcUrl,username,password)
4.?執行sql語句
? ?String sql = "select * from emp";
? ?Statement st = conn.createStatement();
5.?獲取結果集
? ?java
? ?ResultSet?rs = st.executeQuery(sql);
? ?while(rs.next()) {
? ? System.out.println(rs.getString("ename"));
? ?}
6.?關閉結果集
??rs.close()
7.?關閉語句
??st.close()
8.?關閉連接
???conn.close()
## Statement
執行sql語句
? String sql = "select * from emp";
? Statement st = conn.createStatement();
? ResultSet rs = st.executeQuery(sql);
? 只執行sql.不做sql處理。很容易造成sql注入攻擊。所以一般使用PreparedStatement
## PreparedStatement
sql的預編譯。查看sql是否合理。后續通過該對象的方法進行參數設置。
需要使用`?`這種占位符的方式,表明參數的位置。和類型無關
設置參數時的參數位置從左往右,從1開始依次增加
String sql = "select * from emp where job = ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(位置,值)
setString 設置字符串參數
setInt()
setDouble
...
getMoreResults(); 執行存儲過程時,獲取多個結果集
## CallableStatment
執行的存儲過程
獲取多個結果集
getMoreResults() ?獲取多個結果集。
if(pst.getMoreResults()) {
? ? ?rs = pst.getResultSet();
? ? ?while(rs.next()) {
? ? ?System.**out**.println(rs.getString(2));
? ?}
} ? ?
## ResultSet
getMetaData() 返回對象 ResultSetMetaData 包含表的中信息
? getColumnCount() 返回結果集中列的數量
? getColumnName(int) 返回指定索引列的名稱。索引從1開始,這個名稱是真實名稱
? getColumnLabel(int) 返回指定索引的結果集中的列名。(如果是別名,則列別名)
getInt/getString()....系列方法
? 通過列索引獲取和指定列的值
? 通過列名稱獲取指定列的值
## java 項目的分類
java項目---- 打包 jar包
網站項目---- war包