亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java JDBC連接數據庫常見操作總結

2024-07-14 08:43:55
字體:
來源:轉載
供稿:網友

本文實例總結了Java JDBC連接數據庫常見操作。分享給大家供大家參考,具體如下:

db.properties配置文件(MySql數據庫)

# db.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8jdbc.username=rootjdbc.password=123456# paramter for BasicDataSourceinitSize=2maxActive=2

db.properties配置文件(Oracle數據庫)

# db.propertiesjdbc.driver=oracle.jdbc.OracleDriverjdbc.url=jdbc:oracle:thin:localhost:1521:orcljdbc.username=rootjdbc.password=123456# paramter for BasicDataSourceinitSize=2maxActive=2

JDBC直接連接數據庫

package JDBC;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties;/** * JDBC連接數據庫管理工具類 */public class JDBC {  static String driver;  static String url;  static String username;  static String password;  static {    try {      Properties cfg = new Properties();      InputStream in = JDBC.class.getClassLoader().getResourceAsStream("db.properties");      cfg.load(in);  //將文件內容加載到Properties對象中(以散列表形式存在)      driver = cfg.getProperty("jdbc.driver");      url = cfg.getProperty("jdbc.url");      username = cfg.getProperty("jdbc.username");      password = cfg.getProperty("jdbc.password");      in.close();    } catch (IOException e) {      e.printStackTrace();      throw new RuntimeException(e);    }  }  /**   * 創建數據庫連接   */  public static Connection getConnection() {    try {      Class.forName(driver); //注冊驅動      Connection conn = DriverManager.getConnection(url, username, password);      return conn;    } catch (Exception e) {      e.printStackTrace();      throw new RuntimeException(e);    }  }  /*   * 關閉數據庫的連接   */  public static void close(Connection conn) {    if (conn != null) {      try {        conn.close();      } catch (SQLException e) {        e.printStackTrace();      }    }  }}

通過連接池連接數據庫

package JDBC;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;import org.apache.commons.dbcp.BasicDataSource;/** * 連接池版本的數據庫連接管理工具類 */public class DBUtils {  private static String driver;  private static String url;  private static String username;  private static String password;  private static int initSize;  private static int maxActive;  private static BasicDataSource dbs;  static {    dbs = new BasicDataSource();    Properties cfg = new Properties();    try {      InputStream in = DBUtils.class.getClassLoader().getResourceAsStream("db.properties");      cfg.load(in);      // 初始化參數      driver = cfg.getProperty("jdbc.driver");      url = cfg.getProperty("jdbc.url");      username = cfg.getProperty("jdbc.username");      password = cfg.getProperty("jdbc.password");      initSize = Integer.parseInt(cfg.getProperty("initSize"));      maxActive = Integer.parseInt(cfg.getProperty("maxActive"));      in.close();      // 初始化連接池      dbs.setDriverClassName(driver);      dbs.setUrl(url);      dbs.setUsername(username);      dbs.setPassword(password);      dbs.setInitialSize(initSize);      dbs.setMaxActive(maxActive);    } catch (IOException e) {      e.printStackTrace();      throw new RuntimeException(e);    }  }  /**   * 創建數據庫連接,從連接池中獲取連接,如果連接池滿了,則等待.   */  public static Connection getConnection() {    try {      Connection conn = dbs.getConnection();      return conn;    } catch (SQLException e) {      e.printStackTrace();      throw new RuntimeException(e);    }  }  /*   * 關閉數據庫的連接,歸還到連接池   */  public static void close(Connection conn) {    if (conn != null) {      try {        conn.close();      } catch (SQLException e) {        e.printStackTrace();      }    }  }  //回滾,僅在禁用自動提交時使用  public static void rollback(Connection conn) {    if (conn != null) {      try {        conn.rollback();      } catch (SQLException e) {        e.printStackTrace();      }    }  }}

連接數據庫后的使用

Connection conn=null;try{  conn=DbUtils.getConnection();  Statement st=conn.createStatement();  String sql="select id, name from people";  ResultSet rs=st.executeQuery(sql);  while(rs.next()){    int id=rs.getInt("id");    String name=rs.getString("name");    System.out.println(id+","+name);  }  //結果集元數據  ResultSetMetaData meta = rs.getMetaData();  int n = meta.getColumnCount(); //多少列  for(int i=1; i<=n; i++){    String name= meta.getColumnName(i); //獲取列名    System.out.println(name);  }  rs.close();//釋放查詢結果  st.close();//釋放語句對象}catch(Exception e){  e.printStackTrace();}finally {  DbUtils.close(conn);}

預編譯SQL執行 及 取消自動提交

try {  conn = DBUtils.getConnection();  conn.setAutoCommit(false);  //取消自動提交, 后續手動提交  String sql="update people set name=? where id=? ";  PreparedStatement ps= conn.prepareStatement(sql);  //按照順序發送參數  ps.setString(1, "Lao Wang");  ps.setInt(2, 100);  //執行"執行計劃"  int n=ps.executeUpdate();  conn.commit();  //手動提交} catch (Exception e) {  e.printStackTrace();  DBUtils.rollback(conn); //異?;貪L}finally{  DBUtils.close(conn);}

Statement的addBatch(sql)executeBatch()方法可以批量執行sql。

Statement st=conn.createStatement();st.addBatch(sql1); //sql1 添加到Statement的緩存中st.addBatch(sql2);st.addBatch(sql3);int[] ary=st.executeBatch();  //執行一批SQL

PreparedStatement也支持批量參數的處理

PreparedStatement ps = conn.prepareStatement(sql);ps.setInt(1, 1);ps.setString(2, "wang");ps.addBatch();   //將參數添加到ps緩存區ps.setInt(1, 2);ps.setString(2, "li");ps.addBatch();   //將參數添加到ps緩存區int[] ary = ps.executeBatch(); // 批量執行

PreparedStatement ps = conn.prepareStatement(sql);

還可以傳入第二個參數用以獲取自增主鍵或者序號自增的列

Java,JDBC,連接數據庫

希望本文所述對大家java程序設計有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜xxx| 日产精品99久久久久久| 97在线精品国自产拍中文| 中文字幕日韩视频| 91久久精品美女高潮| 欧美亚洲另类在线| 欧美一区二区色| 久久久精品久久久久| 欧美性极品xxxx娇小| 亚洲女人天堂视频| 欧美人在线视频| 亚洲午夜精品久久久久久久久久久久| 日韩精品在线看| 久久夜色精品国产亚洲aⅴ| 日韩精品在线视频观看| 久久久www成人免费精品张筱雨| 欧美成人午夜免费视在线看片| 国产亚洲视频中文字幕视频| 久久亚洲精品一区二区| 欧美日本啪啪无遮挡网站| 国产一区二区三区精品久久久| 日韩电影大片中文字幕| 欧美日韩电影在线观看| 欧美一区三区三区高中清蜜桃| 国产精品视频最多的网站| 国产精品444| 亚洲偷熟乱区亚洲香蕉av| 一区二区三区在线播放欧美| 91久久久国产精品| 日韩精品在线观看网站| 欧美孕妇孕交黑巨大网站| 国产一区二区日韩精品欧美精品| 亚洲免费电影在线观看| 日韩电影在线观看免费| 国产精品自产拍在线观看中文| 精品国产31久久久久久| 久久久国产精品亚洲一区| 国产午夜精品免费一区二区三区| 成年无码av片在线| 欧美在线精品免播放器视频| 国产欧美精品日韩| 亚洲最大的免费| 亚洲国产欧美一区二区三区同亚洲| 亚洲精品狠狠操| 亚洲第一福利在线观看| 亚洲天堂成人在线| 92福利视频午夜1000合集在线观看| 美乳少妇欧美精品| 欧美精品激情在线| 91国产精品视频在线| 亚洲自拍偷拍色片视频| 国模私拍一区二区三区| 欧美精品www在线观看| 成人动漫网站在线观看| 黑人精品xxx一区| 国产一区二区三区视频免费| 一区二区av在线| 国产精品美女www| 日韩av影视在线| 高清欧美一区二区三区| 国产成人精品亚洲精品| 粉嫩老牛aⅴ一区二区三区| 国产中文日韩欧美| 亚洲va久久久噜噜噜久久天堂| 色琪琪综合男人的天堂aⅴ视频| 日韩视频免费在线观看| 欧美激情一区二区三级高清视频| 91黑丝高跟在线| 久久久久久91香蕉国产| 国产suv精品一区二区| 久久久久一本一区二区青青蜜月| 亚洲小视频在线观看| 国产精品亚洲片夜色在线| 一区二区成人av| 欧美激情图片区| 亚洲成人xxx| 国产欧美精品一区二区三区-老狼| 国产精品日韩在线观看| 久热精品视频在线观看一区| 日韩免费在线免费观看| 国产精品va在线播放| 久久久91精品国产| 欧美在线视频免费播放| 日韩欧美一区二区三区久久| 精品免费在线观看| 亚洲va久久久噜噜噜久久天堂| 日韩av男人的天堂| 日韩欧美中文免费| 日韩成人在线网站| 成人激情视频在线观看| 亚洲在线观看视频网站| 久久精品视频在线播放| 欧美性生活大片免费观看网址| 欧美亚洲在线视频| 川上优av一区二区线观看| 亚洲桃花岛网站| 97婷婷大伊香蕉精品视频| 国产欧美日韩中文字幕在线| 富二代精品短视频| 成人福利在线视频| 欧美成人精品在线| 国产一区二区三区在线观看网站| 国产玖玖精品视频| 欧美日韩在线免费| 国产精品一久久香蕉国产线看观看| 亚洲乱码国产乱码精品精天堂| 久久在精品线影院精品国产| 欧美日韩爱爱视频| 日韩av最新在线观看| 久久精品亚洲热| 欧美色视频日本高清在线观看| 韩国一区二区电影| 日本在线观看天堂男亚洲| 亚洲国产精品推荐| 欧美综合国产精品久久丁香| 国产成人精品久久久| 91精品国产91久久| 国产午夜精品免费一区二区三区| 亚洲第一区第二区| 欧美日韩激情视频| 91av在线不卡| 久久夜色精品亚洲噜噜国产mv| 日韩视频在线观看免费| 琪琪亚洲精品午夜在线| 欧美日韩成人在线视频| 日韩成人在线网站| 中文字幕亚洲二区| 国产成人精品在线播放| 欧美成在线视频| 久久九九免费视频| 中文字幕一区二区三区电影| 亚洲精品福利视频| 久久精品99国产精品酒店日本| 91系列在线观看| 国产欧美一区二区| 欧美www视频在线观看| 高清一区二区三区日本久| 精品亚洲一区二区三区四区五区| 国模视频一区二区三区| 国产精品久久久久久五月尺| 久久精品中文字幕一区| 日韩小视频在线观看| 国产成人精品日本亚洲专区61| 久久精品国产久精国产一老狼| 亚洲一区二区三区sesese| 国产啪精品视频| 国产精品丝袜视频| 国产成人午夜视频网址| 亚洲欧美国产一本综合首页| 成人在线视频网站| 91国产美女在线观看| 国产一区香蕉久久| 日韩av在线精品| 国产成人+综合亚洲+天堂| 国产精品稀缺呦系列在线| 亚洲女人天堂色在线7777| 亚洲色图综合久久| 成人有码在线播放| 4k岛国日韩精品**专区| 欧美一级电影久久| 国产亚洲精品美女久久久| 92国产精品久久久久首页| 国产精品久久久久久久一区探花| 欧美精品福利视频|