一.JDBC的概念
JDBC全称Java Database Connectivity,是给Java开发的人员提供的一套进行数据库操作的工具,它提供了一种标准化的方式来连接到不同数据库的驱动程序,并且可以保证安全、跨平台和高效的数据访问。
二.JDBC连接MySql的步骤
(一)驱动准备
在连接之前必要的就是对应版本的数据库驱动程序,这个的话到官网下载一下jar包就行,官网地址
《-----MySQL驱动下载-----》下载对应版本的数据库驱动即可
是一个ZIP格式的压缩包,解压之后会得到一个文件夹,如图所示,把该文件夹放到Java项目的目录下.
(二)添加到库(这里用idea来演示)
在java项目目录下找到上面下载的驱动文件夹,右键,点击添加到库,选择下载的驱动文件,点击确认,之后选则当前模块,点击确认.
(三) 简单的连接示范
1.缺点:比如执行查询用户和密码是否存在与数据库中时,在sql语句这里有字符串的拼接,会有sql注入的风险.
String url = "jdbc:mysql://localhost:3306/schema_name"; //此处为数据库的URL
String user = "root"; //用户名
String password = "123456"; //密码
try {
// 加载MySQL驱动程序,对于高版本的驱动来说,可以不写.
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立MySQL数据库连接
Connection connection = DriverManager.getConnection(url, user, password);
// 创建Statement对象
Statement statement = connection.createStatement();
// 执行SQL查询语句
ResultSet resultSet = statement.executeQuery(" /* 此处为sql语句 */");
// 处理查询结果
while (resultSet.next()) {
int id = resultSet.getInt("id"); //数据处理示例
//resultSet.getXXX, .getXXX的数据类型要和数据库中存储的数据类型一样
}
// 关闭ResultSet、Statement和Connection对象,防止资源占用
resultSet.close();
statement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace(); //捕获报错信息并打印
}
2.改进版本
利用占位符来防止用户非法输入来篡改sql语义带来的sql注入问题。
原理是对非法字符进行转义(有兴趣可以了解一下)
String url = "jdbc:mysql://localhost:3306/schema_name";
String user = "root";
String password = "123456";
Connection con = DriverManager.getConnection(url, user, password);
String sql = "SELECT * FROM 表_name where user_name = ? and password = ?;";
//使用占位符来消除字符串拼接带来的SQL注入问题。
PreparedStatement stmt = con.prepareStatement(sql); //改用PreparedStatement
String user_name = "wangsu"; //模拟用户输入的账号和密码
String user_password = "123456";
//处理占位符 //第一个参数为第几个占位符,第二个参数为要替换占位符的内容
stmt.setString(1, user_name);
stmt.setString(2, user_password);
ResultSet rs = stmt.executeQuery(); //执行sql语句,无需再次传入sql语句
if (rs.next()) {
System.out.println("登录成功!");
} else { //处理执行语句返回的结果
System.out.println("登录失败!");
}
/*
此处省略异常处理和关闭连接
*/
以上就是jdbc连接mysql的简单教学.
标签:教程,JDBC,String,数据库,MySql,user,sql,password,name From: https://blog.csdn.net/2301_80224944/article/details/140246172