JavaWeb基础知识总结. (38)

ResultSet对象表示查询结果集,只有在执行查询操作后才会有结果集的产生。结果集是一个二维的表格,有行有列。操作结果集要学习移动ResultSet内部的“行光标”,以及获取当前行上的每一列上的数据:

l boolean next():使“行光标”(游标)移动到下一行,并返回移动后的行是否存在;

l XXX getXXX(int col):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。

4 Hello JDBC

下面开始编写第一个JDBC程序

4.1 mysql数据库的驱动jar包:mysql-connector-java-5.1.13-bin.jar 4.2 获取连接

获取连接需要两步,一是使用DriverManager来注册驱动,二是使用DriverManager来获取Connection对象。

1. 注册驱动

看清楚了,注册驱动就只有一句话:Class.forName(com.mysql.jdbc.Driver),下面的内容都是对这句代码的解释。今后我们的代码中,与注册驱动相关的代码只有这一句。

DriverManager类的registerDriver()方法的参数是java.sql.Driver,但java.sql.Driver是一个接口,实现类由mysql驱动来提供,mysql驱动中的java.sql.Driver接口的实现类为com.mysql.jdbc.Driver!那么注册驱动的代码如下:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

上面代码虽然可以注册驱动,但是出现硬编码(代码依赖mysql驱动jar包),如果将来想连接Oracle数据库,那么必须要修改代码的。并且其实这种注册驱动的方式是注册了两次驱动!

JDBC中规定,驱动类在被加载时,需要自己“主动”把自己注册到DriverManger中,下面我们来看看com.mysql.jdbc.Driver类的源代码:

com.mysql.jdbc.Driver.java

public class Driver extends NonRegisteringDriver implements java.sql.Driver {

static {

try {

java.sql.DriverManager.registerDriver(new Driver());

catch (SQLException E) {

throw new RuntimeException("Can\'t register driver!");

}

}

……

}

 

com.mysql.jdbc.Driver类中的static块会创建本类对象,并注册到DriverManager中。这说明只要去加载com.mysql.jdbc.Driver类,那么就会执行这个static块,从而也就会把com.mysql.jdbc.Driver注册到DriverManager中,所以可以把注册驱动类的代码修改为加载驱动类

Class.forName(“com.mysql.jdbc.Driver”);

2. 获取连接

获取连接的也只有一句代码:DriverManager.getConnection(url,username,password),其中username和password是登录数据库的用户名和密码,如果我没说错的话,你的mysql数据库的用户名和密码分别是:root、123。

url查对复杂一点,它是用来找到要连接数据库“网址”,就好比你要浏览器中查找百度时,也需要提供一个url。下面是mysql的url:

jdbc:mysql://localhost:3306/mydb1

JDBC规定url的格式由三部分组成,每个部分中间使用逗号分隔。

l 第一部分是jdbc,这是固定的;

l 第二部分是数据库名称,那么连接mysql数据库,第二部分当然是mysql了;

l 第三部分是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,mysql的第三部分分别由数据库服务器的IP地址(localhost)、端口号(3306),以及DATABASE名称(mydb1)组成。

下面是获取连接的语句:

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb1”,”root”,”123”);

还可以在url中提供参数:

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

useUnicode参数指定这个连接数据库的过程中,使用的字节集是Unicode字节集;

characherEncoding参数指定穿上连接数据库的过程中,使用的字节集编码为UTF-8编码。请注意,mysql中指定UTF-8编码是给出的是UTF8,而不是UTF-8。要小心了!

4.3 获取Statement

在得到Connectoin之后,说明已经与数据库连接上了,下面是通过Connection获取Statement对象的代码:

Statement stmt = con.createStatement();

Statement是用来向数据库发送要执行的SQL语句的!

4.4 发送SQL增、删、改语句

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

int m = stmt.executeUpdate(sql);

其中int类型的返回值表示执行这条SQL语句所影响的行数,我们知道,对insert来说,最后只能影响一行,而update和delete可能会影响0~n行。

如果SQL语句执行失败,那么executeUpdate()会抛出一个SQLException。

4.5 发送SQL查询语句

String sql = “select * from user”;

ResultSet rs = stmt.executeQuery(sql);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzfdw.html