java jdbc查询数据库_Java之JDBC操作数据库

a635d0d24ef5f2adb0b68e602c921d83.png

271ec14c2304e4dcba9c36d5e890de5f.png

DBC

JDBC就是一套接口,真正执行的是jar包里得实现类,通过泛型对象来执行实现类里的方法。

步骤:

###1.导入驱动jar包到工程中

###2.编写代码注册驱动,我们要让程序知道用的是哪个驱动包

###3.获取数据库连接对象 :Connection,这个对象就是本地java代码和数据库直接的对象

###4.定义sql,将来通过一些方式把sql发送到数据库,从而达到操作sql的要求

###5.获取执行sql语句的对象:Statement

###6.执行sql,方法调用返回一个返回值,接受返回的结果

###7.处理结果

###8.释放资源

代码:

package cn.itcast.jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

/*

* JDBC

* */

public class JdbcDemo1 {

public static void main(String[] args) throws Exception {

//1,导入驱动jar包

// 1)复制mysql-connector-java-8.0.18到项目的libs目录下(mysql-connector-java-8.0.18要与mysql版本匹配,这里我用的mysql也是8.0.18版本)

// 2)右键libs选择添加为库(add as library),这一步才是真正的把jar包加入

Class.forName("com.mysql.cj.jdbc.Driver");//这是mysql8.0的更改内容,之前的mysql版本使用的是"com.mysql.jdbc.Drivar"。

// 3)获取数据库连接对象Connection类的conn

Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db3", "root", "123456");

// 4)定义sql语句

String sql = "update emp set salary = 8500 where id = 1001";

// 5)获取执行sql的对象Statement类的stmt

Statement stmt = conn.createStatement();

// 6)执行sql,executeUpdate是修改语句

int count = stmt.executeUpdate(sql);

// 7)处理结果,打印接受返回的count值

System.out.println(count);

// 8)释放资源

stmt.close();

conn.close();

}

}

效果:

运行前:

7a3389bd059b69510fb2ce7f4b9d2585.png

运行后:

61935fed33220db9a18b28f13f3e2627.png

详解JDBC各个对象

1.DriverManager:驱动管理对象

*功能:

1.注册驱动——

99c6caf426191b89ee92f3157137fab7.png

写代码使用:Class.forName("com.mysql.cj.jdbc.Driver");

那么这两个有啥关系呢?

我们把com.mysql.cj.jdbc.Driver类文件加载进内存,但是我们没有调用这个类,意味着这个类里的代码会随着类的加载而自动执行,也就是存在静态代码块来存放这些自动执行的代码。

通过查看源码发现:在com.mysql.cj.jdbc.Driver类中存在静态代码块:

bb307a911579f78537566ab0656f2974.png

代码显示它在注册驱动,而且真正注册驱动的是DriverManager,我们通过com.mysql.cj.jdbc.Driver类执行了DriverManager,这样比较简单。

从sql5开始,Class.forName("com.mysql.cj.jdbc.Driver");//sql8.0的新写法 这句话其实不需要写,因为

8b898df9a010a66c9e611eab3bb4fd8c.png

在这里相当于已经写了com.mysql.cj.jdbc.Driver这句话。

2.获取数据库连接——

f16d98198972f75ff89ec2ea1e36c087.png

这是一个静态的方法,可以通过类名直接调用。

参数:

url——指定连接的路径,IP端口与数据库的名称jdbc:mysql://ip地址(域名):端口号/数据库名称

如果连接的本机的mysql服务器,默认端口是3306,那么url可以简写为jdbc:mysql://数据库名称

user——用户名

password——密码

2.Connection:数据库连接对象

Statement stmt = conn.createStatement();这个Statement 类的stmt 可以用来执行方法,int count = stmt.executeUpdate(sql);

###1.功能:

###1.获取执行sql的对象

![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161131213-281658183.png)

![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161214542-464087519.png)

###2.管理事务

开启事务:

![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161400794-181892992.png)

调用该方法设置参数为false,即开启事务

提交事务:

![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161547203-906933181.png)

回滚事务:

![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161617501-1136743706.png)

3.执行sql的对象

1.执行sql

1.

7aa4efecb529c35fbe413941dce759e8.png

可以执行任意的sql,了解下,用的不多。

2.

87786b5854b8c00626869c72f2aa54bf.png

执行的是DML语句(DML是增删改表中数据的语句),DDL语句(create,alter,drop)语句。int类型的返回值是影响的行数。

3.

ab156ce353ad9c1372790ea648bbf095.png

执行的是DQL语句(查询语句),返回的是一个ResultSet类的结果集对象

4.ResultSet:结果集对象——封装结果集的对象

1.

0623a84af6e452de7c4011c8ce354d8a.png

next()方法,游标向下一行

默认游标:

43639fe665e9562cefefbb8541b6b3ce.png不能取数据

游标向下一行:

165e8c051917b9643799e55531ddb4ec.png可以把每一列的内容取出

获取数据的方法,一次获取(游标指向的某行中)某一列的数据。

645260d00477b890e3572991203594f7.png

getxx(),xx代表数据类型

e0b6cb0ead9025a5f3238b40c8287586.png

2.

5.PreparedStatment:执行sql的对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值