关于jdbc的简单介绍

来源:互联网 发布:linux系统的rpm包什么 编辑:程序博客网 时间:2024/06/05 18:49

1、简介

JDBCJava Data Base Connectivity),Java数据库连接。是一种用于执行SQL语句的Java API简单来说就是通过Java去操作数据库,数据库发送SQL语句,执行增删改查等操作。我们在使用JDBC的时候只需要导入相应厂商提供的驱动包然后直接调用JDBC API即可。实际使用JDBC不同的数据库除了SQL语句以及一些配置有区别以为,大部分代码都是相同的,也就是说我们使用JDBC操作MySQL和操作Oracle代码上没有什么区别的。

2、核心类

java.sql.DriverManager

用来管理JDBC驱动和获取Connection对象的类

static Connection getConnection(String url, String user, String password):建立一个到指定数据库的连接,并返回一个Connection对象

java.sql.Connection

表示和指定数据库建立的数据库连接对象

Statement createStatement():获取一个Statement对象,用来执行没有占位符的SQL语句

void close():关闭当前的数据库连接,释放它所创建的JDBC资源

java.sql.Statement

SQL执行器,用于执行一个静态的SQL语句返回它产生的结果

ResultSet executeQuery(String sql)  

执行给定的SQL语句,并返回一个用于查询结果的ResultSet对象

int executeUpdate(String sql):执行给定的SQL语句用于更新数据库数据返回发生变化数据行数

void close():关闭Statement对象以及它对应的结果集

java.sql.ResultSet

代表通过查询数据库获取到的结果集

boolean next():将结果集的当前向前移动一行。如果以及到达最后一行的后面,则返回false

Xxx getXxx(int 列)

Xxx getXxx(string 列名)

Xxx指数据类型,例如int、doubleStringDate

给定的列号或列名返回该列的值,并将值转换为指定类型。

u void close():关闭当前的结果集

编写一个jdbc程序

1、导入驱动jar包

导入数据库厂商提供的驱动jar包,我们这里使用MySQL,所以导入MySQL的驱动:mysql-connector-java-5.1.7-bin.jar

2、注册数据库驱动

在程序中注册导入的驱动程序,每一个驱动都是java.sql.Driver的实现类,而每个实现类中都会有一个静态代码块,具体如下:

static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}}

在驱动程序的静态代码块中,会自动将驱动程序通过DriverManager进行注册,所以我们要做的只是将驱动类加载进JDK中,静态代码块将会自动执行。

//加载数据库驱动Class.forName("com.mysql.jdbc.Driver");

3、获取数据库连接
//设置url地址String url = "jdbc:mysql://localhost:3306/test";//设置用户名String username = "root";//设置用户密码String password = "root";//获取数据库连接Connection conn = DriverManager.getConnection(url,username,password);

4、获取Statement对象

获取Statement对象用来执行SQL语句,通过Connection对象的相关方法即可

//获取Statement对象Statement stat = conn.createStatement();

5、执行SQL语句

SQL语句可以通过Statement对象的executeUpdate()或executeQuery()方法即可

//创建SQL语句String sql = "INSERT INTO tb_user VALUES(null,'sunwukong')";//执行SQL语句int count = stat.executeUpdate(sql);

executeQuery()用于执行查询的方法,该方法会返回一个ResultSet对象,对象中封装了查询到的数据

//创建SQL语句String sql = "SELECT * FROM tb_user";//执行SQL语句查询信息ResultSet rs = stat.executeQuery(sql);
6、读取ResultSet中的数据

当通过JDBC做查询操作时,会返回一个ResultSet对象,我们通过数据库查询到的数据都封装在该类实例中。

ResultSet中实际上就是一个二维的表格,结构和我们从数据库中查询到的表格一样,在ResultSet中维护着一个光标,这个光标会指向表格的某一行,当光标指向某一行时,我们就可以读取当前行的数据。

ResultSet的光标默认是指向表格外的,也就是最初的ResultSet的光标,并没有指向某一行,我们需要调用next()方法使光标下移。next()方法返回一个boolean值,如果返回值为true则代表当前有可读数据,如果为false则表示数据已经全部读完了。

ResultSet中给我提供了一系列的getXxx()方法用于读取表中的数据,我们使用ResultSet时,和迭代器类似:

//创建一个while循环用于读取ResultSet中的数据while(rs.next()){//获取第一列的数据int id = rs.getInt(1);//获取第二列的数据String um = rs.getString(2);//输出数据System.out.println(id+"--"+um);}

上边的代码我们是通过列的序号来获取列的信息的。如getInt(1)获取第一列的数据并返回一个int值,getString(2)获取第二列的信息并返回一个String,注意这里的列是从1开始的,而不是0。

同样我们也可以通过列名来获取指定属性,和上边的用法类似,只不过不在传int行的列序号,而是传String型的列名。如:getInt(“id”) 获取int型的id的值,getString(“username”) 获取String型的username的值。注意这里的id和username都是表的列名,也就是表头中的内容,如果没有使用别名则以表中的名称为准,如果使用了别名则以别名为准。


7、释放资源

使用完ResultSetStatementConnection对象时,应立即调用close方法这些对象都使用了规模较大的数据结构,所以我们不应该等待垃圾回收期来处理它们。

Statement对象close()方法会自动关闭它已经打开的结果集ResultSetConnection对象的close()方法会自动关闭和它管理的Statement对象所以当我们关闭Connection对象时,StatementResultSet对象也会自动关闭,但是如果关闭时StatementResultSet还没有使用完毕的话,那么就会出问题了,所以我们在关闭这些对象时,一定要注意关闭顺序:先关ResultSetStatement、最后关Connection。

//关闭ResultSetrs.close();//关闭Statementstat.close();//关闭Connectionconn.close();

原创粉丝点击