student @school 表
學生類Student
Student.java
package com.jdbc.demo;
public class Student {
private String sno;
private String sname;
private String ssex;
private int sage;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public int getSage() {
return sage;
}
public void setSage(int sage) {
this.sage = sage;
}
@Override
public String toString() {
return "Student{" +
"sno=" + sno +
",sname=" + sname +
",ssex=" + ssex +
",sage=" + sage +
"}";
}
}
查詢一條記錄,將其封裝成學生對象
package com.jdbc.demo;
import com.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCObject {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
// 創建學生對象
Student student = new Student();
try {
conn = JDBCUtils.getConnection();
String sql = "select * from student where sno=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "08002");
rs = pstmt.executeQuery();
if (rs.next()) {
// 封裝成一個學生對象
student.setSno(rs.getString("sno"));
student.setSname(rs.getString("sname"));
student.setSsex(rs.getString("ssex"));
student.setSage(rs.getInt("sage"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(rs, pstmt, conn);
}
System.out.println(student);
}
}
// Student{sno=08002,sname=李四,ssex=女,sage=20}
查詢多條記錄,將其封裝成學生對象的List集合
package com.jdbc.demo;
import com.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class JDBCList {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
// 創建一個集合
List<Student> studentList = new ArrayList<Student>();
try {
conn = JDBCUtils.getConnection();
String sql = "select * from student";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
// 每次循環是一個學生對象
Student student = new Student();
// 封裝成一個學生對象
student.setSno(rs.getString("sno"));
student.setSname(rs.getString("sname"));
student.setSsex(rs.getString("ssex"));
student.setSage(rs.getInt("sage"));
// 把數據放到集合中
studentList.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(rs, pstmt, conn);
}
for (Student stu : studentList) {
System.out.println(stu);
}
}
}
/*
Student{sno=08001,sname=張三,ssex=男,sage=18}
Student{sno=08002,sname=李四,ssex=女,sage=20}
Student{sno=08003,sname=王五,ssex=男,sage=22}
Student{sno=08004,sname=趙六,ssex=女,sage=24}
Student{sno=08005,sname=孫七,ssex=男,sage=18}
*/
使用JDBC來操作銀行轉賬的事務
package com.jdbc.demo;
import com.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JDBCDemo {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt1 = null;
PreparedStatement pstmt2 = null;
try {
// 獲取連接
conn = JDBCUtils.getConnection();
//開啓事務
conn.setAutoCommit(false);
// 定義sql
String sql1 = "update account set balance = balance - ? where id = ?";
String sql2 = "update account set balance = balance + ? where id = ?";
// 獲取執行sql對象
pstmt1 = conn.prepareStatement(sql1);
pstmt2 = conn.prepareStatement(sql2);
// 設置參數
pstmt1.setDouble(1, 500);
pstmt1.setInt(2, 1);
pstmt2.setDouble(1, 500);
pstmt2.setInt(2, 2);
// 執行sql
pstmt1.executeUpdate();
// 手動製造異常
int i = 3 / 0;
pstmt2.executeUpdate();
// 提交事務
conn.commit();
System.out.println("轉賬成功");
} catch (Exception e) {
e.printStackTrace();
// 事務回滾
try {
if (conn != null) {
conn.rollback();
}
} catch (SQLException e1) {
e1.printStackTrace();
}
System.out.println("轉賬失敗");
} finally {
// 釋放資源
JDBCUtils.close(pstmt1, conn);
JDBCUtils.close(pstmt2, null);
}
}
}