글쓴이 :김필호 1998년 5월 15일 13:22:22
In Reply to: Test 한 Source 동봉합니다. 많은 지도바랍니다. posted by 전진배 on 1998년 5월 15일 11:36:00:
안녕하세요?
소스를 들여다 보니 클래스 이름에만 Thread 가 붙었을 뿐
실제로는 thread 와 전혀 무관하군요...
thread 를 사용할려면 implements Runnable 해야 하고
메쏘드 run 이 있어야 하는데 그렇지 않군요.
애플릿이나 애플리케이션으로 디비에 연결하는
보통의 클래스에 지나지 않습니다.
클래스 생성자 안에 있던 dbConnect() 와 conn.close() 를
다른 곳으로 옮겼습니다.
그리고 디비에서 CHAR, VARCHAR, LONGVARCHAR 타입의
필드의 데이터 가져올 때 getString 메쏘드를 썼는데
한글의 경우 깨어지지 않을까요?
...............................
......선두 생략................
...............................
public ServerThread(Connection c)
{
conn = c;
// 이하 몇 줄은 없어질 부분들.
// try {
// conn.close(); // 이것없면 Error 발생
// conn = null;
// dbConnect();
// } catch(SQLException e) {
// }
}
public void execute()
{
String str = "";
String record = "";
ResultSet rset = null;
boolean flag = true;
ResultSetMetaData rsmd = null;
int numCols = 0;
int dataType = 0;
// file 이나 Socket 이나 browser 생성된 SQL 문 => Sql ARG
String sqlText = "SELECT boardid, parentid, " +
" boardname, description, flag " +
" FROM board_name " +
" ORDER BY boardid ASC";
try
{
dbConnect(); // 추가
pstmt = conn.prepareStatement(sqlText);
rset = pstmt.executeQuery();
rsmd = rset.getMetaData();
numCols = rsmd.getColumnCount();
flag = rset.next();
while (flag) {
// for one record
for (int i=1; i<=numCols; i++) {
dataType = rsmd.getColumnType(i);
record = record.trim() + sendElement(rset, rsmd.getColumnType(i),i);
}
record = sizeToString(record.length()) + record;
str = str + record;
record = "";
flag = rset.next();
}
rset.close();
pstmt.close();
conn.close; // 추가
} catch (SQLException e1) {
try {
rset.close();
pstmt.close();
} catch (Exception e2) {
}
}
...................................
.....이하 생략.....................
...................................