1.什么是JDBC
概念: Java 数据库连接,( Java Database Connectivity ,简称 JDBC )是 Java 语言 中用来规范客户端程序
如何来访问数据库的 应用程序接口 ,提供了诸如查询和更新数据库中数据的方法。 JDBC 也是 Sun
Microsystems 的商标。我们通常说的 JDBC 是面向关系型数据库的。
各数据库厂商根据 JDBC 的规范,实现自身数据库操作的功能代码,然后以 jar 包(数据库厂商提供的驱动包)的形式提供给开发人员使用,开发人员使用反射的机制创建这些具体实现类,按照JDBC 的规范来完成数据库的操作。
2.接口和JDBC规范的理解
3. 关于JDBC连接数据库的增删查的操作
junit的用法补充:junit可以使方法脱离main方法直接执行,方便进行程序测试。
3.1 创建一个数据库
3.1.1创建一个student表
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(8) NOT NULL,
sex VARCHAR(16),
bir VARCHAR(32)
)
代码运行结果如下:
3.1.2向表中插入数据
INSERT INTO student(name,sex,bir)
VALUES('库洛米','女','10月31日'),
('玉桂狗','男','3月6日'),
('hello kitty','女','11月1日'),
('帕恰狗','男','2月29日');
代码运行结果如下:
3 .2JDBC进行数据库的操作
3.2.1 先在IDEA中创建实体类:类的名字对应数据库表的名字、类的属
性对应表的字段
public class student {
//类的属性
private int id;
private String name;
private String sex;
private String bir;
//自动构造代码快捷键:alt + insert
3.3 JDBC的增删查操作
连接数据库需要配置四大参数,同时需要驱动jar包
/**
* 连接数据库需要配置四大参数,同时需要驱动jar包
*/
private String driver="com.mysql.cj.jdbc.Driver";
private String url="jdbc:mysql://127.0.0.1:3306/1028";
private String user="root";
private String password="";//自己数据库的密码
3.3.1JDBC的全查操作
/**
* 数据库的全查询操作
*/
@Test
public void testSelectAll() throws Exception {
//JDBC操作数据库的步骤
//1.首先在项目根目录创建lib文件夹,放入jdbc驱动程序,然后Add As Library
//2.加载数据库驱动,使用反射加载
Class.forName(driver);
//3.使用驱动管理来获得连接---获得一个数据库连接对象Connection
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/1028","root","root");//生成方法调用返回值的快捷键是:ctrl + alt + v
//4.使用Connection创建PreparedStatement预处理对象---PreparedStatement对象可以对sql语句预处理
String sql="select * from student";
PreparedStatement pstm = con.prepareStatement(sql);
//5.使用PreparedStatement对象执行sql语句,查询返回的是结果集,增删改返回的是影响的行数(int)
ResultSet rs = pstm.executeQuery();
//6.操作判断--增删改返回的是影响的行数(返回值是int),只有查询获得结果集(返回值ResultSet)
//定义一个集合,用来存储每一行数据(封装在了student对象中)
List<student> studentList=new ArrayList<student>();
//ResultSet结果集的游标默认指向的是表的标题行,需要让游标向下移动指向数据行
while (rs.next()){
//根据字段名称获取字段值
int id=rs.getInt("id");
String name=rs.getString("name");
String sex=rs.getString("sex");
String bir=rs.getString("bir");
System.out.println(id+"---"+name+"---"+sex+"---"+bir);
//把以上数据装载到Student对象中
student stu=new student();
stu.setId(id);
stu.setName(name);
stu.setSex(sex);
stu.setBir(bir);
//把student对象存储到List集合中
studentList.add(stu);
}
System.out.println(studentList);
//7.回收资源
if (rs!=null){
rs.close();
}
if (pstm!=null){
pstm.close();
}
if (con!=null){
con.close();
}
}
代码运行结果如下:
3.3.2JDBC的增加操作
/**
* 添加操作
*/
@Test
public void testAdd() throws Exception {
//1.导入驱动程序包
//2.使用反射加载驱动程序
Class.forName(driver);
//3.通过驱动管理获得数据库的连接对象
Connection con = DriverManager.getConnection(url,user,password);
//4.通过Connection对象获得SQL的预处理对象
String sql="insert into student(name,sex,bir) values(?,?,?)";
PreparedStatement pstm = con.prepareStatement(sql);
//后期我们还会学习通过servlet技术获取前端页面提交的数据,此处我们模拟构造数据,数据封装在student对象中
student stu=new student();
stu.setName("美乐蒂");
stu.setSex("男");
stu.setBir("4月16日");
//5.1.SQL语句有?所有需要进行传参操作
pstm.setObject(1,stu.getName());
pstm.setObject(2,stu.getSex());
pstm.setObject(3,stu.getBir());
//5.2.执行更新(增删改的操作对于数据库都叫更新操作)
int n = pstm.executeUpdate();
//6.判断受影响的行数,如果n>0表示添加成功,否则添加失败
if(n>0){
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
//7.资源的释放
if (pstm!=null){
pstm.close();
}
if (con!=null){
con.close();
}
}
代码运行结果如下:
3.3.3JDBC的删除操作
/**
*删除操作
*/
@Test
public void testDel() throws Exception {
//1.导入驱动程序包
//2.使用反射加载程序驱动包
Class.forName(driver);
//3.通过驱动管理获得数据库的连接对象
Connection con = DriverManager.getConnection(url,user,password);
//4.通过Connection对象获得SQL的预处理对象
String sql = "delete from student where id=?";
PreparedStatement pstm = con.prepareStatement(sql);
//5.1执行?的传参
int id=2;//后期这个id是浏览器传递过来的
pstm.setObject(1,id);
//5.2执行数据的更新(增删改对于数据库都是更新操作)
int n = pstm.executeUpdate();
//6.判断处理执行结束
if (n>0){
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
//7.回收资源
if (pstm!=null){
pstm.close();
}
if (con!=null){
con.close();
}
}
代码运行结果如下:
本文含有隐藏内容,请 开通VIP 后查看