码迷,mamicode.com
首页 > 数据库 > 详细

JDBC学习2.0——数据库表的增删改查

时间:2021-06-05 18:18:51      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:under   character   需要   mamicode   技术   encoding   string类   loading   string   

1.理解

操作数据库的sql语句需要封装到一个对象中,由这个对象带到数据库中去实现,而java为我们提供了两个接口来实现封装sql语句;

①Statement接口,它存在问题,需要拼写sql语句,而且它存在sql注入问题(列如:用户名,密码不对也可以访问数据库)在此就不细讲;

②PrepareStateme解决sql注入问题,从而引入了它的子类来代替它封装sql语句;

流程如图所示;

技术图片

 

 

 

 

2.代码实现

技术图片

 

 

 ①数据库的添加操作

          1.使用之前的创建方法四(先给出三个基本信息,再获取Driver对象,最后获取connection连接对象),获取连接对象

          2.成功连接后给出需要操作的sql语句,切记这要使用占位符(解决了sql注入问题)

          3.调用Connection连接对象的prepareStatement方法,返回一个可以封装sql语句的对象,把sql预编译

          4.填充占位符号,第一个参数是表示第几个占位符,第二个参数是具体要填充的值

          5.执行操作excute

          6.资源关闭;

 

注意:在插入操作中如果客户端和数据库的编码集不一样的话,插入数据库的文字会成问号;

解决办法:?characterEncoding=utf8 在连接的数据库后加入这个语句设置编码集为utf8然后建立数据库表时把它的字符集也设置为utf8

技术图片

 

 

 

 

 

技术图片

 

 

②数据库的修改操作(和上面类似所以简写)

         1.获取connection对象

          2.给出sql语句,切记占位符的使用

          3.获取preparestatement对象,封装预编译sql语句

          4.填充占位符

          5.执行操作

          6.资源关闭

 


 

从上述的插入和修改不难看出,有几个步奏是重复的且一样的,就是.获取connection对象,就是重复且一样的我们可以把它放在一个工具类的静态方法中,以供调用

技术图片

 

 方法一方法二都是获取一个connection对象,在这没区别;(ClassLoader.getSystemClassLoader().getResourceASStream("文件名"),在这和之前讲的第五种方法中的获取流的方式是一样的;


 

③数据库的删除

技术图片

 

 和上面两个操作一样,只是换了sql语句;

 

④为了方便我们可以设置一个方法,只给这个方法要具体操作的sql语句,和数据,就可以对数据库进行增删改通用操作;

技术图片

 

       方法参数1设置为String类型,是放sql语句的,方法的参数二是用来放具体需要填写的占位符号,因为占位符不同sql语句个数不同,所以在这的参数二的写法就理解为一个未知长度的object类型的数组;

1.先是获取connection对象连接数据库;

2.获取prepared statement对象用来预编译传入的sql语句;

3.利用一个循环,循环条件就是这个数组的长度,因为占位符号从1开使,所以setobject第一个参数要加1,数组从0开始,后面那个就没必要了

4.执行操作,关闭资源;

 

 

 

⑤数据库的查找

技术图片

数据库的查询操作相交于增删改有区别,因为查找需要返回一个查找结果,而增删改不用,所以也更复杂一些;

1.还是一样的获取connectiong连接对象

2.预编译sql语句,将其封装在preparedstatement对象中;

3.(区别开始)这不再是简单的运行,而是调用executeQuery,运行后返回一个查找结果对象,用resultset来接受;

4.调用返回结果的next方法,此方法表示如果有查询结果就返回true并指向下一条,如果下一条没有结果就返回false;

5.调用get+类型名 方法返回结果,下图是对应结果图;

技术图片

 

 

6.一般把返回结果封装在对象中,我们返回一个对象,这样的方法更好;

技术图片

 

 就像图所示一样,把表的列作为java类,表的列作为类的属性,而一条查询结果就作为一个实例对象,到时候直接返回对象就好;

技术图片

 

 这是对应studnet的对象类

 

这是输出结果(记得重写tostring方法;)

技术图片

 

JDBC学习2.0——数据库表的增删改查

标签:under   character   需要   mamicode   技术   encoding   string类   loading   string   

原文地址:https://www.cnblogs.com/zhangzheshuai/p/14849144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!