日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

jdbc入门(一)

發(fā)布時(shí)間:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jdbc入门(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、JDBC入門

? ? 1.什么是JDBC

????????JDBC(Java DataBase Connectivity)就是Java數(shù)據(jù)庫(kù)連接,說(shuō)白了就是用Java語(yǔ)言來(lái)操作數(shù)據(jù)庫(kù)。原來(lái)我們操作數(shù)據(jù)庫(kù)是在控制臺(tái)使用SQL語(yǔ)句來(lái)操作數(shù)據(jù)庫(kù),JDBC是用Java語(yǔ)言向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句。

? ? 2.JDBC原理

????????早期SUN公司的天才們想編寫(xiě)一套可以連接天下所有數(shù)據(jù)庫(kù)的API,但是當(dāng)他們剛剛開(kāi)始時(shí)就發(fā)現(xiàn)這是不可完成的任務(wù),因?yàn)楦鱾€(gè)廠商的數(shù)據(jù)庫(kù)服務(wù)器差異太大了。后來(lái)SUN開(kāi)始與數(shù)據(jù)庫(kù)廠商們討論,最終得出的結(jié)論是,由SUN提供一套訪問(wèn)數(shù)據(jù)庫(kù)的規(guī)范(就是一組接口),并提供連接數(shù)據(jù)庫(kù)的協(xié)議標(biāo)準(zhǔn),然后各個(gè)數(shù)據(jù)庫(kù)廠商會(huì)遵循SUN的規(guī)范提供一套訪問(wèn)自己公司的數(shù)據(jù)庫(kù)服務(wù)器的API出現(xiàn)。SUN提供的規(guī)范命名為JDBC,而各個(gè)廠商提供的,遵循了JDBC規(guī)范的,可以訪問(wèn)自己數(shù)據(jù)庫(kù)的API被稱之為驅(qū)動(dòng)!

?

????????

?

????????JDBC是接口,而JDBC驅(qū)動(dòng)才是接口的實(shí)現(xiàn),沒(méi)有驅(qū)動(dòng)無(wú)法完成數(shù)據(jù)庫(kù)連接!每個(gè)數(shù)據(jù)庫(kù)廠商都有自己的驅(qū)動(dòng),用來(lái)連接自己公司的數(shù)據(jù)庫(kù)。

? ? ? ? 當(dāng)然還有第三方公司專門為某一數(shù)據(jù)庫(kù)提供驅(qū)動(dòng),這樣的驅(qū)動(dòng)往往不是開(kāi)源免費(fèi)的!

? ? 3.JDBC核心類(接口)介紹

????????JDBC中的核心類有:DriverManager、Connection、Statement,和ResultSet

????????DriverManger(驅(qū)動(dòng)管理器)的作用有兩個(gè):

????????????????注冊(cè)驅(qū)動(dòng):這可以讓JDBC知道要使用的是哪個(gè)驅(qū)動(dòng);

????????????????獲取Connection:如果可以獲取到Connection,那么說(shuō)明已經(jīng)與數(shù)據(jù)庫(kù)連接上了。

?

????????Connection對(duì)象表示連接,與數(shù)據(jù)庫(kù)的通訊都是通過(guò)這個(gè)對(duì)象展開(kāi)的:

????????????????Connection最為重要的一個(gè)方法就是用來(lái)獲取Statement對(duì)象;

?

????????Statement是用來(lái)向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句的,這樣數(shù)據(jù)庫(kù)就會(huì)執(zhí)行發(fā)送過(guò)來(lái)的SQL語(yǔ)句:

????????????????void executeUpdate(String sql):執(zhí)行更新操作(insert、update、delete等);

? ? ? ? ? ? ResultSet executeQuery(String sql):執(zhí)行查詢操作,數(shù)據(jù)庫(kù)在執(zhí)行查詢后會(huì)把查詢結(jié)果返回,查詢結(jié)果就是ResultSet;

?

????????ResultSet對(duì)象表示查詢結(jié)果集,只有在執(zhí)行查詢操作后才會(huì)有結(jié)果集的產(chǎn)生。結(jié)果集是一個(gè)二維的表格,有行有列。操作結(jié)果集要學(xué)習(xí)移動(dòng)ResultSet內(nèi)部的“行光標(biāo)”,以及獲取當(dāng)前行上的每一列上的數(shù)據(jù):

?

????????????????boolean next():使“行光標(biāo)”移動(dòng)到下一行,并返回移動(dòng)后的行是否存在;

????????????????XXX getXXX(int col):獲取當(dāng)前行指定列上的值,參數(shù)就是列數(shù),列數(shù)從1開(kāi)始,而不是0。

? ? 4.編寫(xiě)第一個(gè)JDBC程序

? ? (1)mysql數(shù)據(jù)庫(kù)的驅(qū)動(dòng)jar包:mysql-connector-java-5.1.13-bin.jar;

? ? (2)獲取連接

????????獲取連接需要兩步,一是使用DriverManager來(lái)注冊(cè)驅(qū)動(dòng),二是使用DriverManager來(lái)獲取Connection對(duì)象。

????????Class.forName(“com.mysql.jdbc.Driver”):注冊(cè)驅(qū)動(dòng)

????????DriverManager.getConnection(url,username,password):獲取Connection對(duì)象

????????? ? 不同數(shù)據(jù)庫(kù)的url格式不同,下面是mysql的url

????????????????????jdbc:mysql://localhost:3306/mydb1

JDBC規(guī)定url的格式由三部分組成,每個(gè)部分中間使用逗號(hào)分隔。

????????第一部分是jdbc,這是固定的;

????????第二部分是數(shù)據(jù)庫(kù)名稱,那么連接mysql數(shù)據(jù)庫(kù),第二部分當(dāng)然是mysql了;

????????第三部分是由數(shù)據(jù)庫(kù)廠商規(guī)定的,我們需要了解每個(gè)數(shù)據(jù)庫(kù)廠商的要求,mysql的第三部分分別由數(shù)據(jù)庫(kù)服務(wù)器的IP地址(localhost)、端口號(hào)(3306),以及DATABASE名稱(mydb1)組成。

還可以在url中提供參數(shù):

????????jdbc:mysql://localhost:3306/mydb1?useUnicode=true&characterEncoding=UTF8

????????useUnicode參數(shù)指定這個(gè)連接數(shù)據(jù)庫(kù)的過(guò)程中,使用的字節(jié)集是Unicode字節(jié)集;

????????characherEncoding參數(shù)指定穿上連接數(shù)據(jù)庫(kù)的過(guò)程中,使用的字節(jié)集編碼為UTF-8編碼。請(qǐng)注意,mysql中指定UTF-8編碼是給出的是UTF8,而不是UTF-8。要小心了!

? ? (3)獲取Statement

????????在得到Connectoin之后,說(shuō)明已經(jīng)與數(shù)據(jù)庫(kù)連接上了,下面是通過(guò)Connection獲取Statement對(duì)象的代碼:

????????????Statement stmt = con.createStatement();

????????????Statement是用來(lái)向數(shù)據(jù)庫(kù)發(fā)送要執(zhí)行的SQL語(yǔ)句的!

? ? (4)發(fā)送SQL增刪改語(yǔ)句

????????String sql = “insert into user value(’zhangSan’, ’123’)”;

????????int m = stmt.executeUpdate(sql);

????????其中int類型的返回值表示執(zhí)行這條SQL語(yǔ)句所影響的行數(shù),我們知道,對(duì)insert來(lái)說(shuō),最后只能影響一行,而update和delete可能會(huì)影響0~n行。

????????如果SQL語(yǔ)句執(zhí)行失敗,那么executeUpdate()會(huì)拋出一個(gè)SQLException。

? ? (5)發(fā)送SQL查詢語(yǔ)句

????????String sql = “select * from user”;

????????ResultSet rs = stmt.executeQuery(sql);

????????請(qǐng)注冊(cè),執(zhí)行查詢使用的不是executeUpdate()方法,而是executeQuery()方法。executeQuery()方法返回的是ResultSet,ResultSet封裝了查詢結(jié)果,我們稱之為結(jié)果集。

? ? (6)讀取結(jié)果集中的數(shù)據(jù)

????????ResultSet就是一張二維的表格,它內(nèi)部有一個(gè)“行光標(biāo)”,光標(biāo)默認(rèn)的位置在“第一行上方”,我們可以調(diào)用rs對(duì)象的next()方法把“行光標(biāo)”向下移動(dòng)一行,當(dāng)?shù)谝淮握{(diào)用next()方法時(shí),“行光標(biāo)”就到了第一行記錄的位置,這時(shí)就可以使用ResultSet提供的getXXX(int col)方法來(lái)獲取指定列的數(shù)據(jù)了:

???????????????光標(biāo)移動(dòng)到第一行:rs.next();

????????????????獲取第一行第一列的數(shù)據(jù):rs.getInt(1);

????????當(dāng)你使用rs.getInt(1)方法時(shí),你必須可以肯定第1列的數(shù)據(jù)類型就是int類型,如果你不能肯定,那么最好使用rs.getObject(1)。在ResultSet類中提供了一系列的getXXX()方法,比較常用的方法有:

????????????????Object getObject(int col)

????????????????String getString(int col)

????????????????int getInt(int col)

????????????????double getDouble(int col)

? ? (7)關(guān)閉

????????與IO流一樣,使用后的東西都需要關(guān)閉!關(guān)閉的順序是先得到的后關(guān)閉,后得到的先關(guān)閉。

????????????????rs.close();

????????????????stmt.close();

????????????????con.close();

? ? (8)代碼實(shí)現(xiàn)

package cn.yfy_01;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;import org.junit.Test;public class Demo1 {@Testpublic void fun1() throws ClassNotFoundException, SQLException {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/mydbc";String username = "root";String password = "root";Connection con = DriverManager.getConnection(url, username, password);// 得到Statement對(duì)象Statement statement = con.createStatement();// 執(zhí)行SQL增刪改語(yǔ)句String sql = "insert into stu values('142074401','張三',23,'北京')";statement.executeUpdate(sql);System.out.println("插入數(shù)據(jù)成功");}@Testpublic void fun2() throws ClassNotFoundException, SQLException {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/mydbc";String username = "root";String password = "root";Connection con = DriverManager.getConnection(url, username, password);// 得到Statement對(duì)象Statement statement = con.createStatement();// 執(zhí)行SQL查詢語(yǔ)句,得到ResultSet結(jié)果集String sql = "select * from stu";ResultSet rs = statement.executeQuery(sql);while (rs.next()) {// 查詢id值int id = rs.getInt("id");// 查詢第二列的值String name = rs.getString(2);// 查詢第三列的值int age = rs.getInt(3);// 查詢address的值String address = rs.getString("address");System.out.println(id + "," + name + "," + age + "," + address);}} }

? ? (8)規(guī)范化代碼

????????所謂規(guī)范化代碼就是無(wú)論是否出現(xiàn)異常,都要關(guān)閉ResultSet、Statement,以及Connection。

@Testpublic void fun3() {Connection con = null;Statement statement = null;ResultSet rs = null;try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/mydbc";String username = "root";String password = "root";con = DriverManager.getConnection(url, username, password);statement = con.createStatement();String sql = "select * from stu";rs = statement.executeQuery(sql);while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");int age = rs.getInt("age");String address = rs.getString("address");System.out.println(id + "," + name + "," + age + "," + address);}} catch (Exception e) {} finally {try {if (rs != null)rs.close();if (statement != null)statement.close();if (con != null)con.close();} catch (SQLException e) {e.printStackTrace();}}

二、JDBC對(duì)象介紹

? ? 1.JDBC的主要類(接口)

????????在JDBC中常用的類有:

????????????DriverManager;

????????????Connection;

????????????Statement;

????????????ResultSet。

? ? 2.DriverManager

????????其實(shí)我們今后只需要會(huì)用DriverManager的getConnection()方法即可:

????????????????1.Class.forName(“com.mysql.jdbc.Driver”);//注冊(cè)驅(qū)動(dòng)

????????????????2.String url = “jdbc:mysql://localhost:3306/mydb1”;

????????????????3.String username = “root”

????????????????4.String password = “123”;

????????????????5.Connection con = DriverManager.getConnection(url, username, password);
?

????????注意,上面代碼可能出現(xiàn)的兩種異常:

????????????????1.ClassNotFoundException:這個(gè)異常是在第1句上出現(xiàn)的,出現(xiàn)這個(gè)異常有兩個(gè)可能:

????????????????????????你沒(méi)有給出mysql的jar包;

????????????????????????你把類名稱打錯(cuò)了,查看類名是不是com.mysql.jdbc.Driver。

????????????????2.SQLException:這個(gè)異常出現(xiàn)在第5句,出現(xiàn)這個(gè)異常就是三個(gè)參數(shù)的問(wèn)題,往往username和password一般不是出錯(cuò),所以需要認(rèn)真查看url是否打錯(cuò)。

?

????????對(duì)于DriverManager.registerDriver()方法了解即可,因?yàn)槲覀兘窈笞?cè)驅(qū)動(dòng)只會(huì)Class.forName(),而不會(huì)使用這個(gè)方法。

?

? ? 3.Connection

????????Connection最為重要的方法就是獲取Statement:

????????????????Statement stmt = con.createStatement();?

????? ? 該方法還有一個(gè)重載形式,后續(xù)會(huì)講解:

????????????????Statement stmt = con.createStatement(int,int);

? ? 4.Statement

????????Statement最為重要的方法是:

????????????????int executeUpdate(String sql):執(zhí)行更新操作,即執(zhí)行insert、update、delete語(yǔ)句,其實(shí)這個(gè)方法也可以執(zhí)行create table、alter table,以及drop table等語(yǔ)句,但我們很少會(huì)使用JDBC來(lái)執(zhí)行這些語(yǔ)句;

????????????????ResultSet executeQuery(String sql):執(zhí)行查詢操作,執(zhí)行查詢操作會(huì)返回ResultSet,即結(jié)果集。

  ??????????boolean execute():可以執(zhí)行executeUpdate()和executeQuery()兩個(gè)方法能執(zhí)行的sql語(yǔ)句

????????Statement還有一個(gè)boolean execute()方法,這個(gè)方法可以用來(lái)執(zhí)行增、刪、改、查所有SQL語(yǔ)句。該方法返回的是boolean類型,表示SQL語(yǔ)句是否有結(jié)果集!。

????????如果使用execute()方法執(zhí)行的是更新語(yǔ)句,那么還要調(diào)用int getUpdateCount()來(lái)獲取insert、update、delete語(yǔ)句所影響的行數(shù)。

????????如果使用execute()方法執(zhí)行的是查詢語(yǔ)句,那么還要調(diào)用ResultSet getResultSet()來(lái)獲取select語(yǔ)句的查詢結(jié)果。

? ? 5.ResultSet之滾動(dòng)結(jié)果集

????????ResultSet表示結(jié)果集,它是一個(gè)二維的表格!ResultSet內(nèi)部維護(hù)一個(gè)行光標(biāo)(游標(biāo)),ResultSet提供了一系列的方法來(lái)移動(dòng)游標(biāo):

void beforeFirst():把光標(biāo)放到第一行的前面,這也是光標(biāo)默認(rèn)的位置;

void afterLast():把光標(biāo)放到最后一行的后面;

boolean first():把光標(biāo)放到第一行的位置上,返回值表示調(diào)控光標(biāo)是否成功;

boolean last():把光標(biāo)放到最后一行的位置上;

?

boolean isBeforeFirst():當(dāng)前光標(biāo)位置是否在第一行前面;

boolean isAfterLast():當(dāng)前光標(biāo)位置是否在最后一行的后面;

boolean isFirst():當(dāng)前光標(biāo)位置是否在第一行上;

boolean isLast():當(dāng)前光標(biāo)位置是否在最后一行上;

?

boolean previous():把光標(biāo)向上挪一行;

boolean next():把光標(biāo)向下挪一行;

boolean relative(int row):相對(duì)位移,當(dāng)row為正數(shù)時(shí),表示向下移動(dòng)row行,為負(fù)數(shù)時(shí)表示向上移動(dòng)row行;

boolean absolute(int row):絕對(duì)位移,把光標(biāo)移動(dòng)到指定的行上;

int getRow():返回當(dāng)前光標(biāo)所有行。
?

????????獲取結(jié)果集元數(shù)據(jù)!

????????????????得到元數(shù)據(jù):rs.getMetaData(),返回值為ResultSetMetaData;

????????????????獲取結(jié)果集列數(shù):int getColumnCount()

? ? ? ? ? ? ? ? 獲取指定列的列名:String getColumnName(int colIndex)

????????結(jié)果集特性:當(dāng)使用Connection的createStatement時(shí),已經(jīng)確定了生成的結(jié)果集是什么特性。

????????????????是否可滾動(dòng)

????????????????是否敏感

? ? ? ? ? ? ? ? 是否可更新

????????con.createSttement():生成的結(jié)果集:不滾動(dòng)、不敏感、不可更新!

????????con.createStatement(int,int):

????????第一個(gè)參數(shù):

????????????????ResultSet.TYPE_FORWARD_ONLY:不滾動(dòng)結(jié)果集;

????????????????ResultSet.TYPE_SCROLL_INSENSITIVE:滾動(dòng)結(jié)果集,但結(jié)果集數(shù)據(jù)不會(huì)再跟隨數(shù)據(jù)庫(kù)而變化;

????????????????ResultSet.TYPE_SCROLL_SENSITIVE:滾動(dòng)結(jié)果集,但結(jié)果集數(shù)據(jù)不會(huì)再跟隨數(shù)據(jù)庫(kù)而變化;

? ? ? ? 第二個(gè)參數(shù):

????????????????CONCUR_READ_ONLY:結(jié)果集是只讀的,不能通過(guò)修改結(jié)果集而反向影響數(shù)據(jù)庫(kù);

????????????????CONCUR_UPDATABLE:結(jié)果集是可更新的,對(duì)結(jié)果集的更新可以反向影響數(shù)據(jù)庫(kù)。

????6、ResultSet獲取列數(shù)據(jù)

????????可以通過(guò)next()方法使ResultSet的游標(biāo)向下移動(dòng),當(dāng)游標(biāo)移動(dòng)到你需要的行時(shí),就需要來(lái)獲取該行的數(shù)據(jù)了,ResultSet提供了一系列的獲取列數(shù)據(jù)的方法:

????????????????String getString(int columnIndex):獲取指定列的String類型數(shù)據(jù);

????????????????int getInt(int columnIndex):獲取指定列的int類型數(shù)據(jù);

????????????????double getDouble(int columnIndex):獲取指定列的double類型數(shù)據(jù);

????????????????boolean getBoolean(int columnIndex):獲取指定列的boolean類型數(shù)據(jù);

????????????????Object getObject(int columnIndex):獲取指定列的Object類型的數(shù)據(jù)。

????????上面方法中,參數(shù)columnIndex表示列的索引,列索引從1開(kāi)始,而不是0,這第一點(diǎn)與數(shù)組不同。如果你清楚當(dāng)前列的數(shù)據(jù)類型,那么可以使用getInt()之類的方法來(lái)獲取,如果你不清楚列的類型,那么你應(yīng)該使用getObject()方法來(lái)獲取。

ResultSet還提供了一套通過(guò)列名稱來(lái)獲取列數(shù)據(jù)的方法:

????????????????String getString(String columnName):獲取名稱為columnName的列的String數(shù)據(jù);

????????????????int getInt(String columnName):獲取名稱為columnName的列的int數(shù)據(jù);

????????????????double getDouble(String columnName):獲取名稱為columnName的列的double數(shù)據(jù);

????????????????boolean getBoolean(String columnName):獲取名稱為columnName的列的boolean數(shù)據(jù);

? ? ? ? ? ? ? ? Object getObject(String columnName):獲取名稱為columnName的列的Object數(shù)據(jù);

三、PreparedStatement

? ? 1.什么是SQL攻擊

????????在需要用戶輸入的地方,用戶輸入的是SQL語(yǔ)句的片段,最終用戶輸入的SQL片段與我們DAO中寫(xiě)的SQL語(yǔ)句合成一個(gè)完整的SQL語(yǔ)句!例如用戶在登錄時(shí)輸入的用戶名和密碼都是為SQL語(yǔ)句的片段!

? ? 2.SQL攻擊代碼演示

首先創(chuàng)建一個(gè)表用來(lái)存儲(chǔ)用戶信息

CREATE TABLE user(uid CHAR(32) PRIMARY KEY,username VARCHAR(30) UNIQUE KEY NOT NULL,PASSWORD VARCHAR(30) );INSERT INTO user VALUES('U_1001', 'zs', 'zs'); SELECT * FROM user;

寫(xiě)一個(gè)login()方法

public void login(String username, String password) {Connection con = null;Statement stmt = null;ResultSet rs = null;try {con = JdbcUtils.getConnection();stmt = con.createStatement();String sql = "SELECT * FROM user WHERE " +"username='" + username + "' and password='" + password + "'";rs = stmt.executeQuery(sql);if(rs.next()) {System.out.println("歡迎" + rs.getString("username"));} else {System.out.println("用戶名或密碼錯(cuò)誤!");}} catch (Exception e) {throw new RuntimeException(e);} finally {JdbcUtils.close(con, stmt, rs);} }

調(diào)用這個(gè)方法

login("a' or 'a'='a", "a' or 'a'='a");

????????最終會(huì)登陸成功。因?yàn)檩斎氲挠脩裘兔艽a是SQL語(yǔ)句片段,最終與我們的login()方法中的SQL語(yǔ)句組合在一起!

????SELECT * FROM tab_user WHERE username='a' or 'a'='a' and password='a' or 'a'='a'

? ? 3.防止SQL攻擊

????????過(guò)濾用戶輸入的數(shù)據(jù)中是否包含非法字符;

????????分步交驗(yàn)!先使用用戶名來(lái)查詢用戶,如果查找到了,再比較密碼;

????????使用PreparedStatement。

? ? 4.PreparedStatement是什么?

????????PreparedStatement叫預(yù)編譯聲明!

????????PreparedStatement是Statement的子接口,你可以使用PreparedStatement來(lái)替換Statement。

????????PreparedStatement的好處:

????????????????防止SQL攻擊;

????????????????提高代碼的可讀性,以可維護(hù)性;

????????????????提高效率。

? ? 5.PreparedStatement的使用

????? ? (1)使用Connection的prepareStatement(String sql):即創(chuàng)建它時(shí)就讓它與一條SQL模板綁定

????? ? (2)調(diào)用PreparedStatement的setXXX()系列方法為問(wèn)號(hào)設(shè)置值

????? ? (3)調(diào)用executeUpdate()executeQuery()方法,但要注意,調(diào)用沒(méi)有參數(shù)的方法

String sql = “select * from tab_student where s_number=?”; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, “S_1001”); ResultSet rs = pstmt.executeQuery();

????????在使用Connection創(chuàng)建PreparedStatement對(duì)象時(shí)需要給出一個(gè)SQL模板,所謂SQL模板就是有“?”的SQL語(yǔ)句,其中“?”就是參數(shù)。

????????在得到PreparedStatement對(duì)象后,調(diào)用它的setXXX()方法為“?”賦值,這樣就可以得到把模板變成一條完整的SQL語(yǔ)句,然后再調(diào)用PreparedStatement對(duì)象的executeQuery()方法獲取ResultSet對(duì)象。

????????注意PreparedStatement對(duì)象獨(dú)有的executeQuery()方法是沒(méi)有參數(shù)的,而Statement的executeQuery()是需要參數(shù)(SQL語(yǔ)句)的。因?yàn)樵趧?chuàng)建PreparedStatement對(duì)象時(shí)已經(jīng)讓它與一條SQL模板綁定在一起了,所以在調(diào)用它的executeQuery()和executeUpdate()方法時(shí)就不再需要參數(shù)了。

????????PreparedStatement最大的好處就是在于重復(fù)使用同一模板,給予其不同的參數(shù)來(lái)重復(fù)的使用它。這才是真正提高效率的原因。

四、JdbcUtils工具類

? ? 1.JdbcUtils的作用

????????連接數(shù)據(jù)庫(kù)的四大參數(shù)是:驅(qū)動(dòng)類、url、用戶名,以及密碼。這些參數(shù)都與特定數(shù)據(jù)庫(kù)關(guān)聯(lián),如果將來(lái)想更改數(shù)據(jù)庫(kù),那么就要去修改這四大參數(shù),那么為了不去修改代碼,我們寫(xiě)一個(gè)JdbcUtils類,讓它從配置文件中讀取配置參數(shù),然后創(chuàng)建連接對(duì)象。

? ? 2.JdbcUtils代碼

jdbcUtils.java

public class JdbcUtils {private static final String dbconfig = "dbconfig.properties";//配置文件路徑private static Properties prop = new Properties();//對(duì)應(yīng)配置文件static {try {InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(dbconfig);prop.load(in);Class.forName(prop.getProperty("driverClassName"));} catch(IOException e) {throw new RuntimeException(e);}}//獲取Connection方法,參數(shù)都是從prop中獲取。public static Connection getConnection() {try {return DriverManager.getConnection(prop.getProperty("url"),prop.getProperty("username"), prop.getProperty("password"));} catch (Exception e) {throw new RuntimeException(e);}} }

dbconfig.properties

driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mydb1?useUnicode=true&characterEncoding=UTF8 username=root password=123

五、時(shí)間類型

????數(shù)據(jù)庫(kù)類型與java中類型的對(duì)應(yīng)關(guān)系:

????????DATE ?java.sql.Date

????????TIME ?java.sql.Time

????????TIMESTAMP ?java.sql.Timestamp
????????PreparedStatement#setDate(int, Date),其中第二個(gè)參數(shù)也是java.sql.Date

????領(lǐng)域?qū)ο?#xff08;domain)中的所有屬性不能出現(xiàn)java.sql包下的東西!即不能使用java.sql.Date;

????????ResultSet#getDate()返回的是java.sql.Date()

????時(shí)間類型的轉(zhuǎn)換:

????????java.util.Date 轉(zhuǎn)換為 java.sql.Date、Time、Timestamp

????? ? (1)把util的Date轉(zhuǎn)換成毫秒值

????? ? (2)使用毫秒值創(chuàng)建sql的Date、Time、Timestamp

java.util.Date date = new java.util.Date();long l = date.getTime();java.sql.Date sqlDate = new java.sql.Date(l);

?

????????java.sql.Date、Time、Timestamp轉(zhuǎn)化為java.util.Date

?

????????? ? 不需要處理了:因?yàn)閖ava.sql.Date是java.util.Date的子類。

代碼演示:

創(chuàng)建一個(gè)dt表

CREATE TABLE dt(d DATE,t TIME,ts TIMESTAMP )

向dt表中插入數(shù)據(jù)

@Testpublic void fun1() throws SQLException {Connection con = JdbcUtils.getConnection();String sql = "insert into dt value(?,?,?)";PreparedStatement pstmt = con.prepareStatement(sql);java.util.Date d = new java.util.Date();pstmt.setDate(1, new java.sql.Date(d.getTime()));pstmt.setTime(2, new Time(d.getTime()));pstmt.setTimestamp(3, new Timestamp(d.getTime()));pstmt.executeUpdate();}

從dt表中查詢數(shù)據(jù)

@Testpublic void fun2() throws SQLException {Connection con = JdbcUtils.getConnection();String sql = "select * from dt";PreparedStatement pstmt = con.prepareStatement(sql);ResultSet rs = pstmt.executeQuery();rs.next();java.util.Date d1 = rs.getDate(1);java.util.Date d2 = rs.getTime(2);java.util.Date d3 = rs.getTimestamp(3);System.out.println(d1);System.out.println(d2);System.out.println(d3);}

六、大數(shù)據(jù)

? ? 1.什么是大數(shù)據(jù)

????????所謂大數(shù)據(jù),就是大的字節(jié)數(shù)據(jù),或大的字符數(shù)據(jù)。標(biāo)準(zhǔn)SQL中提供了如下類型來(lái)保存大數(shù)據(jù)類型:

????????但是,在mysql中沒(méi)有提供tinyclob、clob、mediumclob、longclob四種類型,而是使用如下四種類型來(lái)處理文本大數(shù)據(jù):

七、批處理

? ? 1.Statement批處理

????????批處理就是一批一批的處理,而不是一個(gè)一個(gè)的處理!

????????當(dāng)你有10條SQL語(yǔ)句要執(zhí)行時(shí),一次向服務(wù)器發(fā)送一條SQL語(yǔ)句,這么做效率上很差!處理的方案是使用批處理,即一次向服務(wù)器發(fā)送多條SQL語(yǔ)句,然后由服務(wù)器一次性處理。

????????批處理只針對(duì)更新(增、刪、改)語(yǔ)句,批處理沒(méi)有查詢什么事兒!

? ? ? ?可以多次調(diào)用Statement類的addBatch(String sql)方法,把需要執(zhí)行的所有SQL語(yǔ)句添加到一個(gè)“批”中,然后調(diào)用Statement類的executeBatch()方法來(lái)執(zhí)行當(dāng)前“批”中的語(yǔ)句。

????????void addBatch(String sql):添加一條語(yǔ)句到“批”中;

????????int[] executeBatch():執(zhí)行“批”中所有語(yǔ)句。返回值表示每條語(yǔ)句所影響的行數(shù)據(jù);

????????void clearBatch():清空“批”中的所有語(yǔ)句。

for(int i = 0; i < 10; i++) {String number = "S_10" + i;String name = "stu" + i;int age = 20 + i;String gender = i % 2 == 0 ? "male" : "female";String sql = "insert into stu values('" + number + "', '" + name + "', " + age + ", '" + gender + "')";stmt.addBatch(sql);}stmt.executeBatch();

?

????????當(dāng)執(zhí)行了“批”之后,“批”中的SQL語(yǔ)句就會(huì)被清空!也就是說(shuō),連續(xù)兩次調(diào)用executeBatch()相當(dāng)于調(diào)用一次!因?yàn)榈诙握{(diào)用時(shí),“批”中已經(jīng)沒(méi)有SQL語(yǔ)句了。

????????還可以在執(zhí)行“批”之前,調(diào)用Statement的clearBatch()方法來(lái)清空“批”!

? ? 2.PreparedStatement批處理

????????PreparedStatement的批處理有所不同,因?yàn)槊總€(gè)PreparedStatement對(duì)象都綁定一條SQL模板。所以向PreparedStatement中添加的不是SQL語(yǔ)句,而是給“?”賦值。

con = JdbcUtils.getConnection();String sql = "insert into stu values(?,?,?,?)";pstmt = con.prepareStatement(sql);for(int i = 0; i < 10; i++) {pstmt.setString(1, "S_10" + i);pstmt.setString(2, "stu" + i);pstmt.setInt(3, 20 + i);pstmt.setString(4, i % 2 == 0 ? "male" : "female");//PreparedStatement的addBatch()方法沒(méi)有參數(shù)!pstmt.addBatch();}pstmt.executeBatch();

?

總結(jié)

以上是生活随笔為你收集整理的jdbc入门(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国产精华国产精品 | 人人澡人人添人人爽一区二区 | 99久久久国产精品 | 视频在线国产 | 日韩一区二区三区不卡 | 国产传媒中文字幕 | 欧美怡红院视频 | 天天爱天天色 | 天天操天天操天天操天天操天天操 | 美女黄视频免费 | 久久新| 免费久久网 | 国产免费人成xvideos视频 | 韩日av在线 | 国产呻吟在线 | 九色自拍视频 | 国产无遮挡又黄又爽在线观看 | 9999亚洲 | 久久一本综合 | 中文字幕美女免费在线 | 91精品啪啪 | 国产精品久久久久久模特 | 久草在线免费播放 | 国内三级在线 | 国产精品一区二区中文字幕 | 黄色成人av在线 | 中文字幕色综合网 | 91精品国产福利在线观看 | 国产亚洲精品女人久久久久久 | av中文字幕av | 一区二区国产精品 | 国产99久久九九精品免费 | 久久电影国产免费久久电影 | 欧美91av | 国产视频在线播放 | 亚洲国产一区二区精品专区 | 亚洲免费在线 | 六月丁香婷婷在线 | 国产一区自拍视频 | 亚洲乱码精品 | 伊人久久国产 | 日本久久99| 国产在线看一区 | 五月婷丁香网 | 最近2019好看的中文字幕免费 | 色福利网 | 少妇按摩av | 久久tv| 国产福利免费看 | 欧美91成人网 | 日韩精品一区二区三区中文字幕 | 91久久国产自产拍夜夜嗨 | 粉嫩av一区二区三区四区五区 | 伊人精品在线 | 亚洲 综合 国产 精品 | www久草 | 国产一区自拍视频 | 日韩视频免费观看高清 | 亚洲人成精品久久久久 | 精品999在线 | 国产精品黄 | 黄色的网站免费看 | 亚洲欧洲精品视频 | 国产九色视频在线观看 | 成人黄色在线视频 | 99热精品久久 | 国产精品久久久久久久久久久久午 | www欧美xxxx | 99精品黄色片免费大全 | 欧美日韩精品在线一区二区 | 特级西西444www高清大视频 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 免费看片在线观看 | 久久久免费视频播放 | 日韩精品中文字幕在线播放 | 人人玩人人弄 | 日韩,精品电影 | 久久精品视频观看 | 欧美国产精品久久久久久免费 | 97超在线| 精品自拍av | 在线视频欧美精品 | 99热最新地址 | 日韩免费在线视频观看 | 丁香综合网| 久久av不卡| 高清av不卡| 欧美一区影院 | 成人免费ⅴa | 久久99精品国产 | 国产中文 | av在线播放不卡 | 97在线观看免费观看 | 亚洲精品456在线播放 | 夜色资源站wwwcom | 99久久99久久免费精品蜜臀 | 国产亚洲精品久 | 最新不卡av | 91综合色 | 97天天综合网 | 日韩精品一区二区三区高清免费 | 天天干天天操 | 九九热精品视频在线观看 | 成人久久久久久久久久 | 久久久久成人精品免费播放动漫 | 啪啪动态视频 | 日韩免费三区 | 五月激情片 | 成人国产网址 | 夜夜高潮夜夜爽国产伦精品 | 成人av在线直播 | 国产精彩视频一区二区 | av电影在线不卡 | 色在线亚洲 | 911av视频 | 成人在线视频观看 | 国产精品一区在线播放 | 99久久婷婷国产综合精品 | 亚洲视频在线观看 | 五月婷婷六月综合 | av电影中文字幕 | 香蕉免费 | 国产亚洲激情视频在线 | 91视频麻豆 | 免费久久精品视频 | 激情久久五月 | 国产一级久久久 | 亚洲特级毛片 | 久草在线一免费新视频 | 国产色婷婷 | 亚洲三级网 | 久久伊人精品天天 | 国产一及片 | 亚洲蜜桃在线 | 成人久久久电影 | 美女黄色网在线播放 | 亚洲首页 | 国产精品久久久久aaaa | 黄色免费国产 | 久久影视中文字幕 | 欧美大片在线观看一区 | 麻豆国产精品va在线观看不卡 | 一区二区三区av在线 | 少妇18xxxx性xxxx片 | 中日韩欧美精彩视频 | 国产在线观看,日本 | 波多野结衣一区二区三区中文字幕 | 色网站视频 | 久久久久综合网 | 亚洲精品成人在线 | 99热国产在线 | 久久免费精品国产 | 伊人夜夜| 国产日产精品一区二区三区四区的观看方式 | 精品欧美乱码久久久久久 | 在线观看视频你懂 | 国产淫片| 99精品久久久久久久 | 国产精品高清一区二区三区 | 国产麻豆果冻传媒在线观看 | 久久久久亚洲精品成人网小说 | 久久国产亚洲精品 | 国内精品久久久久久久影视简单 | 国产精选在线 | 亚洲aⅴ一区二区三区 | 99亚洲精品| 免费看精品久久片 | 99亚洲精品 | 久久久久国产精品免费网站 | 美女网站久久 | 激情婷婷色 | 欧美国产视频在线 | 成人中文字幕av | 成年人黄色免费网站 | 久99视频 | 91成人网页版 | 国产精品24小时在线观看 | 91精品国产高清自在线观看 | 国产精品a成v人在线播放 | 蜜臀91丨九色丨蝌蚪老版 | 99视频精品 | av丁香| 国产高清视频免费最新在线 | 久久毛片网站 | 国产精品2020| 天天干.com | 婷婷去俺也去六月色 | 欧美男同视频网站 | 97在线观看免费高清完整版在线观看 | 在线观看日韩中文字幕 | 亚洲涩涩网站 | 久久伊人精品天天 | 欧美日韩在线观看一区二区 | 999在线视频 | 免费网站在线观看人 | 欧美精品乱码99久久影院 | 久久永久免费 | 2021国产精品 | 欧美一区二区三区四区夜夜大片 | 成年人视频免费在线 | www国产精品com | 日av免费 | 亚洲伊人网在线观看 | 五月激情丁香婷婷 | 成 人 免费 黄 色 视频 | 最新日韩视频 | 久艹在线播放 | 国产成人免费观看 | 91你懂的| 午夜精品久久久久 | 美女网站色| 国产午夜精品一区 | 欧美日韩中文国产一区发布 | 玖玖在线免费视频 | 成人黄色毛片 | 欧美一区二区日韩一区二区 | 久久久国产一区 | 久久不色 | 激情六月婷婷久久 | 91在线免费视频 | 久久国产精品免费一区 | 免费激情在线电影 | 天天草天天 | 中文在线天堂资源 | 亚洲精品伦理在线 | 99在线精品视频在线观看 | 欧美日韩在线免费观看视频 | 久久综合免费视频影院 | 国产v在线观看 | av成人在线播放 | 2023av在线 | av片无限看 | 欧美日韩在线播放一区 | 国产精品美女久久久免费 | 一区二区三区免费在线观看视频 | 国产综合香蕉五月婷在线 | 一区二区亚洲精品 | 2024国产精品视频 | 午夜视频一区二区三区 | 久久精品国产成人精品 | 999亚洲国产996395 | 97精品久久人人爽人人爽 | 在线视频观看成人 | 在线免费观看国产黄色 | 999ZYZ玖玖资源站永久 | 99视频在线观看一区三区 | 亚洲午夜精品一区 | 91精品视频网站 | 日韩精品一区二区三区在线播放 | 在线观看黄av | 亚洲色视频 | 中文字幕日韩电影 | 国产资源站 | 午夜精品视频一区二区三区在线看 | 黄色视屏av | 久草在线这里只有精品 | 久久久久久久免费 | 日韩精品一区二区在线 | 成人免费观看在线视频 | 久久黄色a级片 | 免费69视频 | 草久视频在线观看 | 国产免费观看av | 天天天天色综合 | 国产女人免费看a级丨片 | 精品国产视频在线 | 青草草在线视频 | 亚洲国产成人久久综合 | 亚洲综合在线发布 | 国产九九精品视频 | 久久综合精品国产一区二区三区 | 亚洲精品资源 | 午夜久久福利影院 | 一区二区三区三区在线 | 亚洲欧美婷婷六月色综合 | av大片网站 | 国产婷婷久久 | 国产精品久久久亚洲 | 亚州精品天堂中文字幕 | 天天爱天天射天天干天天 | 精品在线小视频 | 草久在线 | 国产99久久久国产精品免费二区 | 日本性xxx | 午夜精选视频 | 永久免费av在线播放 | 成人在线免费观看视视频 | 精品国产综合区久久久久久 | 日韩字幕在线观看 | 国产69精品久久app免费版 | 在线国产能看的 | 操操操日日 | 亚洲永久精品一区 | 91视频免费看网站 | 91高清免费在线观看 | 日日日网| 久草网站在线 | 国产老太婆免费交性大片 | 久久精品国产精品亚洲 | 国产精品女 | 在线久草视频 | 人人舔人人舔 | 天天操人人干 | 久久99精品久久久久久清纯直播 | 波多野结衣亚洲一区二区 | 99精品欧美一区二区三区 | 久久精品久久99精品久久 | www麻豆视频 | 午夜视频一区二区 | 91久久电影 | 麻豆成人精品视频 | 欧美在一区 | 国产精品免费看久久久8精臀av | 99热在线观看 | 国产激情小视频在线观看 | 精品久久久久久电影 | 国产一区二区三区免费观看视频 | 婷婷婷国产在线视频 | 91色影院 | 婷婷亚洲五月 | 国产成年人av | 久久综合狠狠综合久久激情 | 五月婷婷色丁香 | 伊人狠狠| 在线视频日韩精品 | 黄色av电影免费观看 | 久久国产一区二区三区 | 手机看片 | 黄色电影网站在线观看 | 手机在线观看国产精品 | 在线直播av | 日日夜操 | av高清免费 | 91视频免费网站 | 9色在线视频 | 精品国产一区二区三区日日嗨 | 最近高清中文字幕在线国语5 | 伊人网综合在线观看 | 国产视频一区在线 | 久久精品99久久 | 少妇自拍av | 久久在线视频在线 | www.色com| 四川bbb搡bbb爽爽视频 | 精品免费99久久 | 国产在线播放不卡 | 99热精品国产 | 久久视频在线免费观看 | 色视频 在线 | 久久精品中文字幕 | 日韩试看| 天天天综合网 | 一级黄色电影网站 | 国产成人精品一区二区三区在线观看 | 久久男女视频 | 欧美 日韩 国产 中文字幕 | 午夜精品一二区 | 欧洲高潮三级做爰 | 成人午夜在线电影 | 日韩三级在线观看 | 国产伦理一区二区三区 | 粉嫩av一区二区三区四区五区 | 国产91免费在线观看 | 午夜黄色一级片 | 亚洲精品综合一二三区在线观看 | 97视频资源| 亚洲一级黄色大片 | 天天操天天操 | 天天艹日日干 | 欧美国产不卡 | a黄色大片 | 天天做天天爱天天综合网 | 婷婷丁香狠狠爱 | 人人爽人人看 | 国产特级毛片aaaaaaa高清 | 91av电影| 麻豆一二三精选视频 | 国产一区二区观看 | 成人午夜影视 | 亚洲免费av在线播放 | 国产在线观看h | 亚洲免费视频观看 | 五月天丁香综合 | 黄色一级大片在线免费看产 | 久久久国产精品亚洲一区 | 天天草天天草 | 女女av在线| 日韩一区二区三区免费电影 | 成年人黄色免费视频 | 色婷婷成人网 | 91热爆在线观看 | 国产丝袜高跟 | 最新中文字幕视频 | 狠狠狠色丁香婷婷综合久久五月 | 精品久操 | 欧美日韩在线观看一区 | 国产v在线观看 | 99在线观看视频 | 国产破处精品 | 日本不卡视频 | 国内精品久久久久影院男同志 | 日韩艹 | 成人在线免费av | 国产色a在线观看 | 成人v| 最新午夜电影 | 亚洲精品乱码久久久久久蜜桃欧美 | 婷婷色网视频在线播放 | 欧美a级一区二区 | 色爽网站 | 亚洲一二区精品 | 亚洲第一区精品 | 一区二区视频在线免费观看 | 99久高清在线观看视频99精品热在线观看视频 | 国产69精品久久99不卡的观看体验 | 人人爱人人舔 | 99视频免费 | 91精品国自产在线 | 91丨九色丨91啦蝌蚪老版 | 狠狠网 | 超碰大片 | 久久久久久网站 | 日日夜夜天天人人 | 天堂中文在线视频 | 国产字幕在线看 | 天天翘av | 久久成人综合视频 | 色综合久久99 | 欧美日韩一区二区三区免费视频 | 国内综合精品午夜久久资源 | 国产无套一区二区三区久久 | 91色一区二区三区 | 亚洲午夜小视频 | 久久久久久久久久久福利 | 99爱在线观看 | 亚洲电影自拍 | 在线观看不卡视频 | 色吊丝av中文字幕 | 成年人免费观看在线视频 | 国产尤物一区二区三区 | 91视频免费看网站 | 久久99精品久久只有精品 | 亚洲精品理论片 | 黄色在线观看www | 在线超碰av| 免费av观看网站 | 亚洲精品视频在线 | 日韩免费视频网站 | 久久国产精品免费视频 | 人人澡人人澡人人 | 久视频在线播放 | 国产又粗又猛又黄又爽的视频 | 久久久精品一区二区三区 | 婷婷av网| 精油按摩av | 在线视频99| 国产在线观看网站 | 99在线精品视频在线观看 | 亚洲成年人免费网站 | 欧美一级裸体视频 | 精品一区在线 | 色综合五月天 | 丰满少妇麻豆av | 国产精品网址在线观看 | 黄色片网站免费 | 国产精品11| 国产精品久久久久国产精品日日 | 99热最新网址 | 久久久夜色 | 国产成人777777 | 亚洲最新视频在线播放 | 久久久www免费电影网 | 黄色www在线观看 | 久久在草| 久久免费黄色大片 | 正在播放 久久 | 久久国产精品影视 | 最近中文国产在线视频 | 五月婷婷免费 | 久久久影院一区二区三区 | 五月婷婷中文 | 成人免费在线观看电影 | 摸bbb搡bbb搡bbbb | 美腿丝袜一区二区三区 | 免费一级片观看 | 免费在线观看视频一区 | 久久国产影视 | 在线观看日本韩国电影 | 欧美精品在线视频 | 91麻豆精品国产 | 激情综合电影网 | 久久久午夜精品理论片中文字幕 | 色网av| 日韩视频免费播放 | 国产3p视频| 嫩小bbbb摸bbb摸bbb | 欧美一级视频在线观看 | 国产精品一区二区麻豆 | 久久成人精品电影 | 日韩av电影中文字幕 | 中文在线免费观看 | 久久 地址 | 在线 日韩 av| 狠狠操欧美| 99久热在线精品视频成人一区 | 国产精品 中文在线 | 狠狠干中文字幕 | 特级西西www44高清大胆图片 | 黄色在线观看www | 国产专区视频 | 日日干激情五月 | 亚洲电影在线看 | 天天躁日日躁狠狠躁av麻豆 | 成人在线免费观看视视频 | 久久久久夜色 | 国产精品福利久久久 | 丁香五月亚洲综合在线 | 五月婷婷婷婷婷 | 91精品在线视频观看 | 色a综合| 91在线观看欧美日韩 | 日韩精品一区二区在线观看视频 | 精品久久久精品 | 国产日产av| 国产成人综 | 91精品久 | 免费91在线| 国产一区二区高清视频 | 国产视频久久久 | 天天碰天天操 | 久久99电影 | 国产精品女人久久久 | 久久精品久久精品久久39 | 在线亚州 | 夜夜躁日日躁狠狠躁 | 亚洲黄色app | 97碰碰碰| 日本中文字幕高清 | 成人av在线直播 | 国产在线观看91 | 91尤物国产尤物福利在线播放 | 中文字幕在线播放一区二区 | 中文字幕xxxx | 观看免费av| 日韩三级av | 狠狠操狠狠干天天操 | 久久一及片| www.天天干| 久久久www成人免费精品张筱雨 | 日韩欧美综合视频 | 爱色av.com | 国产一区欧美在线 | 国产精品毛片网 | 国产精品久久久久亚洲影视 | 99久久精品久久亚洲精品 | a级一a一级在线观看 | 国产精品一区二区久久久久 | 久久久久久激情 | 91精品免费在线观看 | 亚洲国产午夜 | 国产精品永久久久久久久www | 亚洲一区二区三区91 | 狠狠干五月天 | 国产精品va | 久久99热精品 | 亚洲第一区在线播放 | 91av在| 日韩a级黄色 | 亚洲国产精品小视频 | 久久精品专区 | 久久精品香蕉 | 天天干,天天插 | 91香蕉视频污在线 | 国产成人久久精品77777 | 亚洲综合欧美激情 | 欧美三级在线播放 | 99久久精品无码一区二区毛片 | 超碰97免费 | av电影中文字幕在线观看 | 久久只精品99品免费久23小说 | 国产在线视频不卡 | 伊人黄色网 | 干综合网| 亚洲2019精品| 在线看成人| 91视频免费播放 | 日韩中文在线字幕 | 97色狠狠 | 免费看国产黄色 | 成人黄色短片 | 日韩一级电影在线 | 亚洲精品久久久久久久不卡四虎 | 不卡电影一区二区三区 | 亚洲在线看 | 日韩精品一区二区三区水蜜桃 | 91丨九色丨首页 | 国产成人久久精品77777 | www欧美日韩 | 黄色在线网站噜噜噜 | 9ⅰ精品久久久久久久久中文字幕 | 久久久免费视频播放 | 中文视频在线播放 | 日韩欧美一区二区三区在线观看 | 青青河边草观看完整版高清 | 园产精品久久久久久久7电影 | 人人爽人人爽人人片av | 操操综合 | 91精品国产91久久久久福利 | 国产午夜av | 午夜精品一区二区三区免费视频 | 国产精品99蜜臀久久不卡二区 | 青青草在久久免费久久免费 | 精品一二三四在线 | 日韩精品字幕 | 日本久久免费视频 | 久久理论视频 | 成人午夜久久 | 国产在线日本 | 久久视频这里有精品 | 亚洲性xxxx| 国产精品女同一区二区三区久久夜 | 久久婷婷一区二区三区 | 久久不卡国产精品一区二区 | 精品一区二区视频 | 国产91精品欧美 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 91九色视频网站 | 国产精品久久久久久婷婷天堂 | 99九九免费视频 | 久草在线资源免费 | 91九色在线观看视频 | 91精品国产综合久久福利 | 美女视频是黄的免费观看 | 国产美女免费看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 亚洲美女免费视频 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 在线免费观看av网站 | 四虎影视av | 欧美日韩国产在线精品 | 999久久久久| 天天摸日日操 | 91亚洲精品久久久蜜桃借种 | 中文av在线免费观看 | 97综合视频 | 中文在线天堂资源 | 久久成人国产精品免费软件 | 国产伦理久久精品久久久久_ | 国产精品99久久久久久久久久久久 | 中文字幕日韩国产 | 99视频在线观看一区三区 | 国产日产精品一区二区三区四区 | 欧美日韩一区二区三区不卡 | 九九热av| 黄色毛片大全 | 黄色片免费在线 | 91麻豆精品国产91久久久更新时间 | 超碰国产在线 | 国产中文字幕亚洲 | 久久精品国产成人精品 | 一区二区三区四区久久 | 国产日韩视频在线 | 精品国产一区二区三区在线 | 日韩在线观看一区二区 | 天天插一插 | 免费的国产精品 | 超碰人人超 | 91在线视频免费播放 | 色婷婷啪啪免费在线电影观看 | 成人网中文字幕 | 久久久国产精品网站 | 亚洲综合狠狠干 | 久久久久久黄 | 99欧美 | 国产视频一二区 | 亚洲日本在线一区 | 午夜精品久久一牛影视 | 亚洲精品久久激情国产片 | 国产精品嫩草55av | 爱射综合 | 国产高清视频免费最新在线 | 国产网站av | 国产亚洲精品久久久久久久久久 | 91视频电影| a在线免费观看视频 | 97精品国产97久久久久久免费 | 久久久久久国产精品999 | 激情综合色图 | 色网免费观看 | 国产高清福利在线 | 日韩专区视频 | 在线а√天堂中文官网 | 久久久久中文 | 日韩精品一区二区不卡 | 国产一级免费在线观看 | 在线看片一区 | 国内外成人在线 | 中文字幕乱码亚洲精品一区 | 又黄又爽免费视频 | 五月婷婷丁香网 | 亚洲专区在线播放 | 在线观看免费中文字幕 | 91精品视频一区二区三区 | 国产手机在线观看 | 国产99久久久国产精品 | 噜噜色官网 | 在线免费观看黄色大片 | 99精品美女| av3级在线 | 免费观看成人网 | 欧美男男激情videos | 黄色大全免费观看 | 日本中文在线观看 | 亚洲免费a | 一区二区三区在线视频111 | 欧美a性 | 日韩精品免费一区 | 久久精品一二三区白丝高潮 | 亚洲一级国产 | 一区二区三区在线看 | www.久艹 | 亚洲日本中文字幕在线观看 | 一区二区欧美在线观看 | 国产精品美女免费 | 狠狠色综合网站久久久久久久 | 久久久久久99精品 | www99久久| 久久精品久久综合 | 日韩精品中文字幕有码 | 国产色一区| 亚洲91中文字幕无线码三区 | 超碰免费观看 | 婷婷成人亚洲综合国产xv88 | 婷婷色中文字幕 | 五月婷婷爱 | 久久久久国产精品免费免费搜索 | 最近日韩中文字幕中文 | 久久久久久久久久久久久9999 | 成 人 黄 色 免费播放 | 日韩激情中文字幕 | 国产毛片久久久 | 99视频国产精品 | 国产精品无av码在线观看 | 天天射天天干天天操 | 国产精品亚洲视频 | 激情久久久久久久久久久久久久久久 | 中文字幕影片免费在线观看 | 午夜精品一区二区三区可下载 | 国产精品免费小视频 | www久久久久 | 亚洲黄网址 | 亚洲精品视频在线看 | 久久久麻豆 | 色综合久久综合 | 国产伦理久久精品久久久久_ | 一区二区三区精品在线 | 亚洲高清免费在线 | 日日草天天干 | 亚洲黄色免费电影 | 成人资源站 | 天天色天天骑天天射 | 99精品国自产在线 | 日韩激情综合 | 亚洲综合在线播放 | 免费看在线看www777 | av在线播放快速免费阴 | 亚洲伊人第一页 | 99视频网址 | 久久免费片 | 超碰在线观看av | 午夜影视av | 九草视频在线 | 成年人视频在线免费 | 韩国精品视频在线观看 | 日韩极品视频在线观看 | 天天色天天草天天射 | 在线天堂v| 99re久久精品国产 | 黄色毛片在线观看 | 999精品网 | 亚洲人精品午夜 | 日批在线看 | 国产一区二区免费在线观看 | 天天综合网天天 | 九九热久久久 | 日韩黄色免费电影 | 日韩av成人在线观看 | 免费观看全黄做爰大片国产 | 激情五月综合 | 日韩一区二区免费在线观看 | 激情五月视频 | 久久艹人人 | 精品亚洲一区二区三区 | 久久天天综合网 | 综合伊人av | 国产正在播放 | 人人操日日干 | 欧美成人精品欧美一级乱 | 99久久精品国产毛片 | 超碰人人射| 视频成人免费 | 国产麻豆视频免费观看 | 国产很黄很色的视频 | 国产免费一区二区三区网站免费 | 91久久一区二区 | 免费观看国产成人 | 国产精品一区电影 | 五月婷在线观看 | 国产国语在线 | 久久久视屏 | 激情深爱五月 | 在线三级播放 | 久久久久久久久久久免费视频 | 成人在线视频免费看 | 成人在线免费视频观看 | 日b视频在线观看网址 | 日日摸日日添日日躁av | 亚洲激情校园春色 | 午夜精品电影 | 丁香六月综合网 | 91资源在线播放 | 国产精品99久久久久久大便 | 色视频网站免费观看 | 免费在线看成人av | 国模视频一区二区 | 中文字幕亚洲高清 | 天天激情天天干 | av在线免费播放网站 | 亚洲成人精品在线 | 亚洲欧美精品一区二区 | 中文字幕在线观看完整版 | 亚洲精品视频免费观看 | 久久高清精品 | 91视频免费看片 | 欧美,日韩 | 91精品网站在线观看 | 欧美午夜理伦三级在线观看 | 97超碰在线播放 | av片中文 | 日韩免费高清在线观看 | 久久久久国产精品厨房 | 综合色亚洲 | 国产免费高清视频 | 久久久精品99 | 亚洲一区二区天堂 | 免费看成年人 | 国产一级性生活 | 婷婷久久精品 | 久久亚洲福利 | 婷婷六月天丁香 | 天天天在线综合网 | 久久短视频| 欧美日韩视频免费看 | 91一区啪爱嗯打偷拍欧美 | 免费久久99精品国产 | 欧美日韩超碰 | 亚洲国产精品一区二区久久hs | 国产精品免费一区二区 | 一级黄色大片 | 成年人免费看的视频 | 香蕉日日 | 国产精品国产毛片 | 久久伦理视频 | 亚洲国产成人在线 | 久久国产网站 | 黄色大片日本免费大片 | 久久免费看视频 | 色婷婷福利 | 三级视频国产 | 亚洲精品在线观看中文字幕 | 久久久久国产a免费观看rela | 日韩极品视频在线观看 | aav在线 | 99国产在线观看 | 国产一区二三区好的 | 欧美日韩在线视频观看 | 一区二区视频网站 | 91av在线国产 | 久久在线影院 | 在线观看小视频 | 日本成址在线观看 | 欧美91精品| 99r在线观看 | 免费a视频 | 2018亚洲男人天堂 | 99国产成+人+综合+亚洲 欧美 | 国产日本在线播放 | 麻花豆传媒一二三产区 | 国产精品女人久久久久久 | 色射爱 | 97国产精品 | 香蕉视频久久 | 免费黄色在线网站 | 天天天天爽 | 亚洲午夜大片 | 天天操,夜夜操 | 69视频在线| 国产精久久久久久久 | 中文字幕一区二区三区四区 | 国产尤物在线视频 | 激情五月综合网 | 精品视频在线视频 | 2023国产精品自产拍在线观看 | 高清av网 | 九九热精 | 国产精品99久久久久久宅男 | 综合天天色 | 99精品欧美一区二区三区黑人哦 | 欧美日韩国产精品久久 | 伊人天天色 | 天天色天天综合 | 午夜精品久久久久久久久久久久 | 中文字幕黄色网 | 在线视频精品播放 | 亚洲夜夜网 | 久草免费在线视频观看 | 成年人视频在线免费播放 | 中文字幕频道 | 亚洲另类久久 | 国产精品视频一二三 | 精品一区二区日韩 | 久久8精品 | 91免费高清视频 | 国产成人久| 亚洲三级视频 | 日韩欧美国产成人 | 欧美在线视频免费 | 免费日韩 精品中文字幕视频在线 | 日韩一级片网址 | 中文成人字幕 | 91视频91蝌蚪 | 国产在线观看你懂的 | 久久综合久久88 | 久久久久久久久爱 | 国产精品久久久久久久免费 | 国产日韩欧美在线影视 | 久久99精品热在线观看 | 国产精品福利在线观看 | 国产中文字幕网 | 亚洲国产精品va在线看黑人 | 成人网中文字幕 | 免费在线观看黄 | 午夜精品一区二区三区在线播放 | 国产成人三级一区二区在线观看一 | 久草在线视频首页 | 91在线免费播放 | 色偷偷人人澡久久超碰69 | 久久久激情网 | 久久激情精品 | av解说在线观看 | 91香蕉视频污在线 | 国产精品一区免费在线观看 | 久久在线播放 | 一区二区三区四区五区在线视频 | 日韩乱理 | av久久在线 | 福利电影一区二区 | 九九视频免费在线观看 | 91在线操 | 中文十次啦 | 色开心 | 在线免费91 | 国产成人中文字幕 | 色婷婷成人网 | 免费精品 | 亚洲午夜精品久久久 | 天天干天天射天天爽 | 国产成人a亚洲精品 | 日韩免费观看高清 | 91私密视频 | 日韩中文字幕在线观看 | 黄色av高清 | 国产成人一区二区三区影院在线 | 激情五月网站 | 国产99久久久精品 | 欧美性极品xxxx做受 | 一区二区三区 中文字幕 | 色综合久久中文字幕综合网 | 热99在线 | a v在线视频 | 99午夜| 欧美日韩在线观看一区二区三区 | 亚洲人成影院在线 | av中文字幕在线播放 | 精品亚洲一区二区三区 | 国产午夜一区 | 99精品视频观看 | 婷婷成人在线 | 天天干夜夜夜 | 91九色蝌蚪| 91麻豆网站 | 99热精品久久 | 黄色小说在线观看视频 | av3级在线 | 色综合色综合色综合 | 夜夜操网 | 国产精品免费观看视频 | 一二三久久久 |