JDBC 도구 클래스 Dbconnection 상세 정보
3615 단어 jdbc
이런 문제의 원인은 단 하나입니다. 데이터베이스와의 연결 연결은 Static이고 프로그램은 이 연결을 공유합니다.그래서 처음으로 데이터베이스 조작에 문제가 없었고 연결을 닫은 후에 두 번째로 데이터베이스를 조작하려고 했을 때 연결은 존재하지 않았을 것이다.
세부 코드:
package com.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DbConnection {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/struts2?useUnicode=true&characterEncoding=utf-8";
private static String userName = "root";
private static String userPassword = "root";
public static Connection getConnection() {
Connection conn = null;// conn , static
try {
Class.forName(driver);
try {
conn = DriverManager.getConnection(url, userName, userPassword);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void closeDB(Connection conn, PreparedStatement pstm,
ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (pstm != null) {
try {
pstm.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
도구 클래스에 대한 DAO 코드 호출
package com.dao.user;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.db.DbConnection;
import com.model.user.EndUser;
public class UserDao {
//
public int save(EndUser user) throws SQLException {
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
conn = DbConnection .getConnection();
int row = 0;
String sql = "insert user(username,password,relname)values(?,?,?)";
try {
pstm = conn.prepareStatement(sql);
pstm.setString(1, user.getUsername());
pstm.setString(2, user.getPassword());
pstm.setString(3, user.getRelname());
row = pstm.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbConnection.closeDB(conn, pstm, rs);
}
return row;
}
public EndUser find(EndUser user) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
conn = DbConnection .getConnection();
EndUser user2 = null;
String sql = "select * from user where username=? and password=?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
rs = pstmt.executeQuery();
if (rs.next()) {
user2 = new EndUser();
user2.setId(rs.getInt("id"));
user2.setUsername(rs.getString("username"));
user2.setPassword(rs.getString("password"));
user2.setRelname(rs.getString("relname"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbConnection.closeDB(conn, pstmt, rs);
}
return user2;
}
}
데이터베이스를 사용한 후 데이터베이스 자원을 방출하는 작업이 있기 때문에static로 설정하면 conn 연결 대상을 공유하고 닫으면 존재하지 않습니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 애플리케이션을 모든 SQL 데이터베이스와 연결그래서 오늘 이 기사를 통해 JDBC를 통해 Java 애플리케이션을 SQL 데이터베이스에 연결하기 위해 작성할 수 있는 각 줄을 설명하는 심층 가이드를 제공하여 그들과 모든 커뮤니티를 도우려고 합니다. JDBC는 J...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.