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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

jdbc一般步驟

2019-11-14 10:04:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

java 原生JDBC操作數(shù)據(jù)庫(kù),是比較常見(jiàn)的面試題,所以一定要牢牢掌握住。

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

1、Class.forName()加載數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)。

2、DriverManager.getConnection()獲取數(shù)據(jù)連接對(duì)象。

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

4、執(zhí)行SQL處理結(jié)果集,執(zhí)行SQL前如果有參數(shù)值就設(shè)置參數(shù)值setXXX()。

5、關(guān)閉結(jié)果集、關(guān)閉會(huì)話、關(guān)閉連接。

[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、加載數(shù)據(jù)庫(kù)驅(qū)動(dòng),包名一般為域名反寫              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、獲取數(shù)據(jù)連接對(duì)象,DriverManager.getConnection方法有3個(gè)重載方法              */  //          Connection conn1 = DriverManager.getConnection(url3, user, password);//將連接的用戶名、密碼放到方法參數(shù)中  //          Connection conn2 = DriverManager.getConnection(url2,info);//將連接的屬性鍵值對(duì)放在Properties對(duì)象中              conn3 = DriverManager.getConnection(url1);//將所有連接信息都放在URL中              /*              * 3、根據(jù)SQL獲取sql會(huì)話對(duì)象,有2種方式 Statement、PreparedStatement              *      1、 PreparedStatement接口繼承Statement, PreparedStatement 實(shí)例包含已編譯的 SQL 語(yǔ)句,所以其執(zhí)行速度要快于 Statement 對(duì)象。              *      2、作為 Statement 的子類,PreparedStatement 繼承了 Statement 的所有功能。三種方法  execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要參數(shù)              *      3、在JDBC應(yīng)用中,如果你已經(jīng)是稍有水平開(kāi)發(fā)者,你就應(yīng)該始終以PreparedStatement代替 Statement.也就是說(shuō),在任何時(shí)候都不要使用Statement.              *          一.代碼的可讀性和可維護(hù)性.Statement需要不斷地拼接,而PreparedStatement不會(huì)。              *          二.PreparedStatement盡最大可能提高性能.DB有緩存機(jī)制,相同的預(yù)編譯語(yǔ)句再次被調(diào)用不會(huì)再次需要編譯。              *          三.最重要的一點(diǎn)是極大地提高了安全性.Statement容易被SQL注入,而PreparedStatementc傳入的內(nèi)容不會(huì)和sql語(yǔ)句發(fā)生任何匹配關(guān)系。              * 最常用的api              * addBatch()/addBatch(String sql) 預(yù)編譯SQL語(yǔ)句,只編譯一回哦,效率高啊。剝瓜子,一個(gè)一個(gè)剝,最后一口吃。              * setXXX(parameterIndex,value) 設(shè)置指定參數(shù)的值。              * execute()  執(zhí)行 SQL 語(yǔ)句,該語(yǔ)句可以是任何種類的 SQL 語(yǔ)句。              * executeQuery() 執(zhí)行查詢語(yǔ)句返回ResultSet              * executeUpdate() 執(zhí)行增刪改,返回影響的行數(shù)。              *               */              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);//關(guān)閉自動(dòng)提交              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, "我是錯(cuò)誤的嘗試");                  }                  preparedStatement_insert.addBatch();              }              //一次性插入100條記錄,如果中間有出錯(cuò),那么這一次性的插入都不會(huì)成功              int[] updateInt = preparedStatement_insert.executeBatch();              conn3.commit();              point1 = conn3.setSavepoint("point1");              System.out.println(updateInt.length);                            preparedStatement_query.setInt(1, 50);              //4、執(zhí)行SQL語(yǔ)句,查詢語(yǔ)句就獲取結(jié)果集              ResultSet result = preparedStatement_query.executeQuery();              while(result.next()){                  int a = result.getInt("id");                  int b = result.getInt(1);                  System.out.println("第一列值,通過(guò)列名:"+a+",通過(guò)下標(biāo):"+b);                                }              /*              * 5、關(guān)閉結(jié)果集、關(guān)閉會(huì)話、關(guān)閉連接              */              result.close();              preparedStatement_other.close();              preparedStatement_insert.close();              preparedStatement_query.close();              conn3.close();                        } catch (ClassNotFoundException e) {              System.out.println("驅(qū)動(dòng)沒(méi)有加載到。。。");              e.printStackTrace();          } catch (SQLException e) {              System.out.println("出現(xiàn)sql異常。。。");              try {                  conn3.rollback(point1);;              } catch (SQLException e1) {                                    e1.printStackTrace();              }              e.printStackTrace();          }      }  }  JDBC%20進(jìn)一步封裝

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

[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://主機(jī)名稱:連接端口/數(shù)據(jù)庫(kù)的名稱?參數(shù)=值      * String url = "jdbc:mysql://localhost:3306/JAVA?user=root&password=root&useUnicode=true&characterEncoding=UTF8";      * 也可在獲取連接的時(shí)候使用用戶名和密碼      * 避免中文亂碼要指定useUnicode和characterEncoding, 執(zhí)行數(shù)據(jù)庫(kù)操作之前要在數(shù)據(jù)庫(kù)管理系統(tǒng)上創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),名字自己定,      */      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;      //靜態(tài)代碼塊,類加載時(shí)就加載驅(qū)動(dòng)      static {          //1、加載驅(qū)動(dòng)          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獲取連接的方法,只產(chǎn)生一個(gè)連接      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){//關(guān)閉結(jié)果集                  result.close();              }          } catch (SQLException e) {              e.printStackTrace();          }finally{              try {                  if(statement!=null){//關(guān)閉statement會(huì)話                      statement.close();                  }              } catch (SQLException e) {                  e.printStackTrace();              }finally{                  try {                      if(connection!=null){                          connection.close();//關(guān)閉連接                      }                  } catch (SQLException e) {                      e.printStackTrace();                  }              }                        }                }  }  使用工具類操作數(shù)據(jù)處理

[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、加載驅(qū)動(dòng)、獲取連接          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、根據(jù)sql語(yǔ)句獲取 獲取預(yù)編譯語(yǔ)句對(duì)象              ps_init = connection.prepareStatement(sql_init);              ps_insert = connection.prepareStatement(sql_insert);              ps_query = connection.prepareStatement(sql_query);                            ps_init.execute();//可以執(zhí)行任何種類的SQL語(yǔ)句              //3、有參數(shù)值,就設(shè)置參數(shù)值,然后執(zhí)行預(yù)編譯語(yǔ)句,獲取結(jié)果集              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();//增加的批處理隊(duì)列中              }              ps_insert.executeBatch();//一次性執(zhí)行                            ps_query.setInt(1, 50);              //查詢記錄,獲取結(jié)果集              ResultSet result = ps_query.executeQuery();              while(result.next()){                  int a = result.getInt("id");                  int b = result.getInt(1);                  System.out.println("第一列通過(guò)列明:"+a+",第一列通過(guò)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();          }                }    }  
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
在线不卡a资源高清| 18视频在线观看| 久久成人免费网站| 在线播放日韩专区| 综合视频在线观看| 欧美性aaa| 欧美酷刑日本凌虐凌虐| 久久精品国产亚洲高清剧情介绍| 国产精品青草久久久久福利99| 国产成人高清在线| 伊人电影在线观看| 欧洲乱码伦视频免费| 综合婷婷亚洲小说| 91av免费观看91av精品在线| 免费观影入口看日本视频| 国产日韩一区二区| 永久免费成人代码| 欧美成人国产va精品日本一级| 99re在线| 欧美日韩一区二区三区免费看| 西西人体44www大胆无码| 91精品免费在线| 国产一级影视| 9797在线看片亚洲精品| 日日欢夜夜爽一区| av在线免费网址| 精品一区二区免费| 欧美熟乱第一页| 一级特黄毛片| 免费在线观看黄色| 亚洲日本va午夜在线电影| 日本中文在线一区| 在线观看免费视频a| 97干com| 国产v片免费观看| 一级特黄曰皮片视频| 久久综合另类图片小说| 在线精品一区二区三区| 在线观看欧美黄色| 在线免费毛片| 91免费在线视频| 夫妻av一区二区| 成人精品一区二区不卡视频| 日韩精品欧美成人高清一区二区| 91视频这里只有精品| 91福利视频网| 国产亚洲精品精品国产亚洲综合| 菠萝蜜视频在线观看一区| 久久综合成人网| 五月花丁香婷婷| 韩国av免费在线| 国产主播福利在线| 偷偷要色偷偷| 精品人妻一区二区三区免费看| 国产精品91久久久| 538视频在线| 强制高潮抽搐sm调教高h| 日韩欧美一二三区| 国产亚洲福利| 在线看片福利| 欧美一区二粉嫩精品国产一线天| 91亚洲国产成人精品一区| 一个色妞综合视频在线观看| 亚洲国产欧美一区二区三区同亚洲| 日韩国产激情在线| 国产毛片精品视频| 91豆花精品一区| av网站网址在线观看| 亚洲va欧美va人人爽| 久久久精品免费网站| 丁香网亚洲国际| 国产午夜无码视频在线观看| 国产99久久久国产精品成人免费| 国产美女av一区二区三区| 国产99久久久精品| 日本不卡一区二区三区四区| 国产又大又黑又粗| 国产日韩欧美一区二区| 久久中文久久字幕| 日韩精品中文字幕一区二区| 国产欧美日韩综合精品| 亚洲欧美在线综合| 亚洲欧美日韩久久| 超碰91在线观看| 日本一区二区三区在线观看| 欧美日韩欧美一区二区| 在线中文字日产幕| 久久精品亚洲麻豆av一区二区| 欧美巨大黑人极品精男| 中文字幕人妻丝袜乱一区三区| 综合欧美亚洲| 久久精品国产av一区二区三区| 美女的诞生在线观看高清免费完整版中文| 99国产精品久久一区二区三区| 国产高清一级片| 久久99欧美| 欧美日韩亚洲国产| 国产精品久久久爽爽爽麻豆色哟哟| 久久av一区二区三| 国产无一区二区| 欧美激情久久久久| 色琪琪一区二区三区亚洲区| 2021天堂中文幕一二区在线观| 亚洲国产综合91精品麻豆| 国产777精品精品热热热一区二区| 撸视在线观看免费视频| 成人在线网站| 欧美一区二区三区四区五区六区| 亚洲一区中文字幕永久在线| 亚洲国产精品狼友在线观看| 萌白酱视频在线| 亚洲日本护士毛茸茸| 久久er精品视频| 天堂综合网久久| 大杳蕉精品视频在线观看| 草莓污污视频在线观看| 中文字幕伦av一区二区邻居| 在线视频在线视频7m国产| 国产成人夜色高潮福利影视| 在线观看欧美| 欧一区二区三区| 欧美在线国产精品| 久久午夜影视| 97秋霞电影网| 免费久久99精品国产| 色喇叭免费久久综合网| 免费观看成人在线| 日本成人动漫在线观看| 国内精品国产成人国产三级| 91成人免费在线视频| 久久在线视频免费观看| 好吊的妞视频这里都有| 日韩欧美在线免费观看| 亚洲国产精品久久久久久久| 激情国产在线| 亚洲国产日韩综合一区| 九九热视频在线免费观看| 国产精品自产拍在线观看2019| 欧美性大战久久久久久久| 中文字幕久久一区| 成人黄色a**站在线观看| 日韩一区二区不卡| gogogo高清免费观看在线视频| 日韩成人一区| 亚洲第一av在线| 国产女18毛片多18精品| 色青青草原桃花久久综合| 欧美三电影在线| 一级特黄毛片| 久久婷婷一区| 国产精品91在线| 潘金莲一级淫片aaaaaa播放1| 国产91久久久久蜜臀青青天草二| 成年人视频免费在线观看| 中文幕一区二区三区久久蜜桃| 成 人片 黄 色 大 片| 亚洲熟女www一区二区三区| 国产av人人夜夜澡人人爽麻豆| 92国产在线视频| 综合国产在线观看| 亚洲一区二区动漫| 日本伊人精品一区二区三区介绍| 五月天婷婷在线视频| h片在线观看免费| 午夜久久美女| 久热中文字幕在线精品免费| av资源中文在线天堂| 999精品视频在线观看播放| 亚洲精品男人天堂| 亚洲不卡av一区二区三区| 97公开免费视频| 久久99国产精品一区| 一本色道久久综合狠狠躁篇怎么玩| 亚洲综合色区另类av| 午夜精品久久一牛影视| 欧美少妇一区二区| 粉嫩高潮美女一区二区三区| 最近更新的2019中文字幕| 91色综合久久久久婷婷| 久久精品国产精品青草色艺| 在线看的片片片免费| 亚洲精品在线观看视频| 欧美自拍偷拍一区二区| 男人天堂av电影| 中文字幕中文乱码欧美一区二区| 亚洲精品成人久久久| 在线精品国产| 中文字幕一区二区三区最新| 久久精品噜噜噜成人av农村| 男女视频免费看| 欧美大片免费看| 老汉av免费一区二区三区| 欧美午夜一区二区三区| 欧美亚洲丝袜传媒另类| 欧美人与动xxxxz0oz| 伊人久久影院| 素人av在线| 亚洲综合社区网| 午夜精品福利一区二区| 免费在线看黄网站| 精品国产青草久久久久96| 91久久在线视频| 中文字幕日韩一区| 人人人妻人人澡人人爽欧美一区| 午夜精品久久久久久久久久久久| 韩国美女主播一区| 日韩精品久久久久久| 巨大黑人极品videos精品| 亚洲一区二区三区四区五区黄| 成人福利网站在线观看| 成人av二区| 99re6热在线精品视频播放| 国产精品一区二区免费| 欧美成人精品在线观看| 亚洲bt欧美bt精品777| 最新日韩精品| 久久精品国产亚洲av麻豆蜜芽| 老司机av在线免费看| 91成人精品一区二区| 经典三级在线视频| 欧美—级a级欧美特级ar全黄| 污污的网站在线免费观看| 欧美在线免费一级片| 纪美影视在线观看电视版使用方法| 国内精品模特av私拍在线观看| 中文字幕理伦片免费看| 污视频网站在线| 欧美精品 国产精品| 午夜精品福利影院| 国产精品综合在线| 亚洲第一导航| 黄一区二区三区| 亚洲国产精品日韩| 另类欧美小说| 性欧美精品xxxx| 中文字幕一区日韩电影| 亚洲成人一品| 国产女人精品视频| 亚洲一级免费在线观看| 日韩国产欧美在线视频| 亚洲动漫在线观看| 综合激情婷婷| 久久久久九九视频| 成人在线视频免费看| 亚洲国产一区二区久久| 欧美在线精品免播放器视频| 在线一区亚洲| 中文字幕不卡一区| 久久av网站| 免费极品av一视觉盛宴| 亚洲天堂1区| 六月丁香激情综合| 涩涩视频免费看| 欧美电影一区二区三区| 精品久久国产字幕高潮| 欧美黑白配在线| 99国产视频| 麻豆tv在线| 九色精品免费永久在线| 欧美在线一级视频| 日韩欧美aⅴ综合网站发布| 国产午夜精品在线观看| 欧美性感美女h网站在线观看免费| 欧美极品美女视频| 国产精品久久久久久免费| 99久久er热在这里只有精品66| 国产欧美一区二区三区在线看蜜臀| 九九热精品国产| 久久精品视频一区| 精品人妻二区中文字幕| 亚洲码在线观看| 日韩亚洲色图| 日韩不卡av在线| 一区二区三区在线视频111| 欧美日韩免费观看一区| 一级黄色片在线播放| 亚洲free性xxxx护士白浆| 亚洲黄色a v| 日韩大尺度黄色| 国产精品网站在线播放| 国产亚洲欧美一区二区三区| 色综合天天色综合| 日韩一级免费在线观看| 国产v综合v亚洲欧美久久| www.4438全国最大| 男女男精品视频| 战狼4完整免费观看在线播放版| 97av免费视频| 色在人av网站天堂精品| 亚洲欧洲日韩女同| 亚洲精品成人久久久| 国产麻豆一精品一av一免费| 日本成人看片网址| 欧美日韩在线精品一区二区三区| 91亚洲大成网污www| 可以看污的网站| 日本高清视频在线观看| 激情久久婷婷| 自拍视频在线播放| 亚洲激情欧美色图| 手机看片1024国产| 激情视频小说图片| 久久久久久免费观看| xxxx性欧美黑人| 男人打飞机网站| 亚洲国产aⅴ成人精品无吗| 国产毛片精品一区| 久久综合九色综合久99| 日本少妇激情视频| 国内精品卡一卡二卡三新区| 夜夜操天天干| 99精品免费| 欧美日韩人妻精品一区在线| 天堂视频在线免费观看| 一区二区在线观看免费视频播放| 久久伊人成人网| 日韩av大全| 欧亚洲嫩模精品一区三区| 亚洲精品毛片一区二区三区| 亚洲成人套图| 欧美成a人片免费观看久久五月天| 欧美福利视频一区二区| 图片区小说区国产精品视频| 欧美午夜片欧美片在线观看| 欧美日韩一区二区三区不卡视频| 在线视频不卡一区二区| 夜夜爽99久久国产综合精品女不卡| 欧美日韩国产另类一区|