欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何在Java中利用JDBC連接數(shù)據(jù)庫

這期內(nèi)容當中小編將會給大家?guī)碛嘘P如何在Java中利用JDBC連接數(shù)據(jù)庫,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)是一家專業(yè)提供景泰企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站設計、成都網(wǎng)站制作、H5場景定制、小程序制作等業(yè)務。10年已為景泰眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。

db.properties配置文件(MySQL數(shù)據(jù)庫)

# db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
# paramter for BasicDataSource
initSize=2
maxActive=2

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

# db.properties
jdbc.driver=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:localhost:1521:orcl
jdbc.username=root
jdbc.password=123456
# paramter for BasicDataSource
initSize=2
maxActive=2

JDBC直接連接數(shù)據(jù)庫

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連接數(shù)據(jù)庫管理工具類
 */
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);  //將文件內(nèi)容加載到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);
    }
  }
  /**
   * 創(chuàng)建數(shù)據(jù)庫連接
   */
  public static Connection getConnection() {
    try {
      Class.forName(driver); //注冊驅(qū)動
      Connection conn = DriverManager.getConnection(url, username, password);
      return conn;
    } catch (Exception e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    }
  }
  /*
   * 關閉數(shù)據(jù)庫的連接
   */
  public static void close(Connection conn) {
    if (conn != null) {
      try {
        conn.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

通過連接池連接數(shù)據(jù)庫

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;
/**
 * 連接池版本的數(shù)據(jù)庫連接管理工具類
 */
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);
      // 初始化參數(shù)
      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);
    }
  }
  /**
   * 創(chuàng)建數(shù)據(jù)庫連接,從連接池中獲取連接,如果連接池滿了,則等待.
   */
  public static Connection getConnection() {
    try {
      Connection conn = dbs.getConnection();
      return conn;
    } catch (SQLException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    }
  }
  /*
   * 關閉數(shù)據(jù)庫的連接,歸還到連接池
   */
  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();
      }
    }
  }
}

連接數(shù)據(jù)庫后的使用

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);
  }
  //結果集元數(shù)據(jù)
  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執(zhí)行 及 取消自動提交

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

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

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

PreparedStatement也支持批量參數(shù)的處理

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

PreparedStatement ps = conn.prepareStatement(sql);

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

如何在Java中利用JDBC連接數(shù)據(jù)庫

上述就是小編為大家分享的如何在Java中利用JDBC連接數(shù)據(jù)庫了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享標題:如何在Java中利用JDBC連接數(shù)據(jù)庫
URL鏈接:http://chinadenli.net/article20/joehjo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、用戶體驗、外貿(mào)建站、小程序開發(fā)、做網(wǎng)站、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
亚洲中文在线观看小视频| 好吊日在线观看免费视频| 九九热精彩视频在线免费| 日韩中文字幕有码午夜美女| 国产在线视频好看不卡| 福利视频一区二区三区| 国产精品欧美激情在线播放| 免费观看一级欧美大片| 精品欧美一区二区三久久| 久久精品亚洲欧美日韩| 国产精品国产亚洲区久久| 亚洲人妻av中文字幕| 高潮少妇高潮久久精品99| 极品熟女一区二区三区| 久久久精品日韩欧美丰满| 国产欧美一区二区三区精品视| 国产级别精品一区二区视频| 这里只有九九热精品视频| 人妻内射在线二区一区| 欧美国产日本高清在线| 久久99青青精品免费| 欧美精品亚洲精品一区| 午夜精品在线观看视频午夜| 国产肥女老熟女激情视频一区| 成人午夜在线视频观看| 欧洲日本亚洲一区二区| 欧美一区二区日韩一区二区| 亚洲国产成人爱av在线播放下载| 好吊视频一区二区在线| 熟女一区二区三区国产| 欧美高潮喷吹一区二区| 91日韩欧美中文字幕| 久一视频这里只有精品| 成年人黄片大全在线观看| 亚洲视频一级二级三级| 日韩精品一级一区二区| 国产精品成人又粗又长又爽| 国产精品亚洲精品亚洲| 日本少妇三级三级三级| 色偷偷偷拍视频在线观看| 国产亚洲欧美另类久久久|