jdbc操作mysql数据库_接口简介

JDBC常用类和接口
DriverManager类

DriverManager类用来管理数据库中的所有驱动程序;是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。
此外,DriverManager类也处理诸如驱动程序登录时间限制及登录和跟踪信息的显示等事务。DriverManager类中的方法都是静态方法,所以在程序中无须对它进行实例化,直接通过类名就可以调用。
DriverManager类的常用方法如下:
setLoginTimeout()设置驱动程序试图登录到某一数据库时可以等待的最长时间,以秒为单位; println(String message)将一条消息打印到当前JDBC日志流中。
程序中使用该类的的主要功能是获取Connection对象,该类包含如下方法:
public static Connection getConnection(String url, String user, String password) throws SQLException
该方法获得url对应数据库的连接;

Connection接口

Connection接口代表与特定的数据库的连接。要对数据表中的数据进行操作,首先要获取数据库连接。Connection实例就像在应用程序与数据库之间开通了一条渠道。可以通过DriverManager类的getConnection() 方法获取Connection实例。

Connection接口的常用方法如下:

createStatement()创建Statement对象
createStatement(int resultSetType, int resultSetConcurrency) 创建一个Statement对象,该对象将生成具有给定类型、并发性和可保存性的ResultSet对象
prepareStatement() 创建预处理对象PreparedStatement
CallableStatement prepareCall(String sql) throws SQLException;该方法返回CallableStatement对象,该对象用于调用存储过程。

上面上个方法都返回用于执行sql语句的Statement对象,PreparedStatement和CallableStatement是Statement的子类,只有获得了Statement之后才可以执行sql语句;
isReadOnly() 查看当前Connection对象的读取模式是否是只读形式
commit() 使所有上一次提交、回滚后进行的更改成为持久更改,并释放此Connection对象当前持有的所有数据库锁
roolback() 取消在当前事务中进行的所有更改,并释放此Connection对象当前持有的所有数据库锁;
close() 立即释放此Connection对象的数据库和JDBC资源,而不是等待他们被自动释放。

除此之外,Connection还有如下几个用于控制事务的方法。
Savepoint setSavepoint() throws SQLException;创建一个保存点;
Savepoint setSavepoint(String name) throws SQLException;以指定名字来创建一个保存点;
void setTransactionIsolation(int level) throws SQLException;设置事务的隔离级别;
void rollback() throws SQLException;回滚事务;
void rollback(Savepoint savepoint) throws SQLException;将事务回滚到指定的保存点;
void setAutoCommit(boolean autoCommit) throws SQLException;关闭自动提交,打开事务;
void commit() throws SQLException;提交事务

Statement接口

Statement用于执行sql语句的工具接口。该对象既可以执行DDL,DCL语句,也可以用于执行DML语句,还可以用于执行sql查询。当执行sql查询时,返回查询到的结果集。该接口提供了一些方法可以实现对数据库的常用操作。

Statement接口的常用方法如下:

execute(String sql) 执行静态的SELECT语句,该语句可能返回多个结果集,如果执行后第一个结果为ResultSet对象,则返回true;如果执行后第一个结果为受影响的行数或没有任何结果,则返回false;
ResultSet executeQuery(String sql) throws SQLException; 该方法用于执行查询语句,并返回查询结果对应ResultSet对象。该方法只能用于执行查询语句。
executeUpdate() 执行给定SQL语句,该语句可以为INSERT、UPDATE或DELETE语句
clearBatch() 清空此Statement对象的当前SQL命令列表
executeBatch() 将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。数组元素的排序与SQL语句的添加顺序对应
addBatch(String sql) 将给定的SQL命令添加到此Statement对象的当前命令列表中。如果驱动程序不支持批量处理将抛出异常
close() 释放Statement实例占用的数据库和JDBC资源。

PreparedStatement接口

预编译的Statement对象,PreparedStatement是Statement的子接口,它允许数据库预编译sql语句(这些sql语句通常带有参数),以后每次只改变sql命令的参数,避免数据库每次都需要编译sql语句,无需再传入sql语句。

PreparedStatement接口继承Statement,用于执行动态的SQL语句,通过PreparedStatement实例执行的SQL语句,将被预编译并保存到PreparedStatement实例中,从而可以反复地执行该SQL语句。

PreparedStatement接口的常用方法如下:

execute() 在此PreparedStatement对象中执行SQL语句,该语句可以是任何类型的SQL语句 executeQuery() 在此PreparedStatement对象中执行SQL查询语句,返回结果为查询结果集ResultSet对象
executeUpdate() 在此PreparedStatement对象中执行SQL语句,该SQL语句必须是一个INSERT、UPDATE、DELETE语句,或者是没有返回值的DDL语句
setByte(int pIndex, byte bt) 将参数pIndex位置上设置为给定的byte型参数bt
setDouble(int pIndex, double dou) 将参数pIndex位置上设置为给定的double型参数dou
setInt(int pIndex, int x) 将参数pIndex位置上设置为给定的int型参数x
setObject(int pIndex, Object o)将参数pIndex位置上设置为给定的Object型参数值
setString(int pIndex, String str) 将参数pIndex位置上设置为给定的String型参数值。

ResultSet接口

结果集对象。该对象包含访问查询结果的方法,ResultSet可以通过列索引或列名获得列数据。它包含了如下常用方法来移动记录指针。
ResultSet 接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。

ResultSet 接口的常用方法如下:

void close() throws SQLException;释放ResultSet对象;
boolean absolute( int row ) throws SQLException;将结果集的记录指针移动到第row行,如果row是负数,则移动到倒数第row行,如果移动后的记录指针指向一条有效记录,则该方法返回true;
boolean next() throws SQLException;将结果集的记录指针定位到下一行,如果移动后的记录指针指向一条有效的记录,则该方法返回true;
boolean last() throws SQLException;将结果集的记录指针定位到最后一行,如果移动后的记录指针指向一条有效的记录,则该方法返回true;


1、加载MySQL驱动

如果需要访问数据库,首先要加载数据库驱动,数据库驱动只需在第一次访问数据库时加载一次。然后在每次访问数据库时创建一个Connection实例,获取数据库连接,这样就可以执行操作数据库的SQL语句。最后在完成数据库操作时,释放与数据库的连接。Java加载数据库驱动的方法是调用Class类的静态方法forName()。语法格式如下:Class.forName(String DriverManager)

String DRIVER = "com.mysql.jdbc.Driver";    
Class.forName(DRIVER);
2、建立连接

加载完数据库驱动即可建立数据库的连接,要连接数据库可以使用DriverManager类的静态方法getConnection()来实现,并分别将数据库的URL、数据库用户名和密码作为该方法的参数,即可建立到指定数据库的连接。

String DRIVER = "com.mysql.jdbc.Driver";   
String USER = "root"; 
String PASSWD = "root";   
Class.forName(DBDRIVER); 
Connection conn = DriverManager.getConnection(URL, USER, PASSWD);
3、数据操作(增、删、改、查)

在Java程序中,一旦建立类数据库连接,就可以使用Connection接口的createStatement()方法来获得Statement对象,也可调用prepareStatement()方法获得PreparedStatement对象,通过executeUpdate()方法来执行SQL语句,就可以向数据库添加数据了。

Statement接口的executeUpdate()或executeQuery()方法可以执行SQL语句,executeUpdate()方法用于执行数据的插入、修改或删除操作,返回影响数据库记录的条数。executeQuery()方法用于执行SELECT查询语句,将返回一个ResultSet型的结果集。通过遍历查询结果集的内容,才可获取SQL语句执行的查询结果。ResultSet对象具有指向当前数据行的光标。最初,光标被置于第一行之前,可以通过该对象的next()方法将光标移动到下一行;如果ResultSet对象没有下一行,next()方法返回false,所以可以在while循环中使用next()方法迭代结果集

## 静态查询执行操作
String sql = "select * from student"
conn = DriverManager.getConnection(URL, USER, PASSWD); 
Statement stmt = conn.createStatement();   
ResultSet rs = stmt.executeQuery(sql); 
while(rs.next()) {
    String name= rs.getString("name")
}

动态查询

String sql = "select * from student where name=?"
conn = DriverManager.getConnection(URL, USER, PASSWD); 
PreparedStatement ps = conn.prepareStatement(sql); 
ps.setString(1,"tom")
ResultSet rs = stmt.executeQuery(sql); 
while(rs.next()) {
    String name= rs.getString("name")
}

静态插入数据

## 静态插入执行操作
String sql = "insert into student(id,name,age,sex) values(1,"tom",23,"man")";
conn = DriverManager.getConnection(URL, USER, PASSWD); 
Statement stmt = conn.createStatement();   
stmt.executeUpdate(sql); 

动态插入数据

String sql = "insert into student(id,name,age,sex) values(?,?,?,?)";
conn = DriverManager.getConnection(URL, USER, PASSWD); 
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,2);
ps.setString(2,"tom");
ps.setInt(3,20);
ps.setString(4,"man");
ps.executeUpdate(sql); 

静态更新数据

## 静态更新执行操作
String sql = "update student set name="tom",age=23 where id=2;
conn = DriverManager.getConnection(URL, USER, PASSWD); 
Statement stmt = conn.createStatement();   
stmt.executeUpdate(sql); 

动态更新数据

## 动态更新执行操作
String sql = "update student set name=?,age=? where id=?;
conn = DriverManager.getConnection(URL, USER, PASSWD);    
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,"tom");
ps.setInt(2,20);
ps.setInt(2,2);
ps.executeUpdate(sql);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值