<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    把困難踩在腳下

    迎難而上

     

    JDBC小程序

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

    JDBC訪問(wèn)數(shù)據(jù)庫(kù)的步驟:

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

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

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

    4.執(zhí)行查詢

    5.遍歷結(jié)果集

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

    下面看一個(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ù)庫(kù)驅(qū)動(dòng)
            try {
                Class.forName(
    "com.mysql.jdbc.Driver");
                
    //DriverManager 驅(qū)動(dòng)程序管理器 在數(shù)據(jù)庫(kù)和相應(yīng)驅(qū)動(dòng)程序之間建立連接
                
    //2.獲得數(shù)據(jù)庫(kù)連接
                conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/jdbc_db","root","1234");
                
    //3.創(chuàng)建語(yǔ)句
                String sql="select * from UserTbl";
                
    //返回一個(gè)執(zhí)行SQL的語(yǔ)句
                Statement stmt = null;
                stmt 
    = conn.createStatement();
                
    //返回查詢的
                
    //4.執(zhí)行語(yǔ)句
                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ù)庫(kù)連接
                        conn.close();
                    }
    catch(SQLException e){
                        conn
    =null;
                        e.printStackTrace();
                    }

                }

            }

        }
     

    }
     

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

    1

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

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

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

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

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

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

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

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

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

    1

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

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

    1

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

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

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

     

    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ù)庫(kù)進(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語(yǔ)句,就是在sql語(yǔ)句中留下一個(gè)缺口,由調(diào)用這個(gè)函數(shù)的的成員來(lái)補(bǔ)全。

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

    評(píng)論

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

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


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


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

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    快樂(lè)每一天!

    Everything is an object!

    常用鏈接

    留言簿(2)

    隨筆檔案

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

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 久久精品亚洲AV久久久无码| 久久精品国产亚洲AV大全| 亚洲深深色噜噜狠狠爱网站| 亚洲欧洲日产国码av系列天堂| 亚洲AV午夜成人片| 亚洲国产成人久久三区| 国产av无码专区亚洲av毛片搜| 中国内地毛片免费高清| 精品免费久久久久久久| 国产男女猛烈无遮挡免费网站| 亚洲综合无码精品一区二区三区| 内射少妇36P亚洲区| 亚洲精品国产精品| 国产免费牲交视频免费播放| 37pao成人国产永久免费视频 | 成年轻人网站色免费看| 亚洲福利精品一区二区三区| 亚洲福利在线视频| 亚洲国产精品无码久久九九大片| 成年网在线观看免费观看网址| 久久午夜夜伦鲁鲁片免费无码 | 成人免费的性色视频| 国产一级一片免费播放| 婷婷久久久亚洲欧洲日产国码AV| 在线观看亚洲AV日韩AV| 美女被免费网站91色| 成人免费视频网站www| 亚洲AⅤ视频一区二区三区| 色婷婷亚洲十月十月色天| 国产亚洲综合精品一区二区三区| 久久成人免费大片| 国产一级做a爱免费视频| 亚洲邪恶天堂影院在线观看| 日本亚洲中午字幕乱码| 99re6在线视频精品免费下载 | 免费看国产成年无码AV片| 亚洲色一色噜一噜噜噜| 亚洲AV无码乱码在线观看代蜜桃| 91av免费在线视频| 在线免费观看视频你懂的| 久久久久亚洲AV无码专区首|