黑马程序员——JAVA(JDBC)

来源:互联网 发布:mac怎么共享 编辑:程序博客网 时间:2024/06/06 01:49

                                           ------- android培训、java培训、期待与您交流! ----------

JDBC(java数据库连接)

   可以和各个数据库进行连接,极大的体现了java可移植性的设计;

   (一).JDBC驱动分类

         1..JDBC-ODBC桥驱动 (性能低) sql server

        2.JDBC本地驱动(性能高,移植性不好)使用各个数据库生产上提供的JDBC驱动程序需配置这些驱动程序,配置         classpath

       3.JDBC网络驱动 (灵活性高)

       4.本地协议纯JCBC驱动

 

   (二).JDBC的主要操作类及接口

        DriverManager        用于管理JDBC驱动程序

        Connection               与特定数据库建立连接,一个连接就是一个会话

                                       连接后可执行sql语句并获得检索

        Statement                执行静态sql语句,并获得结果

        PreparedStatement   创建一个可编译的sql语句对象,该对象可以被多次

                                       执行,提高执行效率,是statement的子接口

        ResultSet                 用于创建表示sql语句检索结果的结果集,用户通过结果集完成

                                       数据库的访问

        sql.Date                 java.util.Date的一个子集,用于表示与sql date相同的日期

                                      类型,该日期不包括时间

       Timestamp               标准java.util.Date类的扩展,用于表示sql时间戳,并增加了一个能加了个表示纳秒的时间域

        CallbleStatement 用于执行sql存储过程

 

  (三).数据库操作过程:

         1.打开数据库服务

       2.连接数据库,需输入用户名、密码

       3.操作数据库;建表,增、删、改、查

       4.关闭数据库

          DriverManager:取得数据库连接

          Connection:每一个Connection的实例化都表示一个数据库连接

          数据库的操作:StatementPreparedStatement

          数据库的查询:ResultSet

          调用存储过程:CallableStatement

 

   (四).简单的sql语句

       创建数据库:  create database数据库名;

       删除数据库:   drop database数据库名称;

       使用数据库:  USE   数据库名;

        创建表:       create table表名(

                    字段名字段类型    [DEFAULT默认值][约束]

                   字段名字段类型    [DEFAULT默认值][约束]

                    ..................

                     )

                   例:

                   CREATE TABLE user(

                     id           INT        AUTO_INCREMENT PRIMARY KEY ,

                     name              VARCHAR(30)      NOT NULL ,

                     password       VARCHAR(32)      NOT NULL ,

                     age         INT        NOT NULL ,

                     sex          VARCHAR(2) DEFAULT '' ,

                     birthday  DATE

                  ) ;

        删除表:       drop table表名

        查看表结构:    desc表名

        查看全部数据库:SHOW DATABASES;

        查看一个数据库的全部表:SHOW TABLES;

 

       对表的增、删、改、查

        INSERT INTO 表名(字段名1,字段名2,字段名3,字段名4) VALUES (value1,value2,value3,value4) ;

        DELETE FROM 表名 WHERE 字段1=value ;

        UPDATE 表名 SET 字段1=value,字段2=value WHERE字段3=value3;

        SELECT 字段1,字段2 FROM表名 ;

       模糊匹配符进行查询:

       例:SELECT * FROM user WHERE name LIKE '%m%' OR password LIKE '%m%' ;

            SELECT * FROM user WHERE name LIKE '%m%' OR password LIKE '%m%' LIMIT 10,5 ;

 (五).JDBC操作步骤

1.加载数据库驱动程序:各个数据库都会提供JDBC的驱动程序开发包,然后直接配          置到classpath路径即可;

2.连接数据库:每个数据库的地址都不一样,使用Class.forName()语句可以加载一个驱动程序加载时必须是完整的“包.类”:org.gjt.mm.mysql.Driver如果出错说明配置classpath有错

3.使用语句进行数据库操作:可以使用标准的sql语句,也可使用数据库自己提供的语句

                               驱动正常加载后,就可以通过DriverManager类进行数据库的连接操作了

                    主要方法:

                      public static Connection getConnection(String url)

                     public static Connection getConnection(String url,String user,String password)

                     mysql连接地址格式:jdbc:mysql://ip地址:端口号/数据库名称

                                                   //localhost:3306/user

      4.关闭数据库连接:数据库操作完之后需要关闭连接一释放资源。

().数据库的具体操作

       1.Statement接口:

                           数据库连接后,想要对数据库进行操作,可使用Statement接口完成,此接口可使用Connection接口提供的createStatement()方法实例化。

          常用方法:

                int executrUpdate(String sql)           执行数据库更新的sql语句

                ResultSet executeQuery(String sql)     进行数据库查询操作,并返回结果集对象

                Void addBatch(String sql)              增加一个执行的sql语句

                Void close()                        关闭Statement操作

                Boolean  execute(String sql)          执行sql语句

       2.PreparedStatement接口

PreparedStatementStatement的自己口,属于预处理操作,与直接使用Statement不同的是,PrepareStatement在操作时,是先在数据表之间准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,二十之后再进行设置

          常用方法:

               int executeUpdate()           执行设置的预处理SQL语句

               void setInt(int index,int x)    指定要设置的索引编号,并设置整数内容

               void setString(int index,String x)    指定设置的索引编号,设置字符串型内容

               void setDate(int index,Date x)   指定要设置的索引编号,并设置java.sql.Date内容  

                              在设置日期的格式时需注意:setDate()方法,此方法可以设置日期内容,是

此方法是用时,后面的Date类型变量时java.sql.Date,而不是java.util.Date

所以如果要将一个java.util.Date类型的内容变为java.sql.Date类型的内容应

该是用一下语句:

      String birthday=”2007-08-27”;

 java.util.Date temp = new SimpleDateFormat(“yyyy-MM-dd”).parse(birthday);

 java.sql.Date bir=new java.sql.Date(temp.getTime());

一般字开发应用中都不会是用Statement,因为其采用的是拼凑的sql语句形式。

    例:String sql = "INSERT INTO user(name,password,age,sex,birthday) VALUES (?,?,?,?,?) " ;

              Class.forName(DBDRIVER) ;      //加载驱动程序

              conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

              pstmt = conn.prepareStatement(sql) ;    //实例化PreapredStatement对象

              pstmt.setString(1,name) ;

              pstmt.setString(2,password) ;

              pstmt.setInt(3,age) ;

              pstmt.setString(4,sex) ;

              pstmt.setDate(5,bir) ;

              int t = pstmt.executeUpdate() ;      //执行更新

2.ResultSet接口

     是用SQL中的SELECT语句可以讲数据库的全部结果查询出来,在JDBC的操作中数据库的所有查询记录将是用ResultSet进行接收,并是用ResultSet显示内容;

     next()判断是否还有内容,取出内容用:getIntgetStringgetDategetFloat;

        去内容是可是用字段名取出,也可使用编号取出:

       根据字段名:

String sql = "SELECT id,name,password,age,sex,birthday FROM user" ;

              Class.forName(DBDRIVER) ;      //加载驱动程序

              conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

              stmt = conn.createStatement() ;

              rs = stmt.executeQuery(sql) ;

              while(rs.next()){    //依次取出数据

                     int id = rs.getInt("id") ;  //取出id列的内容

                     String name = rs.getString("name") ;   //取出name列的内容

                     String password = rs.getString("password") ; //取出password列的内容

                     int age = rs.getInt("age") ;     //取出age列的内容

                     String sex = rs.getString("sex") ;  //取出sex列的内容

                     java.util.Date d = rs.getDate("birthday") ; //取出birthday列的内容

                     System.out.print("编号:" + id + "") ;

                     System.out.print("姓名:" + name + "") ;

                     System.out.print("密码:" + password + "") ;

                     System.out.print("年龄:" + age + "") ;

                     System.out.print("性别:" + sex + "") ;

                     System.out.println("生日:" + d + "") ;

                     System.out.println("-----------------------") ;

              }

根据编号:

    String sql = "SELECT id,name,password,age,sex,birthday FROM user" ;

              Class.forName(DBDRIVER) ;      //加载驱动程序

              conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

              stmt = conn.createStatement() ;

              rs = stmt.executeQuery(sql) ;

              while(rs.next()){    //依次取出数据

                     int id = rs.getInt(1) ;      //取出id列的内容

                     String name = rs.getString(2) ;     //取出name列的内容

                     String password = rs.getString(3) ; //取出password列的内容

                     int age = rs.getInt(4) ;    //取出age列的内容

                     String sex = rs.getString(5) ; //取出sex列的内容

                     java.util.Date d = rs.getDate(6) ; //取出birthday列的内容

                     System.out.print("编号:" + id + "") ;

                     System.out.print("姓名:" + name + "") ;

                     System.out.print("密码:" + password + "") ;

                     System.out.print("年龄:" + age + "") ;

                     System.out.print("性别:" + sex + "") ;

                     System.out.println("生日:" + d + "") ;

                     System.out.println("-----------------------") ;

              }

                                                                ------- android培训、java培训、期待与您交流! ----------
原创粉丝点击