黄色电影一区二区,韩国少妇自慰A片免费看,精品人妻少妇一级毛片免费蜜桃AV按摩师 ,超碰 香蕉

JDBC 教程

jdbc 教程

jdbc 即 java database connectivity,是指 java 數(shù)據(jù)庫(kù)連接,在 java 語(yǔ)言中用來規(guī)范客戶端程序如何來訪問數(shù)據(jù)庫(kù)的應(yīng)用程序接口,提供了諸如查詢和更新數(shù)據(jù)庫(kù)中數(shù)據(jù)的方法。

jdbc 提供了一組 api,用于訪問任何形式的表格數(shù)據(jù),尤其是存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

jdbc 使用流程如下:

  • 連接數(shù)據(jù)源,比如:數(shù)據(jù)庫(kù)。
  • 為數(shù)據(jù)庫(kù)傳遞查詢和更新指令。
  • 處理數(shù)據(jù)庫(kù)響應(yīng)并返回的結(jié)果。

 

1. jdbc 架構(gòu)

jdbc api支持兩層和三層處理模型進(jìn)行數(shù)據(jù)庫(kù)訪問,但在一般的jdbc體系結(jié)構(gòu)由兩層組成:

  • jdbc api: 提供了應(yīng)用程序?qū)dbc的管理連接。
  • jdbc driver api: 支持jdbc管理到驅(qū)動(dòng)器連接。

jdbc api 的使用驅(qū)動(dòng)程序管理器和數(shù)據(jù)庫(kù)特定的驅(qū)動(dòng)程序提供透明的連接到異構(gòu)數(shù)據(jù)庫(kù)。

dbc驅(qū)動(dòng)程序管理器可確保正確的驅(qū)動(dòng)程序來訪問每個(gè)數(shù)據(jù)源。該驅(qū)動(dòng)程序管理器能夠支持連接到多個(gè)異構(gòu)數(shù)據(jù)庫(kù)的多個(gè)并發(fā)的驅(qū)動(dòng)程序。

以下是結(jié)構(gòu)圖,它顯示了驅(qū)動(dòng)程序管理器方面的jdbc驅(qū)動(dòng)程序和java應(yīng)用程序的位置:

 

2. jdbc 組件

jdbc api 提供了以下接口和類:

  • drivermanager
    這個(gè)類管理數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的列表。內(nèi)容是否符合從java應(yīng)用程序使用的通信子協(xié)議正確的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的連接請(qǐng)求。識(shí)別jdbc在一定子協(xié)議的第一個(gè)驅(qū)動(dòng)器將被用來建立數(shù)據(jù)庫(kù)連接。
  • driver
    此接口處理與數(shù)據(jù)庫(kù)服務(wù)器通信。很少直接與驅(qū)動(dòng)程序?qū)ο?。相反,使用drivermanager中的對(duì)象,它管理此類型的對(duì)象。它也抽象與驅(qū)動(dòng)程序?qū)ο蠊ぷ飨嚓P(guān)的詳細(xì)信息。
  • connection
    此接口與接觸數(shù)據(jù)庫(kù)的所有方法。連接對(duì)象表示通信上下文,即,與數(shù)據(jù)庫(kù)中的所有的通信是通過唯一的連接對(duì)象。
  • statement
    可以使用這個(gè)接口創(chuàng)建的對(duì)象的sql語(yǔ)句提交到數(shù)據(jù)庫(kù)。一些派生的接口接受除執(zhí)行存儲(chǔ)過程的參數(shù)。
  • resultset
    這些對(duì)象保存從數(shù)據(jù)庫(kù)后,執(zhí)行使用statement對(duì)象的sql查詢中檢索數(shù)據(jù)。它作為一個(gè)迭代器,讓您可以通過移動(dòng)它的數(shù)據(jù)。
  • sqlexception
    這個(gè)類處理發(fā)生在一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序的任何錯(cuò)誤。

 

3. jdbc 編程步驟

1)加載驅(qū)動(dòng)程序

class.forname(driverclass)
//加載mysql驅(qū)動(dòng)
class.forname("com.mysql.jdbc.driver")
//加載oracle驅(qū)動(dòng)
class.forname("oracle.jdbc.driver.oracledriver")

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

drivermanager.getconnection("jdbc:mysql://127.0.0.1:3306/imooc", "root", "root");

3)創(chuàng)建 statement\preparedstatement 對(duì)象

conn.createstatement();
conn.preparestatement(sql);

 

4. jdbc 完整編程范例

import java.sql.connection;
import java.sql.drivermanager;
import java.sql.resultset;
import java.sql.statement;

public class dbutil {

    public static final string url = "jdbc:mysql://localhost:3306/imooc";
    public static final string user = "liulx";
    public static final string password = "123456";

    public static void main(string[] args) throws exception {
        //1.加載驅(qū)動(dòng)程序
        class.forname("com.mysql.jdbc.driver");
        //2. 獲得數(shù)據(jù)庫(kù)連接
        connection conn = drivermanager.getconnection(url, user, password);
        //3.操作數(shù)據(jù)庫(kù),實(shí)現(xiàn)增刪改查
        statement stmt = conn.createstatement();
        resultset rs = stmt.executequery("select user_name, age from imooc_goddess");
        //如果有數(shù)據(jù),rs.next()返回true
        while(rs.next()){
            system.out.println(rs.getstring("user_name")+" 年齡:"+rs.getint("age"));
        }
    }
}

 

5. jdbc 增刪改查編程范例

public class dbutil {
    public static final string url = "jdbc:mysql://localhost:3306/imooc";
    public static final string user = "liulx";
    public static final string password = "123456";
    private static connection conn = null;
    static{
        try {
            //1.加載驅(qū)動(dòng)程序
            class.forname("com.mysql.jdbc.driver");
            //2. 獲得數(shù)據(jù)庫(kù)連接
            conn = drivermanager.getconnection(url, user, password);
        } catch (classnotfoundexception e) {
            e.printstacktrace();
        } catch (sqlexception e) {
            e.printstacktrace();
        }
    }

    public static connection getconnection(){
        return conn;
    }
}

//模型
package liulx.model;

import java.util.date;

public class goddess {

    private integer id;
    private string user_name;
    private integer sex;
    private integer age;
    private date birthday; //注意用的是java.util.date
    private string email;
    private string mobile;
    private string create_user;
    private string update_user;
    private date create_date;
    private date update_date;
    private integer isdel;
    //getter setter方法。。。
}

//---------dao層--------------
package liulx.dao;

import liulx.db.dbutil;
import liulx.model.goddess;

import java.sql.connection;
import java.sql.resultset;
import java.sql.sqlexception;
import java.sql.statement;
import java.util.arraylist;
import java.util.list;

public class goddessdao {
    //增加
    public void addgoddess(goddess g) throws sqlexception {
        //獲取連接
        connection conn = dbutil.getconnection();
        //sql
        string sql = "insert into imooc_goddess(user_name, sex, age, birthday, email, mobile,"+
            "create_user, create_date, update_user, update_date, isdel)"
                +"values("+"?,?,?,?,?,?,?,current_date(),?,current_date(),?)";
        //預(yù)編譯
        preparedstatement ptmt = conn.preparestatement(sql); //預(yù)編譯sql,減少sql執(zhí)行

        //傳參
        ptmt.setstring(1, g.getuser_name());
        ptmt.setint(2, g.getsex());
        ptmt.setint(3, g.getage());
        ptmt.setdate(4, new date(g.getbirthday().gettime()));
        ptmt.setstring(5, g.getemail());
        ptmt.setstring(6, g.getmobile());
        ptmt.setstring(7, g.getcreate_user());
        ptmt.setstring(8, g.getupdate_user());
        ptmt.setint(9, g.getisdel());

        //執(zhí)行
        ptmt.execute();
    }

    public void updategoddess(){
        //獲取連接
        connection conn = dbutil.getconnection();
        //sql, 每行加空格
        string sql = "update imooc_goddess" +
                " set user_name=?, sex=?, age=?, birthday=?, email=?, mobile=?,"+
                " update_user=?, update_date=current_date(), isdel=? "+
                " where id=?";
        //預(yù)編譯
        preparedstatement ptmt = conn.preparestatement(sql); //預(yù)編譯sql,減少sql執(zhí)行

        //傳參
        ptmt.setstring(1, g.getuser_name());
        ptmt.setint(2, g.getsex());
        ptmt.setint(3, g.getage());
        ptmt.setdate(4, new date(g.getbirthday().gettime()));
        ptmt.setstring(5, g.getemail());
        ptmt.setstring(6, g.getmobile());
        ptmt.setstring(7, g.getupdate_user());
        ptmt.setint(8, g.getisdel());
        ptmt.setint(9, g.getid());

        //執(zhí)行
        ptmt.execute();
    }

    public void delgoddess(){
        //獲取連接
        connection conn = dbutil.getconnection();
        //sql, 每行加空格
        string sql = "delete from imooc_goddess where id=?";
        //預(yù)編譯sql,減少sql執(zhí)行
        preparedstatement ptmt = conn.preparestatement(sql);

        //傳參
        ptmt.setint(1, id);

        //執(zhí)行
        ptmt.execute();
    }

    public list query() throws sqlexception {
        connection conn = dbutil.getconnection();
        statement stmt = conn.createstatement();
        resultset rs = stmt.executequery("select user_name, age from imooc_goddess");

        list gs = new arraylist();
        goddess g = null;
        while(rs.next()){
            g = new goddess();
            g.setuser_name(rs.getstring("user_name"));
            g.setage(rs.getint("age"));

            gs.add(g);
        }
        return gs;
    }

    public goddess get(){
        goddess g = null;
        //獲取連接
        connection conn = dbutil.getconnection();
        //sql, 每行加空格
        string sql = "select * from  imooc_goddess where id=?";
        //預(yù)編譯sql,減少sql執(zhí)行
        preparedstatement ptmt = conn.preparestatement(sql);
        //傳參
        ptmt.setint(1, id);
        //執(zhí)行
        resultset rs = ptmt.executequery();
        while(rs.next()){
            g = new goddess();
            g.setid(rs.getint("id"));
            g.setuser_name(rs.getstring("user_name"));
            g.setage(rs.getint("age"));
            g.setsex(rs.getint("sex"));
            g.setbirthday(rs.getdate("birthday"));
            g.setemail(rs.getstring("email"));
            g.setmobile(rs.getstring("mobile"));
            g.setcreate_date(rs.getdate("create_date"));
            g.setcreate_user(rs.getstring("create_user"));
            g.setupdate_date(rs.getdate("update_date"));
            g.setupdate_user(rs.getstring("update_user"));
            g.setisdel(rs.getint("isdel"));
        }
        return g;
    }
相關(guān)文章