Oracle 데이터베이스에 연결하고 여러 테이블을 쿼리하고 있습니다. 현재 코드가 연결을 생성하고 쿼리가 포함 된 PL/SQL 함수를 호출합니다. 일단 결과가 설정되면 벡터에 추가합니다 (각 쿼리가 발생할 레코드의 수가 확실하지 않으므로).구분 된 파일에 Java 벡터 쓰기
내 문제는 벡터에서 구분 된 파일을 쓰는 방법을 잘 모르겠다는 것입니다. 일단 결과 세트를 추가하면, 그것은 단지 하나의 거대한 문자열 일 것입니다. 나는 쿼리에서 각 필드를 받아 들일 수 있어야하고 그들 사이를 구분할 수 있어야하고 행을 분리하여 유지해야한다. 제가 DB에서 정보를 얻고 구분 된 파일에 쓰기에 대해 갈 방법 만 확실하지 오전
public static void main(String[] args) throws SQLException {
// instantiate db connection
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch (Exception e) {
throw new SQLException("Oracle JDBC is not available", e);
}
// define connection string and parameters
String url = "jdbc:oracle:thin:@//host:port/sid";
Connection conn = DriverManager.getConnection(url, "USERNAME","PASSWORD");
CallableStatement stmt = conn.prepareCall("{? = CALL <functionname>(?)}");
// get result set and add to a Vector
ResultSet rs = stmt.executeQuery();
Vector<String> results = new Vector();
while (rs.next()){
results.add(rs.getString(1));
}
// close result set, sql statement, and connection
rs.close();
stmt.close();
conn.close();
// write Vector to output file,
// where the file name format is MMddyyyy.txt
try {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("MMddyyyy");
String dateStr = sdf.format(cal.getTime());
FileWriter fwrite = new FileWriter(dateStr + ".txt");
BufferedWriter out = new BufferedWriter(fwrite);
for(int i = 0; i < results.size(); i++)
{
String temp = results.elementAt(i);
out.write(temp);
}
out.close();
}catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
:
여기 내 코드입니다. 미리 감사드립니다!
뜻이 : -'out.write (임시 + 구분 기호);'? –
아마도. 나는 결과에 대한 큰 이해를하지 못했을 것이다. 요소 (i). 벡터의 요소가 내 결과 집합의 각 필드를 반영하고 있습니까? 벡터가 서식을 유지합니까 (예 : 결과 집합에 행 당 10 개의 필드, 10 개의 행이 있습니다. 벡터가 그렇게 보일까요?) 아마도 생각보다 쉽습니다 ... – Phoenix
그러나 각 행의 첫 번째 필드를 당신의 벡터. 정확히 무엇을 원하십니까? 예를 올리십시오. –