国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 學院 > 開發設計 > 正文

jdbc一般步驟

2019-11-14 10:04:16
字體:
來源:轉載
供稿:網友

java 原生JDBC操作數據庫,是比較常見的面試題,所以一定要牢牢掌握住。

記住一般步驟,就好寫代碼了。

1、Class.forName()加載數據庫連接驅動。

2、DriverManager.getConnection()獲取數據連接對象。

3、根據SQL語句獲取會話對象,會話對象一般用PReparedStatement類型,conn.prepareStatement(),注意方法名和類名不一樣喲。

4、執行SQL處理結果集,執行SQL前如果有參數值就設置參數值setXXX()。

5、關閉結果集、關閉會話、關閉連接。

[java] view plain copy 在CODE上查看代碼片package com.lcx.test;    import java.sql.Connection;  import java.sql.DriverManager;  import java.sql.PreparedStatement;  import java.sql.ResultSet;  import java.sql.SQLException;  import java.sql.Savepoint;  import java.util.Properties;    public class Test {      public static void main(String[] args) {          String url1="jdbc:MySQL://localhost:3306/JAVA?user=root&passWord=root&useUnicode=true&charactorEncoding=UTF8";          String url2="jdbc:mysql://localhost:3306/JAVA?useUnicode=true&charactorEncoding=UTF8";          String url3="jdbc:mysql://localhost:3306/JAVA";          String user="root";          String password="root";          Connection conn3 = null;          Savepoint point1 = null;                    try {              //1、加載數據庫驅動,包名一般為域名反寫              Class.forName("com.mysql.jdbc.Driver");              Properties info = new Properties();              info.put("user", "root");              info.put("password", "root");              info.put("useUnicode","true");              info.put("charactorEncoding","utf8");              /*              * 2、獲取數據連接對象,DriverManager.getConnection方法有3個重載方法              */  //          Connection conn1 = DriverManager.getConnection(url3, user, password);//將連接的用戶名、密碼放到方法參數中  //          Connection conn2 = DriverManager.getConnection(url2,info);//將連接的屬性鍵值對放在Properties對象中              conn3 = DriverManager.getConnection(url1);//將所有連接信息都放在URL中              /*              * 3、根據SQL獲取sql會話對象,有2種方式 Statement、PreparedStatement              *      1、 PreparedStatement接口繼承Statement, PreparedStatement 實例包含已編譯的 SQL 語句,所以其執行速度要快于 Statement 對象。              *      2、作為 Statement 的子類,PreparedStatement 繼承了 Statement 的所有功能。三種方法  execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要參數              *      3、在JDBC應用中,如果你已經是稍有水平開發者,你就應該始終以PreparedStatement代替 Statement.也就是說,在任何時候都不要使用Statement.              *          一.代碼的可讀性和可維護性.Statement需要不斷地拼接,而PreparedStatement不會。              *          二.PreparedStatement盡最大可能提高性能.DB有緩存機制,相同的預編譯語句再次被調用不會再次需要編譯。              *          三.最重要的一點是極大地提高了安全性.Statement容易被SQL注入,而PreparedStatementc傳入的內容不會和sql語句發生任何匹配關系。              * 最常用的api              * addBatch()/addBatch(String sql) 預編譯SQL語句,只編譯一回哦,效率高啊。剝瓜子,一個一個剝,最后一口吃。              * setXXX(parameterIndex,value) 設置指定參數的值。              * execute()  執行 SQL 語句,該語句可以是任何種類的 SQL 語句。              * executeQuery() 執行查詢語句返回ResultSet              * executeUpdate() 執行增刪改,返回影響的行數。              *               */              String sql_other = "TRUNCATE TABLE t_user_info";              String sql_insert = "insert into t_user_info(id,user,sex,age) value(null,?,?,?)";              String sql_query = "select * from t_user_info where id < ?";              conn3.setAutoCommit(false);//關閉自動提交              PreparedStatement preparedStatement_other = conn3.prepareStatement(sql_other);              PreparedStatement preparedStatement_insert = conn3.prepareStatement(sql_insert);              PreparedStatement preparedStatement_query = conn3.prepareStatement(sql_query);              preparedStatement_other.execute();                                          for(int i=0;i<100;i++){                  preparedStatement_insert.setString(1, "user_"+i);                  preparedStatement_insert.setString(2, "n");                  preparedStatement_insert.setInt(3, i);                  if(i>50){  //                  preparedStatement_insert.setString(3, "我是錯誤的嘗試");                  }                  preparedStatement_insert.addBatch();              }              //一次性插入100條記錄,如果中間有出錯,那么這一次性的插入都不會成功              int[] updateInt = preparedStatement_insert.executeBatch();              conn3.commit();              point1 = conn3.setSavepoint("point1");              System.out.println(updateInt.length);                            preparedStatement_query.setInt(1, 50);              //4、執行SQL語句,查詢語句就獲取結果集              ResultSet result = preparedStatement_query.executeQuery();              while(result.next()){                  int a = result.getInt("id");                  int b = result.getInt(1);                  System.out.println("第一列值,通過列名:"+a+",通過下標:"+b);                                }              /*              * 5、關閉結果集、關閉會話、關閉連接              */              result.close();              preparedStatement_other.close();              preparedStatement_insert.close();              preparedStatement_query.close();              conn3.close();                        } catch (ClassNotFoundException e) {              System.out.println("驅動沒有加載到。。。");              e.printStackTrace();          } catch (SQLException e) {              System.out.println("出現sql異常。。。");              try {                  conn3.rollback(point1);;              } catch (SQLException e1) {                                    e1.printStackTrace();              }              e.printStackTrace();          }      }  }  JDBC%20進一步封裝

我們將獲取連接和釋放連接封裝到工具類中,執行SQL的感覺沒有必要封裝,這樣更靈活。

[java] view%20plain copy package com.lcx.test;    import java.sql.Connection;  import java.sql.DriverManager;  import java.sql.ResultSet;  import java.sql.SQLException;  import java.sql.Statement;    public class JDBCUtil {      /**      * jdbc:mysql://主機名稱:連接端口/數據庫的名稱?參數=值      * String url = "jdbc:mysql://localhost:3306/JAVA?user=root&password=root&useUnicode=true&characterEncoding=UTF8";      * 也可在獲取連接的時候使用用戶名和密碼      * 避免中文亂碼要指定useUnicode和characterEncoding, 執行數據庫操作之前要在數據庫管理系統上創建一個數據庫,名字自己定,      */      private static final String url="jdbc:mysql://localhost:3306/JAVA";      private static final String user="root";      private static final String password="root";      private static Connection conn;      //靜態代碼塊,類加載時就加載驅動      static {          //1、加載驅動          try {              Class.forName("com.mysql.jdbc.Driver");          } catch (ClassNotFoundException e) {              System.out.println("Exception: com.mysql.jdbc.driver not found Exception");              e.printStackTrace();          }      }      private JDBCUtil(){                }      //2獲取連接的方法,只產生一個連接      public static Connection getConnection(){          try {              if(conn==null){                  synchronized (JDBCUtil.class) {                      if(conn==null){                          conn = DriverManager.getConnection(url, user, password);                      }                  }              }          } catch (SQLException e) {              System.out.println("Exception: get mysql connection Exception");              e.printStackTrace();          }          return conn;      }      //最后釋放資源,中間操作由preparedStatement 去操作更靈活      public static void free(ResultSet result,Statement statement,Connection connection){          try {              if(result!=null){//關閉結果集                  result.close();              }          } catch (SQLException e) {              e.printStackTrace();          }finally{              try {                  if(statement!=null){//關閉statement會話                      statement.close();                  }              } catch (SQLException e) {                  e.printStackTrace();              }finally{                  try {                      if(connection!=null){                          connection.close();//關閉連接                      }                  } catch (SQLException e) {                      e.printStackTrace();                  }              }                        }                }  }  使用工具類操作數據處理

[java] view%20plain copy 派生到我的代碼片package com.lcx.test;    import java.sql.Connection;  import java.sql.PreparedStatement;  import java.sql.ResultSet;  import java.sql.SQLException;    public class JDBCTest {        public static void main(String[] args) {          //1、加載驅動、獲取連接          Connection connection = JDBCUtil.getConnection();          String sql_init ="TRUNCATE TABLE t_user_info";          String sql_insert = "insert into t_user_info(id,user,sex,age) value(null,?,?,?)";          String sql_query = "select * from t_user_info where id < ?";          PreparedStatement ps_init;          PreparedStatement ps_insert;          PreparedStatement ps_query;          try {              connection.setAutoCommit(false);              //2、根據sql語句獲取 獲取預編譯語句對象              ps_init = connection.prepareStatement(sql_init);              ps_insert = connection.prepareStatement(sql_insert);              ps_query = connection.prepareStatement(sql_query);                            ps_init.execute();//可以執行任何種類的SQL語句              //3、有參數值,就設置參數值,然后執行預編譯語句,獲取結果集              for(int i=0;i<100;i++){                  ps_insert.setString(1, "user_"+i);                  ps_insert.setString(2, "n");                  ps_insert.setInt(3, i);                  ps_insert.addBatch();//增加的批處理隊列中              }              ps_insert.executeBatch();//一次性執行                            ps_query.setInt(1, 50);              //查詢記錄,獲取結果集              ResultSet result = ps_query.executeQuery();              while(result.next()){                  int a = result.getInt("id");                  int b = result.getInt(1);                  System.out.println("第一列通過列明:"+a+",第一列通過index:"+b);              }              connection.commit();              //5、釋放資源              JDBCUtil.free(result, ps_query, connection);              JDBCUtil.free(result, ps_init, connection);              JDBCUtil.free(result, ps_insert, connection);          } catch (SQLException e) {              try {                  connection.rollback();              } catch (SQLException e1) {                  e1.printStackTrace();              }              e.printStackTrace();          }                }    }  
上一篇:C語言蛇形矩陣例題

下一篇:JS多重繼承

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产极品一区二区三区| 国产精品被窝福利一区| 思思99精品视频在线观看| 2019中文字幕在线视频| 精品国产免费观看一区| 992tv在线观看在线播放| 精品电影在线| 精灵使的剑舞无删减版在线观看| 国产对白在线| 在线免费观看黄色片| 亚洲精品白浆| 国产九色在线| 精品一区二区观看| 免费看ww视频网站入口| 中文字幕在线免费观看| 在线观看免费观看在线91| 国产黄色免费网站| 黄色三级视频在线观看| 国产福利免费在线观看| 欧美日韩在线视频免费观看| √天堂中文在线| 亚洲综合在线不卡| 国产午夜电影| 四虎www视频| 中文在线观看视频| 五月综合网站| 久久久久久久久亚洲精品| 精品久久亚洲一级α| 中文字幕亚洲精品视频| 国产麻豆综合视频在线观看| 亚洲va国产日韩欧美精品色婷婷| 天堂亚洲精品| 欧美卡一卡二| 青青草视频在线观看| 在线免费观看黄色片| 国产黄色片在线观看| 国产乱视频在线观看播放| 久久精品免视着国产成人| 免费不卡中文字幕视频| 日p在线观看| 爱福利在线视频| 日本成人a视频| 男人操女人免费网站| 午夜影院免费| 一本久久精品| а√最新版在线天堂| 精品推荐蜜桃传媒| 精品一二三区视频| 夜色资源网av在先锋网站观看| 国产精品18久久久久久久久久| 国产一卡2卡3卡4卡网站免费| 蜜桃视频网站在线| 国产69精品久久app免费版| 国产69久久| 国产精品bbw一区二区三区| 国产三级在线| 在线免费观看污| 免费看av大片| 国产丝袜自拍| av一级在线| 国产在线麻豆精品| 国产在线高潮| 国产精品18久久久久网站| 在线视频福利| 狠狠干五月天| 国产盗摄一区二区| wwww在线观看免费视频| 二区中文字幕| 羞羞视频在线免费看| 国产秒拍福利视频露脸| 国产夫妻视频| 黄色国产网站在线观看| 91免费日韩| 国产理论电影在线| 香蕉视频在线观看www| 五月婷婷视频在线观看| 精品a在线观看| 五月亚洲综合| 激情视频国产| 四虎中文字幕| 最近中文字幕大全中文字幕免费| 在线国产1区| 精品国语对白精品自拍视| 国产精品臀控福利在线观看| 在线观看av网站永久| 国产一区二区三区福利| 久热免费视频| 日本aⅴ写真网站免费| 精精国产xxxx视频在线中文版| 午夜视频在线观看网站午夜视频在线 | 免费不卡中文字幕视频| 国产黄大片在线观看画质优化| a视频在线观看免费| 91国内精品久久久久| 国产午夜视频| 国产丝袜在线观看视频| 中文字幕人成高视频| 国产尤物视频在线| 超碰在线免费播放| 黄色片免费在线| 久草视频国产| 黄色片视频在线观看| 久久国产精品久久久久久小说| 欧美日韩综合高清一区二区| www.成人.com| 激情丁香在线| 国产免费永久在线观看| 国产理论在线观看| **三级三级97片毛片| 午夜av在线免费观看| 中文字幕在线影视资源| 国产一二三区精品视频| 国产系列电影在线播放网址| 国产精品欧美韩国日本久久| 国产成人午夜| jlzzjlzz欧美| 久久99精品久久久久久野外| 国产有码在线| 国产夫妻视频| 日本在线视频www鲁啊鲁| 久热国产在线| 国产精品麻豆一区二区三区| 精品全国在线一区二区| www.91在线播放| 国产色婷婷在线| av在线天天| 国产精品视频一区二区久久 | 在线中文字幕av| a视频在线观看免费| 大香伊人中文字幕精品| 国产精品视频一区二区久久 | 四虎国产精品永久| 高清欧美精品xxxxx在线看| 国产视频2区| 青青草免费在线观看| 国产精品伦一区二区三区级视频频| 国产精彩视频在线观看免费蜜芽| 天天插天天色| 国产精品18久久久久久久久久 | 亚洲字幕成人中文在线观看| 久久综合精品视频| 一区二区三区免费视频网站| 国产九色porn网址| 亚洲精品aaaa| 国产精品国产三级国产试看| 青青青手机在线视频观看| 国产激情在线| 国产女人在线视频| 麻豆国产在线视频| av网站在线播放| 国产精品冒白浆免费视频| 天堂在线免费观看| 麻豆精品传媒视频观看| 四虎国产精品永久在线| 亚洲第一成年免费网站| 在线观看免费高清完整| 中文av字幕| 伊人国产在线看一| 99reav在线| av中文在线| 牛牛热在线视频| 女人色在线免费视频| wwww亚洲| 国产中文字幕第一页| 国产在线日本| 黄网在线免费| 天堂在线一二区| 国产精品伦一区二区三区视频| 国产区av在线| av在线free| 国产综合视频一区二区三区免费| 国产中文字幕网| 中文字幕第一页av| 国产黄色高清在线| 亚洲人在线播放| 开心丁香婷婷深爱五月| 狠狠操视频网| 国产视频二区三区| 一本大道久久精品| 久热免费视频| 国产美女在线一区二区三区| 国产精品一区二区三区高清在线| 国产美女av在线| 精品免费视频一卡2卡三卡4卡不卡| 五月婷婷在线视频| 精品美女视频在线观看免费软件| 中文字幕av高清| 麻豆福利在线观看| 国产日本在线观看| 日本一二区视频| 国产私人影院| 六月天色婷婷| 中文资源在线官网| 综合图区亚洲白拍在线| 精品国产一区二区三区不卡在线| 亚洲大香人伊一本线| 国产一二三区在线| 免费在线观看a| 精品美女在线观看视频在线观看 | 午夜视频在线观看网站午夜视频在线|