**
JDBC
**
JDBC的全称呼为java database connectivity,是sun公司指定的java的数据库连接技术的简称。这篇日志我用的是mySQL数据库做的案例。
我们先来看java连接数据库的步骤:
1.导入驱动jar包
2.注册驱动
3.获取数据库连接对象
4.定义sql
5.获取执行sql语句的对象
6.执行sql,接受返回结果
7.处理结果
8.释放资源
这里先来一段代码来演示一下,后面对各个对象进行详解(jar包我已经导入了,从第二步开始)。
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//2
Class.forName("com.mysql.cj.jdbc.Driver");
//3
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/Practice_affair","root","000222abc");
//4
String sql="update account set balance=10000 where id=1";
//5
Statement stmt=conn.createStatement();
//6
int count=stmt.executeUpdate(sql);
//7
System.out.println(count);
//8
stmt.close();
conn.close();
}
打印结果
1//代表作用结果影响了数据库中的一行数据
我们看一下后台数据库

id为1的balance成功被修改为10000。
下面说一下一些有关的对象:
DriverManager:驱动管理对象
功能:
1.注册驱动
在com.mysql.cj.jdbc.Driver中存在静态代码块,其中使用了DriverManager的registerDriver方法来注册驱动
2.获取数据库连接
使用getConnection静态方法可以连接数据库,传递的第一个参数是指定连接的路径(mysql的格式:jdbc:mysql://ip地址:端口号/要连接的数据库),
若连接的是本机的数据库且端口号为3306,那么【ip地址:端口号】可以不写
Connection:数据库连接对象
功能:
1.获取执行的sql对象
Statement createStatement()
2.管理事务
开启事务:void SetAutoCommit(boolean autoCommit),参数设置为false即开启事务
提交事务:void commit()
回滚事务:void rollback()
Statement:执行sql语句的对象
功能:
1.执行sql
boolean execute(String sql):可以执行任何sql
int executeUpdate(String sql):可以执行DML(增删改数据)语句,DDL(对库的操作)语句,返回值是影响的行数
ResultSet executeQuery(String sql):执行DQL语句
还有两个有关对象,但是上面没有体现,下面我们进行对数据库中数据的INSERT,SELECT,UPDATE操作,等用到了这两个对象我们再解释。
INSERT
public static void main(String[] args) {
//在这里写的原因是要在finally代码块中执行,要是在try中定义那么检测不到
Statement stmt=null;
Connection conn=null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String sql="insert into account values(null,'simon',5000)";
conn=DriverManager.getConnection("jdbc:mysql:///Practice_affair","root","000222abc");
stmt=conn.createStatement();
int count=stmt.executeUpdate(sql);
if(count>0)
System.out.println("插入成功");
else
System.out.println("插入失败");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(stmt!=null) {//避免空指针异常
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null) {//避免空指针异常
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
结果
插入成功

UPDATE
public static void main(String[] args) {
Statement stmt=null;
Connection conn=null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String sql="update account set balance=3000 where id=3";
conn=DriverManager.getConnection("jdbc:mysql:///Practice_affair","root","000222abc");
stmt=conn.createStatement();
int count=stmt.executeUpdate(sql);
if(count>0)
System.out.println("修改成功");
else
System.out.println("修改失败");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(stmt!=null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
结果
修改成功

SELECT
public static void main(String[] args) {
Statement stmt=null;
Connection conn=null;
ResultSet rs=null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String sql="select * from account";
conn=DriverManager.getConnection("jdbc:mysql:///Practice_affair","root","000222abc");
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
//处理结果:
while(rs.next()) {
int id=rs.getInt(1);
String name=rs.getString(2);
double balance=rs.getDouble(3);
System.out.println("id:"+id+" NAME:"+name+" balance:"+balance);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(stmt!=null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
结果
id:1 NAME:jack balance:10000.0
id:2 NAME:eden balance:1500.0
id:5 NAME:james balance:1000.0
id:6 NAME:simon balance:5000.0
这里出现了一个新的对象ResultSet
ResultSet:结果集对象,封装查询结果
功能:
拿到数据库中的数据并
boolean next():游标向下移动一行
若下一行有数据返回true,没有返回false
XXX getXXX(参数):获取数据(XXX代表数据类型,比如int getInt(),String getString())
参数分为两种:
int类型的参数,代表列的编号,从1开始
String类型的参数,代表列的名称
这次先到这里,这篇文章本来要一次性说完JDBC,但是发现内容有点多,剩下的明天说完。
本文介绍了Java Database Connectivity (JDBC),详细讲解了使用JDBC连接MySQL数据库的步骤,包括导入驱动、注册驱动、获取连接、定义SQL、执行SQL以及处理结果。通过示例代码展示了如何注册驱动、创建连接、执行INSERT、UPDATE和SELECT语句,并对Connection、Statement和ResultSet对象进行了说明。由于内容较多,剩余部分将在后续文章中继续阐述。
909

被折叠的 条评论
为什么被折叠?



