Java的Mysql使用
说明
通过Java的方式连接Mysql中的数据库,并对数据库中的数据进行增加 查询操作
使用Mysql所提供的第三方库中的类(Mysql的API) 对其进行操作
将Mysql Jar包添加到lib目录后,就可以使用其中的类对其Mysql数据库进行操作
Mysql Jar包的获取以及配置
然后jar包添加到库即可
使用步骤
Mysql Jar包中提供了很多类,如何去使用?
SUN公司将JDBC协议作为一个规范,提供给开发者, 规范的使用套路是什么?
① 加载驱动 Driver 类
原因: JDBC可以连接很多数据库,那么就需要告诉jdbc当前连接的是哪一个数据库,所以需要提供Driver类
② 创建连接对象 给定 URL、用户名、密码 等信息
③ 通过连接对象获取操作对象
④ 通过数据库操作对象,执行SQL语句获取执行结果
⑤ 如果是查询语句,那么需要对执行结果进行遍历操作
⑥ 将所有的连接及对象进行关闭操作
实例
结果:
1语文2
2数学1
3英语3
4物理4
数据库样式
JDBC中重要的接口和类
DriverManager类(驱动管理类)里面全是静态方法,我们用它来注册驱动:
Statement接口(执行sql)用于执行静态 SQL 语句并返回它所生成结果的对象:
ResultSet接口(查询结果集),sql查询语句后可以将结果封装到ResultSet中:
反射机制注册驱动(最常用的注册驱动方法)
加载和注册数据库驱动,数据库驱动由 mysql 厂商 "com.mysql.jdbc.Driver"提供
基础操作
示例1:插入操作
示例2:删除操作
示例3:从资源文件中读取连接数据库信息
将连接数据库的所有信息配置到配置文件jdbc.properties中:
实际开发中不建议把来连接数据库的信息写死到java程序中,因为用户可能不会把数据库的密码给你。
示例4:处理查询结果集(遍历查询结果)
ResultSet接口中的方法是用于遍历结果集的方法。它将指针从当前行移动到下一行,并检查是否有更多的数据可用。该方法返回一个布尔值,表示是否成功移动到下一行。
以下是关于方法的一些重要信息:
- 方法返回一个布尔值。如果存在下一行,则返回;否则,返回。
- 第一次调用方法时,将指针移到结果集的第一行(如果有)。
- 每次调用方法后,指针将根据结果集中的数据移动到下一行。
- 如果方法返回,你可以使用其他方法(如、等)来获取当前行的列值。
- 如果方法返回,表示已经到达结果集的末尾,没有更多的数据可用。
以下是一个示例代码片段,演示了如何使用方法遍历结果集:
释放资源时先释放查询结果集,再释放数据库操作对象,最后释放数据库连接对象。
sql注入现象
编写一个java程序,当输入的账户和密码与表中的数据一致时,显示“登录成功”,否则“登录失败”。
执行结果:
2、演示sql注入现象
当我输入以下账户和密码时,它也显示登录成功!!
这种现象称为sql注入(黑客经常使用),这是一个安全隐患。
为什么会出现sql注入现象?
用户输入的信息中含有sql语句的关键字,并且这些关键字参与sql语句的编译过程。导致sql语句的原意被扭曲,进而达到sql注入。
因为我们上面的sql语句被写成了 select * from t_user where loginName = ‘lll’ and loginPwd = ‘lll’ or ‘1’ = ‘1’; 这个1=1是恒成立的。
3、解决sql注入
思想:不让用户的输入信息参加编译。 要解决 SQL 注入就不能让用户输入的密码和我们的 SQL 语句进行简单的字符串拼接。
方法:使用PreparedStatement接口
(1)prepareStatement()会先将 SQL 语句发送给数据库预编译。PreparedStatement 会引用着预编译后的结果。可以多次传入不同的参数给 PreparedStatement 对象并执行。减少 SQL 编译次数,提高效率。
(2)安全性更高,没有 SQL 注入的隐患。
操作请看注释,解释代码:
三、JDBC事务
把注册驱动和获取连接封装到一个工具类中,以后就不用次次写代码都写那么多了:
在java中执行sql事务:
try {
conn = DBUtil.getConnection();
// 开启事务
conn.setAutoCommit(false);
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25916.html