乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JDBC詳解

       鳳舞天煌 2007-12-13
       

      什么是JDBC?

      Java語言訪問數(shù)據(jù)庫的一種規(guī)范,是一套API

      JDBC (Java Database Connectivity) API,即Java數(shù)據(jù)庫編程接口,是一組標(biāo)準(zhǔn)的Java語言中的接口和類,使用這些接口和類,Java客戶端程序可以訪問各種不同類型的數(shù)據(jù)庫。比如建立數(shù)據(jù)庫連接、執(zhí)行SQL語句進(jìn)行數(shù)據(jù)的存取操作。

       

         JDBC規(guī)范采用接口和實現(xiàn)分離的思想設(shè)計了Java數(shù)據(jù)庫編程的框架。接口包含在java.sqljavax.sql包中,其中java.sql屬于JavaSE,javax.sql屬于JavaEE。這些接口的實現(xiàn)類叫做數(shù)據(jù)庫驅(qū)動程序,由數(shù)據(jù)庫的廠商或其它的廠商或個人提供。

       

         為了使客戶端程序獨立于特定的數(shù)據(jù)庫驅(qū)動程序,JDBC規(guī)范建議開發(fā)者使用基于接口的編程方式,即盡量使應(yīng)用僅依賴java.sqljavax.sql中的接口和類。

       

      JDBC驅(qū)動程序:

      什么是JDBC驅(qū)動程序?

      這些是各個數(shù)據(jù)庫廠家根據(jù)JDBC的規(guī)范制作的JDBC實現(xiàn)類

      JDBC驅(qū)動程序的四種類型:

      1.       第一種類型的驅(qū)動程序的實現(xiàn)是通過將JDBC的調(diào)用全部委托給其它編程接口來實現(xiàn)的,比如ODBC。這種類型的驅(qū)動程序需要安裝本地代碼庫,即依賴于本地的程序,所以便攜性較差。比如JDBC-ODBC橋驅(qū)動程序

      2.       第二種類型的驅(qū)動程序的實現(xiàn)是部分基于Java語言的。即該驅(qū)動程序一部分是用Java語言編寫,其它部分委托本地的數(shù)據(jù)庫的客戶端代碼來實現(xiàn)。同類型1的驅(qū)動一樣,該類型的驅(qū)動程序也依賴本地的程序,所以便攜性較差

      3.       第三種類型的驅(qū)動程序的實現(xiàn)是全部基于JAVA語言的。該類型的驅(qū)動程序通常由某個中間件服務(wù)器提供,這樣客戶端程序可以使用數(shù)據(jù)庫無關(guān)的協(xié)議和中間件服務(wù)器進(jìn)行通信,中間件服務(wù)器再將客戶端的JDBC調(diào)用轉(zhuǎn)發(fā)給數(shù)據(jù)庫進(jìn)行處理

      4.       第四種類型的驅(qū)動程序的實現(xiàn)是全部基于JAVA語言的。該類型的驅(qū)動程序中包含了特定數(shù)據(jù)庫的訪問協(xié)議,使得客戶端可以直接和數(shù)據(jù)庫進(jìn)行通信

       

      JDBC類結(jié)構(gòu):

                                 DriverManager

       

      Driver                               Driver

       

      Connection                         Connection

       

      Statement                                  Statement

       

      Resultset                                    Resultset

       

      DriverManager:這個是一個實現(xiàn)類,它是一個工廠類,用來生產(chǎn)Driver對象的

      這個類的結(jié)構(gòu)設(shè)計模式為工廠方法

      Driver:這是驅(qū)動程序?qū)ο蟮慕涌?/span>,它指向一個實實在在的數(shù)據(jù)庫驅(qū)動程序?qū)ο?/span>,那么這個數(shù)據(jù)庫驅(qū)動程序?qū)ο笫菑哪睦飦淼哪?/span>?

      DriverManager工廠中有個方法:getDriver(String URL),通過這個方法可以得到驅(qū)動程序?qū)ο?/span>,這個方法是在各個數(shù)據(jù)庫廠商按JDBC規(guī)范設(shè)計的數(shù)據(jù)庫驅(qū)動程序包里的類中靜態(tài)實現(xiàn)的,也就是在靜態(tài)塊中

      Connection:這個接口可以制向一個數(shù)據(jù)庫連接對象,那么如何得到這個連接對象呢?

      是通過DriverManager工廠中的getConnection(String URL)方法得到的

      Statement:用于執(zhí)行靜態(tài)的SQL語句的接口,通過Connection中的createStatement方法得到的

      Resultset:用于指向結(jié)果集對象的接口,結(jié)果集對象是通過Statement中的execute等方法得到的

       

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

      1.     得到數(shù)據(jù)庫驅(qū)動程序

      2.     創(chuàng)建數(shù)據(jù)庫連接

      3.     執(zhí)行SQL語句

      4.     得到結(jié)果集

      5.     對結(jié)果集做相應(yīng)的處理(,,,)

      6.     關(guān)閉資源:這里釋放的是DB中的資源

       

        

      設(shè)置classpath:

      1.     java文件中起的包名一定要是工程基目錄下的子目錄,classpath:基目錄

      2.     .jar,需要將這個.jar包的路徑包括這個文件的全名添加到classpath中來

      Oracle連接字符串的書寫格式:

      “oracle:jdbc:thin:@ip:1521: 數(shù)據(jù)庫名”,”數(shù)據(jù)庫用戶名”,”數(shù)據(jù)庫密碼

       

      簡單的例子:

      package moudule1.first;

       

      import java.sql.*;

       

      public class FirstJdbc

      {

            public static void main(String[] args)

            {

                       String sql="select * from yuchen_user";

                       Connection con=null;

                       Statement st=null;

                       ResultSet rs=null;

                      

             try

             { 

                       Class.forName("oracle.jdbc.driver.OracleDriver");

                       con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:name", "scott","tiger");

                       st=con.createStatement();

                       rs=st.executeQuery(sql);

                       while(rs.next())

                       {

                                  System.out.println(rs.getInt("id"));

                                  System.out.println(rs.getString("name"));

                       }

             }catch(Exception e)

             {

                       e.printStackTrace();

             }finally

             {

                       try

                       {

                            con.close();

                       }catch(Exception e)

                       {}

                      

                       try

                       {

                            st.close();

                       }catch(Exception e)

                       {

                       }

                      

                       try

                       {

                            rs.close();

                       }catch(Exception e)

                       {

                       }

                           

             }

       

                      

            }

           

      }

       

       

      常用數(shù)據(jù)庫的驅(qū)動程序及JDBC URL:

      Oracle數(shù)據(jù)庫:

      驅(qū)動程序包名:ojdbc14.jar

       驅(qū)動類的名字:oracle.jdbc.driver.OracleDriver

       JDBC URLjdbc:oracle:thin:@dbip:port:databasename

       說明:驅(qū)動程序包名有可能會變

             JDBC URL中黑色字體部分必須原封不動的保留,為該驅(qū)動識別的URL格式。紅色字體部分需要根據(jù)數(shù)據(jù)庫的安裝情況填寫。其中各個部分含義如下:

              dbip 為數(shù)據(jù)庫服務(wù)器的IP地址,如果是本地可寫:localhost127.0.0.1。

              port 為數(shù)據(jù)庫的監(jiān)聽端口,需要看安裝時的配置,缺省為1521。

              databasename 為數(shù)據(jù)庫的SID,通常為全局?jǐn)?shù)據(jù)庫的名字。

              舉例如果要訪問本地的數(shù)據(jù)庫allandb,端口1521,那么URL寫法如下:

             jdbc:oracle:thin:@localhost:1521:allandb 下載地址如下:

      http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html

       

      SQL Server數(shù)據(jù)庫

         驅(qū)動程序包名:msbase.jar mssqlserver.jar msutil.jar

         驅(qū)動類的名字:com.microsoft.jdbc.sqlserver.SQLServerDriver

         JDBC URLjdbc:microsoft:sqlserver://dbip:port;DatabaseName=databasename

         說明:驅(qū)動程序包名有可能會變

              JDBC URL中黑色字體部分必須原封不動的保留,為該驅(qū)動識別的URL格式。紅色字體部需要根據(jù)數(shù)據(jù)庫的安裝情況填寫。其中各個部分含義如下:

             dbip 為數(shù)據(jù)庫服務(wù)器的IP地址,如果是本地可寫:localhost127.0.0.1。

              port 為數(shù)據(jù)庫的監(jiān)聽端口,需要看安裝時的配置,缺省為1433。

             databasename –數(shù)據(jù)庫的名字。

             舉例如果要訪問本地的數(shù)據(jù)庫allandb,端口1433,那么URL寫法如下:

             jdbc: microsoft: sqlserver:@localhost:1433; DatabaseName =allandb

             下載地址:http://www.microsoft.com/downloads/details.aspx

       

       MySQL數(shù)據(jù)庫

         驅(qū)動程序包名:mysql-connector-java-3.1.11-bin.jar

         驅(qū)動類的名字:com.mysql.jdbc.Driver

         JDBC URLjdbc:mysql://dbip:port/databasename

         說明:驅(qū)動程序包名有可能會變

              JDBC URL中黑色字體部分必須原封不動的保留,為該驅(qū)動識別的URL格式。紅色字體部需要根據(jù)數(shù)據(jù)庫的安裝情況填寫。其中各個部分含義如下:

              dbip 為數(shù)據(jù)庫服務(wù)器的IP地址,如果是本地可寫:localhost127.0.0.1。

              port 為數(shù)據(jù)庫的監(jiān)聽端口,需要看安裝時的配置,缺省為3306。

              databasename –數(shù)據(jù)庫的名字。

              舉例如果要訪問本地的數(shù)據(jù)庫allandb,端口1433,那么URL寫法如下:

             jdbc:mysql://localhost:3306/allandb

         下載地址:http://dev./downloads/connector/j/

       

      Access數(shù)據(jù)庫

         驅(qū)動程序包名:該驅(qū)動程序包含在JavaSE中,不需要額外安裝。

         驅(qū)動類的名字:sun.jdbc.odbc.JdbcOdbcDriver

         JDBC URLjdbc:odbc:datasourcename

         說明:該驅(qū)動只能工作在Windows系統(tǒng)中,首先需要在操作系統(tǒng)中建立一個可以訪問Access數(shù)據(jù)庫的本地數(shù)據(jù)源(ODBC),如果名字為allandb,那么URL寫法如下:

              jdbc:odbc:allandb

       

      PreparedStatement接口:

      預(yù)編譯的sql語句對象

      作用: 解決了書寫sql語句時一些特殊的字符與sql保留字符沖突的問題,非常方便

      /**

      *知識點:

      *PreparedStatement接口及方法的使用

      *程序目標(biāo):

      *java文件:

      *PreparedInsert.java:連接數(shù)據(jù)庫,插入一條數(shù)據(jù)

      *JdbcUtil.java:實現(xiàn)一個工具類,功能:1.連接數(shù)據(jù)庫 2.關(guān)閉資源

      */

       

      package moudule1.preparedstatement;

       

      import java.sql.*;

      import moudule1.com.*;

       

      public class PreparedInsert

      {

            public static void main(String[] args)

            {

                 String sql="insert into yuchen_user (id,name) values (?,?)";

                 System.out.println(sql);

                

                 Connection con=null;

                 PreparedStatement ps=null;

                

                 try{

                       con=JdbcUtil.getConnection();

                       ps=con.prepareStatement(sql);

                      

                       ps.setInt(1,2);

                       ps.setString(2,"zhangsan");

                       ps.executeUpdate();

                      

                       ps.setInt(1,3);

                       ps.setString(2,"lisi");

                       ps.executeUpdate();

                      

                 }catch(Exception e){

                       e.printStackTrace();

                 }finally{

                       JdbcUtil.close(con,ps);

                       }

                 }

            }

       

      package moudule1.com;

       

      import java.sql.*;

       

      public class JdbcUtil{

           

            public static Connection getConnection() throws Exception{

                 Class.forName("oracle.jdbc.driver.OracleDriver");

             return DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:name", "scott","tiger");

                 }

                

            public static void close(Connection con,Statement st){

                

                 close(con);

                 close(st);

                

                 }

                

            public static void close(Connection con,Statement st,ResultSet rs){

                

                

                 close(con,st);

                 close(rs);

                

                 }

                

            public static void close(Connection con){

                 try{

                      

                       con.close();

                      

                 }catch(Exception e){

                      

                      

                       }

                

                 }

                

            public static void close(Statement st){

                

                 try{

                      

                       st.close();

                      

                 }catch(Exception e){

                      

                       }

                 }

                

            public static void close(ResultSet rs){

                

                 try{

                      

                       rs.close();

                      

                 }catch(Exception e){

                      

                       }

                

                 }

           

            }

           

      數(shù)據(jù)庫的增刪改查的例子:

      /**

      *知識點:

      *JDBC+SQL+ORACLE

      *程序目標(biāo):

      *UserDao.java:實現(xiàn)了數(shù)據(jù)庫的增刪改查

      *JdbcUtil.java:工具類,有連庫和關(guān)閉資源的方法

      */

       

      package moudule1.idus;

       

      import java.sql.*;

      import moudule1.com.*;

       

      public class UserDao{

           

            private String sql;

            private Connection con;

            private Statement st;

            private ResultSet rs;

           

            public UserDao(){

                 sql=null;

                 con=null;

                 st=null;

                 rs=null;

                 }

           

            public void insert(){

                

                 sql="insert into yuchen_user (id,name) values(";

                 sql+="4,‘zhouwu‘)";

                 System.out.println(sql);

                

                 try{

                      

                 con=JdbcUtil.getConnection();

                 st=con.createStatement();

                 st.executeUpdate(sql);

                

                 }catch(Exception e){

                      

                       e.printStackTrace();

                      

                 }finally{

                      

                       JdbcUtil.close(con,st);

                      

                       }

                

                 }

                

                

            public void delete(){

                

                 sql="delete from yuchen_user where id=2";

                 System.out.println(sql);

                

                 try{

                      

                       con=JdbcUtil.getConnection();

                  st=con.createStatement();

                  st.executeUpdate(sql);

                      

                 }catch(Exception e){

                      

                       e.printStackTrace();

                      

                 }finally{

                      

                       JdbcUtil.close(con,st);

                      

                       }

                 }

                

                

            public void update(){

                

                 sql="update yuchen_user set name=‘liumang‘ where id=1";

                 System.out.println(sql);

                

                 try{

                      

                       con=JdbcUtil.getConnection();

                  st=con.createStatement();

                  st.executeUpdate(sql);

                      

                 }catch(Exception e){

                      

                       e.printStackTrace();

                      

                 }finally{

                      

                       JdbcUtil.close(con,st);

                      

                       }

                 }

                

                

            public void select(){

                

                 sql="select * from yuchen_user";

                 System.out.println(sql);

                

                 try{

                      

                       con=JdbcUtil.getConnection();

                  st=con.createStatement();

                   rs=st.executeQuery(sql);

                  

                  while(rs.next()){

                    

                     System.out.println(rs.getInt(1));

                     System.out.println(rs.getString(2));

                    

                     }

                      

                 }catch(Exception e){

                      

                       e.printStackTrace();

                      

                 }finally{

                      

                       JdbcUtil.close(con,st,rs);

                      

                       }

                

                 }

                

                

            public static void main(String[] args){

                

                 UserDao ud=new UserDao();

                 ud.select();

                 ud.insert();

                 ud.select();

                 ud.update();

                 ud.select();

                 ud.delete();

                 ud.select();

                 }

            }

       

      一些常用的方法:

      /**

      *知識點:

      *execute方法,getResultSet(),getUpdateCount()

      *程序目標(biāo):

      *JdbcUtil.java:工具類,連接數(shù)據(jù)庫,關(guān)閉資源

      *sqlExecutor.java:命令行參數(shù)輸入sql語句,并執(zhí)行該語句

      */

      package moudule1.fangfa;

       

      import java.sql.*;

      import moudule1.com.*;

       

      public class sqlExecutor{

           

            public static void main(String[] args){

                

                 Connection con=null;

                 Statement st=null;

                

                 try{

                      

                       con=JdbcUtil.getConnection();

                       st=con.createStatement();

                       boolean str=st.execute(args[0]);

                      

                       if(str){

       

                            ResultSet rs=st.getResultSet();

                           

                            while(rs.next()){

                                  System.out.println(rs.getInt("id")+":"+rs.getString("name"));

                                  }

                                 

                                  rs.close();

                           

                       }else{

                            int row=st.getUpdateCount();

                            System.out.println(row);

                            }

                      

                 }catch(Exception e){

                      

                       e.printStackTrace();

                      

                 }finally{

                      

                       JdbcUtil.close(con,st);

                      

                       }

                 }

            }

      2. 補充
        JDBC連接MySQL

      加載及注冊JDBC驅(qū)動程序

      Class.forName("com.mysql.jdbc.Driver");

      Class.forName("com.mysql.jdbc.Driver").newInstance();

      JDBC URL 定義驅(qū)動程序與數(shù)據(jù)源之間的連接

      標(biāo)準(zhǔn)語法:

      <protocol(主要通訊協(xié)議)>:<subprotocol(次要通訊協(xié)議,即驅(qū)動程序名稱)>:<data source identifier(數(shù)據(jù)源)>

      MySQLJDBC URL格式:

      jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][&param2=value2]….

       

      示例:jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password

       

      常見參數(shù):

      user                       用戶名

      password                  密碼

      autoReconnect                  聯(lián)機(jī)失敗,是否重新聯(lián)機(jī)(true/false

      maxReconnect              嘗試重新聯(lián)機(jī)次數(shù)

      initialTimeout               嘗試重新聯(lián)機(jī)間隔

      maxRows                   傳回最大行數(shù)

      useUnicode                 是否使用Unicode字體編碼(true/false

      characterEncoding          何種編碼(GB2312/UTF-8/…

      relaxAutocommit            是否自動提交(true/false

      capitalizeTypeNames        數(shù)據(jù)定義的名稱以大寫表示

      建立連接對象

      String url="jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password";

      Connection con = DriverManager.getConnection(url);

      建立SQL陳述式對象(Statement Object

      Statement stmt = con.createStatement()

      執(zhí)行SQL語句

      executeQuery()

      String query = "select * from test";

      ResultSet rs=stmt.executeQuery(query);

      結(jié)果集ResultSet

      while(rs.next())

      {rs.getString(1);rs.getInt(2);}

      executeUpdate()

      String upd="insert into test (id,name) values(1001,xuzhaori)";

      int con=stmt.executeUpdate(upd);

      execute()

      示例:

      try{
      }

      catch(SQLException sqle)

      {

      }

      finally

      {

      }

       

      Java類型和SQL類型 技術(shù)手冊P421

      PreparedStatement(預(yù)編語句)

      PreparedStatement stmt = conn.prepareStatement("insert into test(id,name)values(?,?)");

      stmt.setInt(1,id);

      stmt.setString(2,name);

      注:一旦設(shè)定語句的參數(shù)值后,就可以多次執(zhí)行改語句,直到調(diào)用clearParameters()方法將他清除為止

      CallableStatement(預(yù)儲程序)技術(shù)手冊P430

      JDBC2.0使用

      ResultSet對象中的光標(biāo)上下自由移動

      Statement stmt = con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);

      ResultSet rs=stmt.executeQuery("select * from test");

       

      public Statement createStatement(int resultSetType,int resultSetConcuttency) throws SQLException

       

      resultSetType

      TYPE_FORWARD_ONLY            只能使用next()方法。

      TYPE_SCROLL_SENSITIVE        可以上下移動,可以取得改變后的值。

      TYPE_SCROLL_INSENSITIVE      可以上下移動。

      resultSetConcuttency

      CONCUR_READ_ONLY        只讀

      CONCUR_UPDATABLE        ResultSet對象可以執(zhí)行數(shù)據(jù)庫的新增、修改、和移除

       

      直接使用ResultSet對象執(zhí)行更新數(shù)據(jù)

      新增數(shù)據(jù)

      Statement stmtcon.createStatementResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE;

      ResultSet uprs=stmt.executeQuery("select * from test");

      uprs.moveToInsertRow();

      uprs.updateInt(1,1001);

      uprs.updateString(2,"許召日");

      uprs.insertRow;

      更新數(shù)據(jù)

      Statement stmtcon.createStatementResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE;

      ResultSet uprs=stmt.executeQuery("select * from test");

      uprs.last();

      uprs.updateString("name","xuzhaori");

      uprs.updateRow;

      刪除數(shù)據(jù)

      Statement stmtcon.createStatementResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE;

      ResultSet uprs=stmt.executeQuery("select * from test");

      uprs.absolute(4);

      uprs.deleteRow();

       

      批處理

      con.setAutoCommit(false);  關(guān)閉自動認(rèn)可模式

      Statement stmt=con.createStatement();

      int[] rows;

      stmt.addBatch("insert into test values(1001,xuzhaori)");

      stmt.addBatch("insert into test values(1002,xuyalin)");

      rows=stmt.executeBatch();

      con.commit();  沒有任何錯誤,執(zhí)行批處理stmt.executeBatch();

       

      JNDI-數(shù)據(jù)源(Data Source)與連接池(Connection Pool

      TomcatJDBC數(shù)據(jù)源設(shè)置  技術(shù)手冊P439

      連接池工具-Proxool Var 0.8.3 技術(shù)手冊P446

      設(shè)置web.xml

      <?xml version="1.0" encoding="ISO-8859-1"?>

      <!--<?xml version="1.0" encoding="GB2312"?>-->

       

      <web-app xmlns="http://java./xml/ns/j2ee"

      xmlns:xsi="http://www./2001/XMLSchema-instance"

      xsi:schemaLocation="http://java./xml/ns/j2ee/web-app_2_4.xsd"

      version="2.4">

      ….

      <servlet>

      <servlet-name>ServletConfigurator</servlet-name>

      <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>

       

      <init-param>

      <param-name>propertyFile</param-name>

      <param-value>WEB-INF/classes/Proxool.properties</param-value>

      </init-param>

      <load-on-startup>1</load-on-startup>

      </servlet>

      后端統(tǒng)計端口添加下列

      <servlet>

      <servlet-name>Admin</servlet-name>

      <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>

      </servlet>

       

      <servlet-mapping>

      <servlet-name>Admin</servlet-name>

      <url-pattern>/Admin</url-pattern>

      </servlet-mapping>

       

      ….

       

      </web-app>

       

      配置Proxool.properties

      jdbc-0.proxool.alias=JSPBook

      jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver

      jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/sample_db?user=root&password=browser&useUnicode=true&characterEncoding=UTF-8

      jdbc-0.proxool.maximum-connection-count=10

      jdbc-0.proxool.prototype-count=4

      jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE

      jdbc-0.proxool.verbose=true

      jdbc-0.proxool.statistics=10s,1m,1d    后端統(tǒng)計接口添加此行

      jdbc-0.proxool.statistics-log-level=DEBUG

      使用Proxool連接池

      Connection con = DriverManager.getConnection("proxool.JSPBook");

      Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

      String query = "SELECT * FROM employee";

      ResultSet rs = stmt.executeQuery(query);


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多