다음과 같은 간단한 예제로 테스트를 해보았습니다.
db에는 ??로 입력이 됩니다.
콘솔에서는 입력이 정상적으로 이루어지는데
jdbc를 이용하여 입력을 하려고하면 문제가 발생합니다.
몇몇 게시판에 올라온 글을 참조해서 만든 예제인데 잘되지를 않아요
왜그럴까요 ?
이와 같은 에러를 격거나 해결하신분은 리플을 달아 주시면 감사히 읽겠읍니다
import java.util.*;
import java.math.*;
import java.sql.*;
import java.io.*;
public class PostgresAtHangl {
public Connection dbCon;
public PreparedStatement stmt;
public PostgresAtHangl () {
try {
String driver ="org.postgresql.Driver";
String dbURL = "jdbc:postgresql://192.168.0.16/photodb";
Class.forName(driver);
//게시판에 올라온 글중에 getConnection() 메소드를 오버라이드
// 해 보라는 분이 있어 해보았읍니다.
dbCon = getConnection(dbURL, "photodb", "photodb");
StringBuffer sql = new StringBuffer(512);
sql.append("UPDATE roll set description = ? where id =110;");
String source = "한글";
//그리고 문자를 인코딩하여 db에 저장합니다.
String target = new String( source.getBytes("8859_1"), "KSC5601" );
stmt = dbCon.prepareStatement(sql.toString());
stmt.setString(1, target);
int result = stmt.executeUpdate();
//각각의 인코딩을 출력해 봅니다.
System.out.println(source);
//source는 정상적으로 "한글"이 출력됩니다
System.out.println(target);
//인코딩이 이루어진 것은 "??"로 출력이됩니다.
}
catch(Exception e) {
System.out.println("데이타베이스에 연결을 할수가 없습니다." + e);
}
}
public static void main (String[] args) {
new PostgresAtHangl();
System.out.println("성공적으로 업데이트 하였읍니다.");
}
//게시판에 있는 getConncetion() 메소드를 오버라이드하는 부분입니다.
public static Connection getConnection(String url, String user, String passwd) throws SQLException {
java.util.Properties props = new java.util.Properties();
if(user!=null) props.put("user",user);
if(passwd!=null) props.put("password",passwd);
props.put("charSet","8859_1");
return (DriverManager.getConnection(url,props));
}
}
|