JDBC
什么是JDBC,Java链接数据库
需要jar包的支持:
- java.sql
- javax.sql
- mysql-conneter-java 连接驱动、
导入数据库依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
JDBC 固定步骤
- 加载驱动
- 连接数据库,代表数据库
- 向数据库发送SQL的对象Statement:CRUD
- 编写SQL(不同业务,不同SQL)
- 执行SQL
- 关闭连接
public class TestJdbc {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 配置东西
// 解决中文乱码
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=gbk";
String username = "root";
String passsword = "123456";
// 1. 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 连接数据库, 代表数据库
Connection connection = DriverManager.getConnection(url, username, passsword);
// 3. 向数据库发送SQL的对象statement:CRUD
Statement statement = connection.createStatement();
// 4. 编写SQL
String sql = "select * from users;";
// 5. 执行查询SQL,返回一个ResultSet : 结果集
ResultSet rs = statement.executeQuery(sql);
while (rs.next()){
System.out.println("id="+rs.getObject("id"));
System.out.println("name="+rs.getObject("name"));
System.out.println("password="+rs.getObject("password"));
System.out.println("email="+rs.getObject("email"));
System.out.println("birthday="+rs.getObject("birthday"));
}
// 6. 关闭连接,释放资源,先开的后关
rs.close();;
statement.close();
connection.close();
}
}
预编译SQL
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// 配置东西
// 解决中文乱码
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=gbk";
String username = "root";
String password = "123456";
// 1. 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 连接数据库, 代表数据库
Connection connection = DriverManager.getConnection(url, username, password);
// 3. 编写SQL
String sql = "insert into users(id, name, password, email, birthday) value(?,?,?,?,?);";
// 4. 预编译
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, 4);
preparedStatement.setString(2,"张三");
preparedStatement.setString(3, "1231231");
preparedStatement.setString(4, "zs@qq.com");
preparedStatement.setString(5, String.valueOf(new Date(new java.util.Date().getTime())));
// 5. 执行SQL
int i = preparedStatement.executeUpdate();
if (i>0){
System.out.println("插入成功......");
}
// 6. 关闭连接,释放资源,先开的后关
preparedStatement.close();
connection.close();
}
事务
要么都成功,要么都失败!
ACID原则:保证数据的安全.
开启事务
事务提交 commit()
事务回滚 rollback()
关闭事务
Junit单元测试
依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
简单使用
@Test注解只在方法上有效,只要加了这个注解的方法,就可以直接运行.