Java之JDBC

作者: AlgorithmIsSoul | 来源:发表于2018-05-07 01:22 被阅读95次

    今天我学习了JDBC中一部分知识

    下面是我对今天学习JDBC部分知识的总结:

    JDBC的全称:Java Database Connectivity

    意为:Java 数据库 连接

    这是一种执行SQL语句的API

    数据库厂商自己实现了JDBC这套接口,我们称之为  数据库驱动

    在java中

    1、我们首先需要装载驱动类.以mysql为例,代码如下

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

    注意,我们必须先导入JDBC驱动jar包,jdbc驱动jar包可以在nysql官网下载,为了方便,这里提供了链接

    https://dev.mysql.com/downloads/connector/j/

    选择Platform Independent  然后选择下载。例如ZIP形式的下载。

    然后将jar包导入到项目中即可

    注意,老版的加载驱动类是com.mysql.jdbc.Driver,但是,我使用这段代码的时候,编译器报错了,并建议我换成新的驱动"com.mysql.cj.jdbc.Driver" 我认为这可能与我的jar包版本有关(我的jar包版本是8.0.11)

    2、建立连接

    Connection conn=null;

    conn=DriverManager.getConnection(字符串参数1,字符串参数2,字符串参数3);

    其中,字符串参数3是你的数据库登录密码

    字符串参数2是数据库用户名

    字符串参数1是数据库的位置

    老版的是这样(以本机为例)

    字符串参数1:"jdbc:mysql://localhost:3306/数据库名";

    字符串参数2:"root";

    字符串参数3:"密码";

    同样,我使用这段代码,编译器也报错了,需要我设置时区等。

    因此,将字符串参数1替换为:"jdbc:mysql://localhost:3306/mysql2?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=false";

    编译通过。

    3、建立连接之后,就可以进行相关SQL语句注入了

    Statement是一个接口,prepareStatement是Statement的一个子接口。由于Statement存在SQL注入的安全问题以及效率问题,因此我们更常用的是PrepareStatement接口。

    代码如下

    PrepareStatement ps=conn.prepareStatement(sql语句);

    例如

    /"假设已知有一张mytable1表,字段为age,类型为int  字段为Date1,类型为Date

    */

    String sql1="insert into mytable1(age,Date1) values(?,?)";

    //其中的?叫做占位符。

    PrepareStatement ps=conn.prepareStatement(sql1);

    下面,通过调用一些方法来替换占位符

    ps.setInt(1,18);

    ps.setDate(2,new java.sql.Date(System.currentTimeMillis()));

    //这里的Date使用的是java.sql包的

    //其中setXXX方法中的第一个参数代表的是问号的位置。

    /*其实,如果不知道原表中字段的类型,也可以使用setObject(Index,Object obj)这个方法。简单粗暴*/

    接着,调用ps.executeUpdate()方法执行那段插入语句。这个executeUpdate()方法运用于insert/delete/update语句的执行。该方法返回影响的行数,所以这里接收一下

    int row=ps.executeUpdate();

    这样就完成了插入操作。

    如果我们使用的是查询操作。如

    String sql2="select * from mytable1";

    PrepareStatement ps2=conn.prepareStatement(sql2);

    然后调用executeQuery()方法执行查询语句

    注意,该方法返回一个ResultSet结果集的实现类。  ResultSet是一个接口。

    ResultSet set =ps2.executeQuery();

    我们可以调用next()方法。这个方法判断是否有下一个,返回布尔值。类似于游标

    另外,还有getInt(int colum) getDouble(int colum)方法等等,其中colum是列数。这要求我们必须事先知道所查询的所有列 ,某一列在第几列,是什么类型。

    我们可以使用如下方法遍历

    while(set.next()){

    System.out.println(set.getInt(列数)+"****"+set.getDouble(列数));

    }

    最后,是关闭操作

    关闭的顺序应该是(如果有的话)

    ResultSet-->Statment-->Connection这样的关闭顺序。且必须分开写,也就是三个try catch语句

    /*以上内容均为本人学习后总结,全为手打,难免有些缺漏和错误,欢迎指正或给出建议,谢谢*/

    相关文章

      网友评论

        本文标题:Java之JDBC

        本文链接:https://www.haomeiwen.com/subject/rngprftx.html