把困難踩在腳下

          迎難而上

           

          JDBC小程序

          JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。

          JDBC訪問數(shù)據(jù)庫的步驟:

          1.加載數(shù)據(jù)庫驅(qū)動(dòng)

          2.獲得數(shù)據(jù)庫連接

          3.創(chuàng)建SQL語句

          4.執(zhí)行查詢

          5.遍歷結(jié)果集

          6.關(guān)閉數(shù)據(jù)庫連接

          下面看一個(gè)小程序:

           

          package com.jspring.jdbc; 

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.ResultSet;
          import java.sql.SQLException;
          import java.sql.Statement; 

          public class Demo1 {
              
          public static void main(String args[])
              
          {
                  query();
              }

              
          public static void query()
              
          {
                  Connection conn
          =null;
                  
          //1.加載數(shù)據(jù)庫驅(qū)動(dòng)
                  try {
                      Class.forName(
          "com.mysql.jdbc.Driver");
                      
          //DriverManager 驅(qū)動(dòng)程序管理器 在數(shù)據(jù)庫和相應(yīng)驅(qū)動(dòng)程序之間建立連接
                      
          //2.獲得數(shù)據(jù)庫連接
                      conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/jdbc_db","root","1234");
                      
          //3.創(chuàng)建語句
                      String sql="select * from UserTbl";
                      
          //返回一個(gè)執(zhí)行SQL的語句
                      Statement stmt = null;
                      stmt 
          = conn.createStatement();
                      
          //返回查詢的
                      
          //4.執(zhí)行語句
                      ResultSet rs = null;
                      rs 
          = stmt.executeQuery(sql);
                      
          //5.遍歷結(jié)果集
                          while(rs.next())
                          
          {
                              
          int id=rs.getInt(1);
                              String username
          =rs.getString(2);
                              String password
          =rs.getString(3);
                              
          int age=rs.getInt(4);
                              System.out.println(id
          +":"+username+":"+password+":"+age);
                          }

                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }
          finally{
                      
          if(conn!=null){
                          
          try{//5.關(guān)閉數(shù)據(jù)庫連接
                              conn.close();
                          }
          catch(SQLException e){
                              conn
          =null;
                              e.printStackTrace();
                          }

                      }

                  }

              }
           

          }
           

          1.此程序首先要在這個(gè)程序所在的工程中插入連接數(shù)據(jù)庫的jar包(然后右擊選擇build path-----add  to build path),然后才能執(zhí)行程序否則會出現(xiàn)以下錯(cuò)誤提示:

          1

          這個(gè)程序通過執(zhí)行

          Class.forName("com.mysql.jdbc.Driver");
          這個(gè)語句實(shí)現(xiàn)加載驅(qū)動(dòng),因?yàn)槲矣玫氖荕YSQL的數(shù)據(jù)庫,所以加載的mysql的驅(qū)動(dòng),如果你用的是其他數(shù)據(jù)庫,那就要加載其他數(shù)據(jù)庫的jar包。

          2.和數(shù)據(jù)庫建立連接通過

          conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/jdbc_db","root","1234");
          語句,getConnection函數(shù)中三個(gè)參數(shù)分別是url,user,password

          3.創(chuàng)建語句,在這個(gè)程序中只建立了一個(gè)查詢語句,我們可以根據(jù)自己的業(yè)務(wù)需求建立其他的語句,例如插入,更新等語句

          4.Statement是靜態(tài)的SQL語句,用來盛放SQL語句,他有一個(gè)子類為PreparedStatement為預(yù)編譯靜態(tài)語句

          5.ResultSet 是用來盛放查詢結(jié)果的一個(gè)集合

          程序運(yùn)行結(jié)果:

          如果usertbl表中有數(shù)據(jù)就會打印在控制臺上如

          1

          如果usertbl表中沒有數(shù)據(jù)那么控制臺上就沒有任何數(shù)據(jù)

          如果數(shù)據(jù)庫中沒有這個(gè)表則會出現(xiàn)

          1

          在使用JDBC時(shí)一定要加載數(shù)據(jù)庫驅(qū)動(dòng)!

          一般情況下,我們會采用下面這種方法和數(shù)據(jù)庫進(jìn)行連接

          將數(shù)據(jù)庫的驅(qū)動(dòng)連接和url,user,password都寫到配置文件中,通過從配置文件中讀數(shù)據(jù)來建立連接,看下面程序

           

          public class ConnectionUtil {
              
          public Connection openConnection(){
                  String driver 
          = "";
                  String url 
          = "";
                  String user 
          = "";
                  String password 
          = "";
                  Properties prop 
          = new Properties();
                  Connection conn 
          = null;
                  
          try {
                      
          //加載屬性文件
                      prop.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties"));
                      driver 
          = prop.getProperty("driver");
                      url 
          = prop.getProperty("url");
                      user 
          = prop.getProperty("user");
                      password 
          = prop.getProperty("password");
                      
          //Class.forName加載驅(qū)動(dòng)
                      Class.forName(driver);
                      
          //DriverManager獲得連接
                      conn = DriverManager.getConnection(url,user,password);
                      
          return conn;
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

                  
          return null;
              }

          }
           

           

           

          在和數(shù)據(jù)庫進(jìn)行連接時(shí),我們只需要調(diào)用這個(gè)類就可以了

          在第一個(gè)程序中我們提到了一個(gè)PreparedStatement類,現(xiàn)在我們看一下關(guān)于這個(gè)類的使用情況

           

          public class Main 

               
          public static void main(String[] args) {
                  Customer c 
          = new Customer();
                  c.setName(
          "hans");
                  c.setEmail(
          "583480612@qq.com");
                  TestPrepareStatement.add(c);
                   }

              
          public static void add(Customer c) {
                  Connection conn 
          = new ConnectionUtil().openConnection();
                  String sql 
          = "insert into CustomerTbl(name,email) values(?,?)";
                  
          try {
                      PreparedStatement pstmt 
          = conn.prepareStatement(sql);
                      pstmt.setString(
          1, c.getName());
                      pstmt.setString(
          2, c.getEmail());
                      pstmt.executeUpdate();
                  }
           catch (SQLException e) {
                      e.printStackTrace();
                  }

              }
           

          }
           

          PreparedStatement為預(yù)編譯靜態(tài)SQL語句,就是在sql語句中留下一個(gè)缺口,由調(diào)用這個(gè)函數(shù)的的成員來補(bǔ)全。

          posted on 2010-12-07 13:25 馮魁 閱讀(774) 評論(1)  編輯  收藏

          評論

          # re: JDBC小程序 2010-12-14 17:13 洛神賦

          好具體哦!!!!拜讀!!!!  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學(xué)習(xí)網(wǎng)站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 靖边县| 泸州市| 荆门市| 日照市| 英山县| 乌鲁木齐市| 民乐县| 嘉义市| 尚义县| 专栏| 平遥县| SHOW| 凌源市| 江都市| 鸡西市| 东安县| 博兴县| 余姚市| 武安市| 四川省| 双峰县| 汝城县| 开鲁县| 景泰县| 色达县| 通州市| 三河市| 长宁县| 慈溪市| 浦县| 霞浦县| 读书| 绥芬河市| 连州市| 镇康县| 延安市| 天津市| 临安市| 双城市| 牡丹江市| 湖口县|