什么是JDBC
JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API,可以说是接口
-
市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,定义了JDBC API【接口】
-
sun公司只是提供了实现JDBC的API接口,数据库则由厂商负责实现。
-
对于我们来说,操作数据库都是在JDBC API【接口】上,使用不同的数据库,只要用数据库厂商提供的数据库驱动程序即可。
如何使用JDBC连接数据库
步骤:
-
导入MySQL或者Oracle数据库驱动包
-
装载数据库驱动程序
-
获取到与数据库连接
-
获取可以执行SQL语句的对象
-
执行SQL语句
-
关闭连接
导入和装载数据库驱动包
在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此
方法如下:
点击右上角的project structure
选择modules
选择上传jar架包
选择保存好的jar驱动包,上传
最后勾选激活即可
驱动包加载完后,接下来就是对数据库进行连接,连接的同时记得打开虚拟机,否则运行会报错
数据的操作
package edu.xalead;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTest {
public static void main(String[] args) {
//mysql驱动类
String driverClass = "com.mysql.jdbc.Driver";//数据库驱动
String url = "jdbc:mysql://192.168.93.88:3306/mydb";//数据库地址
String username = "root";//用户名
String password = "";//密码
//数据库连接接口
Connection conn = null;
//执行sql语句的接口
Statement st = null;
try {
//加载驱动类到虚拟机
Class.forName(driverClass);
//连接数据库
conn = DriverManager.getConnection(url,username,password);
//创建语句对象
st = conn.createStatement();
String sql = "begin;";
st.execute(sql);
sql = "update Account set account=account - 1000 where id=10010; ";
//语句对象的executeUpdate(sql)方法会返回执行成功的记录数
//注意:这个方法执行添删改等会改变数据的sql语句
int count = st.executeUpdate(sql);//添删改都用executeUpdate(sql)
sql = "update Account set account=account + 1000 where id=10086;";
st.executeUpdate(sql);
sql = "commit;";
st.execute(sql);
} catch (Exception e) {
String sql = "rollback;";
try{
st.execute (sql);
}catch (SQLException e1){
e1.printStackTrace ();
}
e.printStackTrace();
}
finally {
try{
if (st != null)
st.close ();
if (conn !=null)
conn.close ();
}catch (SQLException e2){
e2.printStackTrace ();
}
}
}
}
设置好上面的属性后,在运行时系统就会自动与数据库进行连接,连接步骤完成。
执行SQL语句的对象为:
//加载驱动类到虚拟机
Class.forName(driverClass);
//连接数据库
conn = DriverManager.getConnection(url,username,password);
//创建语句对象
st = conn.createStatement();
String sql = "begin;";
st.execute(sql);
sql = "update Account set account=account - 1000 where id=10010; ";
//语句对象的executeUpdate(sql)方法会返回执行成功的记录数
//注意:这个方法执行添删改等会改变数据的sql语句
int count = st.executeUpdate(sql);//添删改都用executeUpdate(sql)
sql = "update Account set account=account + 1000 where id=10086;";
st.executeUpdate(sql);
sql = "commit;";
st.execute(sql);
上面我们已经简单使用JDBC去访问数据库的数据了,现在我们运行一下
现在数据库里建表
运行代码
查看数据库
完成执行数据库程序!
简单的工具类
Connection对象
客户端与数据库所有的交互都是通过Connection来完成的。
常用的方法:
//创建向数据库发送sql的statement对象。
createcreateStatement()
//创建向数据库发送预编译sql的PrepareSatement对象。
prepareStatement(sql)
//创建执行存储过程的callableStatement对象
prepareCall(sql)
//设置事务自动提交
setAutoCommit(boolean autoCommit)
//提交事务
commit()
//回滚事务
rollback()
Statement对象
Statement对象用于向数据库发送Sql语句,对数据库的增删改查都可以通过此对象发送sql语句完成。
Statement对象的常用方法:
//查询
executeQuery(String sql)
//增删改
executeUpdate(String sql)
//任意sql语句都可以,但是目标不明确,很少用
execute(String sql)
//把多条的sql语句放进同一个批处理中
addBatch(String sql)
//向数据库发送一批sql语句执行
executeBatch()
ResultSet对象
ResultSet对象代表Sql语句的执行结果,当Statement对象执行executeQuery()时,会返回一个ResultSet对象
ResultSet对象维护了一个数据行的游标【简单理解成指针】,调用ResultSet.next()方法,可以让游标指向具体的数据行,进行获取该行的数据
常用方法:
//获取任意类型的数据
getObject(String columnName)
//获取指定类型的数据【各种类型,查看API】
getString(String columnName)
//对结果集进行滚动查看的方法
next()
Previous()
absolute(int row)
beforeFirst()
afterLast()