日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java练气期(1)----java高级(JDBC)

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java练气期(1)----java高级(JDBC) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.什么是JDBC?

JDBC: Java Database Connectivity??為多種關系型數據庫提供統一訪問。即通過Java代碼訪問和操作數據庫

JDBC連接數據庫的步驟

//JDBC的工具類代碼,為持久層服務 package com.lkw.util;import java.sql.*;public class DBHelper {/*** <pre>* JDBC驅動程序,默認為MySQL* MySQL: <b>com.mysql.jdbc.Driver</b>* MSSQLServer: <b>com.microsoft.sqlserver.jdbc.SQLServerDriver</b>* </pre>*/private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";/*** <pre>* JDBC數據庫URL,默認為MySQL* MySQL:<b>jdbc:mysql://localhost:3306/數據庫名</b>* MSSQLServer:<b>jdbc:sqlserver://localhost:1433;DatabaseName=數據庫名</b>* </pre>*/private static final String JDBC_URL = "jdbc:mysql://localhost:3306/exam";/*** JDBC登錄數據庫服務器用戶名和密碼*/private static final String JDBC_USER = "root";private static final String JDBC_PASSWORD = "root";private static DBHelper db = null;private static Connection conn = null;private static PreparedStatement st = null;static {try {//加載驅動程序Class.forName(JDBC_DRIVER);} catch (ClassNotFoundException e) {e.printStackTrace();}}private DBHelper() throws SQLException {//獲取數據庫連接conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);}//獲取DBHelper對象public static DBHelper getInstance() throws SQLException {if(db == null || conn.isClosed()) {db = new DBHelper();}return db;}//查詢public ResultSet executeQuery(String sql, Object...args) throws SQLException {st = conn.prepareStatement(sql);//預處理if(args != null && args.length > 0) {for(int i = 0; i < args.length; ++i){st.setObject(i + 1, args[i]);}}return st.executeQuery();} //增刪改public int executeUpdate(String sql, Object...args) throws SQLException {st = conn.prepareStatement(sql);if(args != null && args.length > 0) {for(int i = 0; i < args.length; ++i) {st.setObject(i + 1, args[i]);}}return st.executeUpdate();}/*關閉對象*/public static void close() {if(st != null ) {try {st.close();} catch (SQLException e) {e.printStackTrace();}finally {if(conn != null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}finally{st = null;conn = null;db = null;}}}}}}

2.?簡述JDBC的Resulset,與Connection類

ResultSet是結果集,用來存放執行sql后返回的執行結果,對應于數據庫中的數據表

Connrction:與數據庫連接的對象

?

3.JDBC中,PreparedStatement相較于Statement有什么優點?

1)PreparedStatement可以使用預編譯的sql,而Statment只能使用靜態的sql

2)PreparedStatement可以使用sql緩存區,效率比Statment高

3)PreparedStatement可以有效防止sql注入,而Statment不能防止sql注入。

4.JDBC中如何進行事務處理?

一個事務是由一條或多條對數據庫操作的SQL語句所組成的一個不可分割的工作單元,只有當事務中的所有操作都正常執行了,整個事務才會被提交給數據庫。在JDBC中,一般是通過commit()方法或rollback()方法來結束事務的操作。其中commit()方法表示完成對事務的提交,rollback()方法表示完成事務回滾,多用于在處理事務的過程中出現了異常的情況,這兩種方法都位于java.sql.Connection類中。一般而言,事務默認操作是自動提交,即操作成功后,系統將自動調用commit()方法,否則將調用rollback()方法。

當然,在JDBC中,也可以通過調用setAutoCommit(false)方法來禁止自動提交,然后就可以把多個數據庫操作的表達式作為一個事務,在操作完成后調用commit()方法實現整體提交,如果其中一個表達式操作失敗,就會拋出異常而不會調用commit()方法。在這種情況下,就可以在異常捕獲的代碼塊中調用rollback()進行事務回滾。通過此種方法可以保持對數據庫的多次操作后,數據仍然保持一致性。

JDBC事務處理的方法

try{con.setAutoCommit(false);//開啟事務......con.commit();//try的最后提交事務 } catch() {con.rollback();//回滾事務 }

?

?

?5.在進行數據庫編程時,連接池有什么作用?

實際開發中“獲得連接”或“釋放資源”是非常消耗系統資源的兩個過程,為了解決此類性能問題,通常情況我們采用連接池技術,來共享連接Connection。

用池來管理Connection,這樣可以重復使用Connection。有了池,所以我們就不用自己來創建Connection,而是通過池來獲取Connection對象。當使用完Connection后,調用Connection的close()方法也不會真的關閉Connection,而是把Connection“歸還”給池。池就可以再利用這個Connection對象了。

?

常見的連接池有C3P0、DBCP。

C3P0開源免費的連接池!目前使用它的開源項目有:Spring、Hibernate等。使用第三方工具需要導入jar包,c3p0使用時還需要添加配置文件c3p0-config.xml。

DBCP也是一個開源的連接池,是Apache Common成員之一,在企業開發中也比較常見,tomcat內置的連接池。

?

?

?

?

?

總結

以上是生活随笔為你收集整理的java练气期(1)----java高级(JDBC)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。