JDBC(Java语言连接数据库)

Java database connectivity(java数据库链接)

本章讲的是java程序链接数据库的api(类,接口)

java程序可以链接不同的数据库,但是不同的数据库具体的链接细节不同,

jdbc链接数据库步骤:

1.在项目中添加java文件

JDBC 常用工具类位于 sql 包内,使用时需导入import java.sql.*
使用时可能 抛出 SQLException 异常

下载 MySQL 驱动包,解压后得到 jar 库文件:http://dev.mysql.com/downloads/connector/j/

打开 IDE,在对应项目中创建一个lib文件夹
将jdbc文件导入 jar 库文件,同时将此文件设置为库

2.加载驱动类

Class.forName("com.mysql.cj.jdbc.Driver");          // MySQL 数据库驱动

3.建立与数据库的链接,获得链接对象

// 连接本地 RUNOOB 数据库,需设置时区
static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB?useSSL=false&serverTimezone=UTC";

static final String USER = "root";            // 数据库账号
static final String PASS = "root";          // 数据库密码

Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);    // 建立连接
conn.close();                                                       // 关闭连接

4.发送SQL

Statement stmt = = conn.createStatement();         // 创建 Statement 对象

// executeQuery 执行查询操作,返回 ResultSet 结果集
ResultSet rs = stmt.executeQuery("SELECT * FROM websites"); 
// executeUpdate 执行更新操作,返回 int 数据表示受影响行数
int len = stmt.executeUpdate("DELETE * FROM websites"); 

stmt.close();                                      // 关闭 Statement 对象

预编译PreparedStatement

PreparedStatement 类继承自 Statement 类,在 JDBC 开发中用来取代前者。有以下两个优势:

可对 SQL 语句进行预编译,可以灵活地修改 SQL 语句,提高开发效率。
把用户输入单引号转义,防止恶意注入,保护数据库安全。

Connection connection = DriverManager.getConnection();
String sql = "INSERT INTO test(id,name) VALUES (?,?)";
PreparedStatement stmt = connection.preparedStatement(sql);   // 创建对象并预编译
stmt.setInt(1, 755);                                          // 在第一个占位符(?)位置插入数字
stmt.setString(2, "MrJoker");                                 // 在第二个占位符(?)位置插入字符串
stmt.executeUpdate();                                         // 更新并执行

statement和preparestatement的区别

相同点:都是向数据库发送sql

statement:将参数直接拼到sql中,要拼接字符串,写起来麻烦,安全性差(可在参数 拼接or 1=1)

preparedStatement:先用?占位,然后通过setobject方法赋值,写起来不用拼接字符串,安全可靠,在赋值时进行检测,可以防止sql注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值