jdbc连接数据库代码理解
发布日期:2021-05-28 16:45:29 浏览次数:11 分类:技术文章

本文共 1717 字,大约阅读时间需要 5 分钟。

一、jdbc 连接数据库步骤:

1、注册驱动

告知JVM使用的是哪一个数据库的驱动。

2、获得数据库连接

使用jdbc中的类,完成对MySQL数据库的连接。

3、获得语句执行平台

通过连接对象获取对SQL语句执行者对象。

4、执行SQL语句

使用执行者对象,向数据库执行SQL语句。获取到数据库执行后的结果。

5、处理结果

6、释放资源

一、注册驱动:

使用的是java.sql.DriverManager类静态方法registerDriver(Driver driver)

Driver是一个接口,参数传递,MySQL驱动程序中的实现类

本来代码是这样的:

DreiverManager.registerDriver(new Driver());

但是由于源代码中有了这句,相当于注册了两次,再重复就有点浪费资源了。所以这里用到了一个反射技术Class.forName()将驱动类加入到内容。

正确代码:

Class.forName("com.mysql.jdbc.Driver");

二、获得数据库的连接

使用DriverManager类中静态方法

static Connection getConnection(String url,String user, String password)

返回值是Connection接口的实现类,在mysql驱动程序

url:数据库地址   "jdbc:mysql://localhost:3306/mybase";

String url=""

String name="root"数据库链接名

String password="密码" 数据库密码

Connection con=DriverManager.getConnection(url,username,password);

三、获取语句执行平台,通过数据库连接对象,获取到SQL语句的执行者对象

con对象调用方法 Statement CreateStatement() 获得Statement对象,将SQL语句发送到数据库

返回值为Statement接口的实现类对象,在mysql驱动程序中

代码:

Statement stat =con.createStatement();

四、执行SQL语句

通过执行者对象调用方法执行SQL语句,获得结果

int executeUpdate(String sql) 执行数据库中SQL语句,insert,delete,update

返回值 int,操作成功数据表多少行

int row= stat.executeUpdate("")

但是如何查询呢?

调用方法executeQuery(String sql);

返回值ResultSet接口的实现类对象,实现类在mysql驱动中。

ResultSet rs=stat.executeQuery(sql);

可以用方法executeQuery();

六、释放资源一堆close()

stat.close()

con.close();

七、使用Statement接口的弊端:

使用Statement传送数据库语句会会引起数据库注入攻击,不过Statement接口的子接口PrepareStatement接口可以有效防止注入攻击。现在一般用PrepareStatement接口来传送sql语句。

这是sql注入攻击:

String sql ="Select * from users where username=? and password=?"

用prepareStatement 一般用占位符?表示要传递的值。

PrepareStatement pst=con.prepareStatement(sql);

pst.setObject(1,user)

pst.setObject(2,pass)

通过set方法将输入的username和password。

ResultSet rs=pst.executeQuery();

在executeQuery()里不写任何东西和Statement传sql语句不同。因为前面对象已经写过了,就不必写了。

转载地址:https://blog.csdn.net/qq_33322074/article/details/79234111 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:jdbc工具类和测试类的的写法理解
下一篇:java中接口的理解

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月01日 01时17分53秒