JDBC
什么是JDBC,Java鏈接數(shù)據(jù)庫

15-1.png
需要jar包的支持:
- java.sql
- javax.sql
- mysql-conneter-java 連接驅(qū)動、
導(dǎo)入數(shù)據(jù)庫依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
JDBC 固定步驟
- 加載驅(qū)動
- 連接數(shù)據(jù)庫,代表數(shù)據(jù)庫
- 向數(shù)據(jù)庫發(fā)送SQL的對象Statement:CRUD
- 編寫SQL(不同業(yè)務(wù),不同SQL)
- 執(zhí)行SQL
- 關(guān)閉連接
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. 加載驅(qū)動
Class.forName("com.mysql.jdbc.Driver");
// 2. 連接數(shù)據(jù)庫, 代表數(shù)據(jù)庫
Connection connection = DriverManager.getConnection(url, username, passsword);
// 3. 向數(shù)據(jù)庫發(fā)送SQL的對象statement:CRUD
Statement statement = connection.createStatement();
// 4. 編寫SQL
String sql = "select * from users;";
// 5. 執(zhí)行查詢SQL,返回一個ResultSet : 結(jié)果集
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. 關(guān)閉連接,釋放資源,先開的后關(guān)
rs.close();;
statement.close();
connection.close();
}
}
預(yù)編譯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. 加載驅(qū)動
Class.forName("com.mysql.jdbc.Driver");
// 2. 連接數(shù)據(jù)庫, 代表數(shù)據(jù)庫
Connection connection = DriverManager.getConnection(url, username, password);
// 3. 編寫SQL
String sql = "insert into users(id, name, password, email, birthday) value(?,?,?,?,?);";
// 4. 預(yù)編譯
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. 執(zhí)行SQL
int i = preparedStatement.executeUpdate();
if (i>0){
System.out.println("插入成功......");
}
// 6. 關(guān)閉連接,釋放資源,先開的后關(guān)
preparedStatement.close();
connection.close();
}
事務(wù)
要么都成功,要么都失敗!
ACID原則:保證數(shù)據(jù)的安全.
開啟事務(wù)
事務(wù)提交 commit()
事務(wù)回滾 rollback()
關(guān)閉事務(wù)
Junit單元測試
依賴
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
簡單使用
@Test注解只在方法上有效,只要加了這個注解的方法,就可以直接運行.