Java 학습노트--JDBC
jdbc 작업:
// :
private static Connection getConn() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/samp_db";
String username = "root";
String password = "";
Connection conn = null;
try {
Class.forName(driver); //classLoader,
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
// sql
// insert
private static int insert(Student student) {
Connection conn = getConn();
int i = 0;
String sql = "insert into students (Name,Sex,Age) values(?,?,?)";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
pstmt.setString(1, student.getName());
pstmt.setString(2, student.getSex());
pstmt.setString(3, student.getAge());
i = pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
// update
private static int update(Student student) {
Connection conn = getConn();
int i = 0;
String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
i = pstmt.executeUpdate();
System.out.println("resutl: " + i);
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
// select xx from tableName
private static Integer getAll() {
Connection conn = getConn();
String sql = "select * from students";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement)conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
int col = rs.getMetaData().getColumnCount();
System.out.println("============================");
while (rs.next()) {
for (int i = 1; i <= col; i++) {
System.out.print(rs.getString(i) + "\t");
if ((i == 2) && (rs.getString(i).length() < 8)) {
System.out.print("\t");
}
}
System.out.println("");
}
System.out.println("============================");
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// delete
private static int delete(String name) {
Connection conn = getConn();
int i = 0;
String sql = "delete from students where Name='" + name + "'";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
i = pstmt.executeUpdate();
System.out.println("resutl: " + i);
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
테스트:
//
public static void main(String args[]) {
JDBCOperation.getAll();
JDBCOperation.insert(new Student("Achilles", "Male", "14"));
JDBCOperation.getAll();
JDBCOperation.update(new Student("Bean", "", "7"));
JDBCOperation.delete("Achilles");
JDBCOperation.getAll();
}
결과 출력:
============================
1 Ender male 8
2 Bean male 6
3 Petra fema 9
4 Peter male 9
5 _Graff male 40
6 GOD fema 255
============================
============================
1 Ender male 8
2 Bean male 6
3 Petra fema 9
4 Peter male 9
5 _Graff male 40
6 GOD fema 255
7 Achilles Male 14
============================
resutl: 1
resutl: 1
============================
1 Ender male 8
2 Bean male 7
3 Petra fema 9
4 Peter male 9
5 _Graff male 40
6 GOD fema 255
============================
코드 분석:
위에서 언급한 데이터베이스를 첨삭 및 수정하는 과정에서 공통적인 부분, 즉 통용되는 절차를 발견할 수 있다.
(1) Connection 객체, SQL 쿼리 명령 문자열 작성
(2) Connection 대상에게 SQL 조회 명령을 보내고PreparedStatement 대상을 획득한다.
(3)PreparedStatement 대상에게excuteUpdate() 또는excuteQurey()를 실행하여 결과를 얻기;
(4) PreparedStatement 객체 및 Connection 객체를 차례로 닫습니다.
이를 통해 알 수 있듯이 JDBC를 사용할 때 가장 자주 접촉하는 것은 연결, Prepared Statement 두 종류와 select의 Result Set 종류이다.
문제를 사고하다
1. 매번 SQL 작업은 연결을 구축하고 닫아야 한다. 그러면 대량의 자원 비용이 소모될 것이다. 어떻게 피해야 합니까?
분석: 연결 탱크를 이용하여 연결을 통일적으로 유지보수할 수 있으며 매번 구축하고 닫을 필요가 없다.사실 이것은 JDBC를 봉인하는 많은 도구들이 채택한 것이다.
2. 자바 코드에서 전송된 데이터 형식과 데이터베이스 정의가 다르면 어떻게 합니까?예를 들어 자바의 String 대상을 데이터베이스에tinyint 속성에 값을 부여합니다.
분석: SQL 문을 실행할 때 데이터베이스에서 변환을 시도합니다.내 실험에 따르면 순수한 자모의 스트링 대상으로tinyint의age 속성을 전송하면 0으로 바뀐다.구체적인 전환 규칙은 데이터베이스와 관련이 있어야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이트 스트림 읽기, 쓰기, 파일 복사java.io.InputStream java.io.FileInputStream File InputStream (File f) 은 파일 시스템의 File 객체 f를 통해 지정한 File InputStream 연결을 엽...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.