一、布置jdbc
使用Maven的好处就是我们可以不需要手动导包,只需要添加maven依赖即可
<!--连接数据库-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
版本取决于你的mysql版本 我的是8.0 所以我用8.0.16的jar包
然后使用IDEA链接数据库
然后我们就算是在IEDA上布置了mysql
二、编写并执行sql语句
首先我们需要在数据库中创建一张表 方便我们查询和更新数据
然后就是编写sql 这里我写了两种不同的方式 他们都可以实现数据的查询和更新 但是第一种方法不安全 可以通过sql注入来实现破环的目的 所以我推荐大家使用第二种方法
第一种
package com.llf;
import java.sql.*;
public class TestJdbc {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1、配置文件 mysql8.0的版本要在连接数据库的后面加上时区 ?serverTimezone=UTC
String url="jdbc:mysql://localhost:3306/mydb1?serverTimezone=UTC";
String username="root";
String password="123456";
//2、加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//3、连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
//4、向数据库发送sql的对象statement 来完成CRUD
Statement statement = connection.createStatement();
//5、编写sql
String sql="select * from user";
//6、执行sql 返回一个resultSet结果集
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()){
System.out.println("id:"+resultSet.getObject("id"));
System.out.println("name:"+resultSet.getObject("name"));
System.out.println("password:"+resultSet.getObject("password"));
System.out.println("email:"+resultSet.getObject("email"));
System.out.println("birthday:"+resultSet.getObject("birthday"));
}
//7、关闭链接 先生成的后关闭
resultSet.close();
statement.close();
connection.close();
}
}
通过结果我们可以看出来 已经成功了
但是它是不安全 具体sql注入 大家可以自行百度
第二种
package com.llf;
import java.sql.*;
public class TestJdbc1 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1、配置文件 mysql8.0的版本要在连接数据库的后面加上时区 ?serverTimezone=UTC
String url="jdbc:mysql://localhost:3306/mydb1?serverTimezone=UTC";
String username="root";
String password="123456";
//2、加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//3、连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
//4、编写sql
String sql="insert into user(id, name, password, email, birthday) VALUES (?,?,?,?,?)";
//5向数据库发送sql的对象 preparedStatement 来完成CRUD
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//6、预编译
/**
* 这里的1、2、3、4、5表示的是sql语句中的问号的次序
* 值则为 相应的值 如果不清楚插入的类型 可以直接 preparedStatement.setObject()
* 不过效率相比较慢
*/
preparedStatement.setInt(1,4);
preparedStatement.setString(2,"赵六");
preparedStatement.setString(3,"123456");
preparedStatement.setString(4,"147258369@qq.com");
preparedStatement.setDate(5,new Date(new java.util.Date().getTime()));
/**
* 这里我们也可以直接使用preparedStatement.execute()
* 但是我们的插入操作属于Update 这样效率更高
*/
int i = preparedStatement.executeUpdate();
if (i>0){
System.out.println("插入成功");
}
//7、关闭链接 先生成的后关闭
preparedStatement.close();
connection.close();
}
}
这种方法通过预编译的方式来避免sql注入 比较安全