JDBC数据库接口

数据库的产生是为了解决数据持久化的问题,如何让数据安全可靠地存储,在数据库诞生之前,语言使用流方法存储数据。

JDBC是数据库存取和操作的公共接口,就是让Java连接数据库的方法,为访问不同数据库提供了统一的途径,为开发者屏蔽了细节问题,开发者只需面向JDBC规范开发即可。

基本使用

编程六步:注册驱动,获取数据库连接对象,获取数据库操作对象,执行sql语句,获取结果集,回收资源。

注册驱动
Class.forName(驱动类的限定类名)//即包名.类名,路径通常为com.mysql.cj.jdbc.Driver,原有方法为调用DriverManager,该静态方法生成对象开辟在方法区中,使用forName执行一次类加载,自动执行静态方法,且利用静态方法在类加载时加载,且只加载一次的特性,节约内存空间。
Java导入库的方法为:将jar文件直接复制到项目目录下,在工程中右击选择add as library即可。

获取数据库连接对象
Connection cnnlection=DriverManager.getCollection(url,user,password)
url定义为

jdbc:mysql://localhost:3306/数据库名?配置方法
jdbc:mysql 为规范
localhost为本机ip,127.0.0.1
3306为数据库默认端口号
配置方法一般为characterEncoding=utf8&serverTimezone=GMT%2B8
防止中文乱码和时区异常

获取数据库操作对象
Statement statement=connection.createStatemnet()

编写sql语句
statement.excuteUpdate(sql)DML语句执行Update,DQL执行Query,返回影响记录条数。
要传入变量使用'"+变量名+"'连接语句。

获取结果集
ResultSet resultSet=statement.excuteQuery(sql)返回查询结果集
读取结果集

while(resultSet.next()){
result.get(字段名);
}

回收资源
从下向上依次回收
resultSet.close()
statement.close()
connection.close()

sql注入

我们使用statement.exacuteQuery()直接传入sql语句可能会出现一个问题,就是如果登录者或者其他输入对象,在输入内容中添加了sql语句,比如drop table,也会被sql语句执行,轻则绕过登录限制,重则破坏数据库,针对这种情况,jdbc提供了更为安全的类——PreparedStatement。

PreparedStatement preparedStatement=connection.preparedStatement(sql)这里传入的sql语句的框架,需要输入的变量用?占位符暂时替代,后续在单独补上。
preparedStatement(替代的问号位置,变量)用来设置输入
后续照常执行excuteQuery等操作,这种方式可以有效防止sql注入,是更安全的传入sql语句方法。

你可能感兴趣的:(数据库,java)