我连接到Oracle数据库并查询多个表。我当前的代码创建连接并调用包含查询的PL/SQL函数。一旦我有结果集,我将它添加到Vector(因为我不确定每个查询将导致的记录数)。将Java向量写入分隔文件
我的问题是,我不确定如何从Vector中编写分隔文件。我想象一旦我将结果集添加到它,它只是一个巨大的字符串。我需要能够从查询中接收每个字段并在它们之间进行分隔,并将行分开。
这里是我的代码:
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(temp + delimiter);'? –
也许吧。我可能对results.elementAt(i)没有很好的理解。矢量中的元素是否反映了结果集中每个字段的内容?该矢量是否保持格式(例如,我的结果集每行有10个字段,10行,这个矢量会是这样吗?)也许这比我想象的要容易... – Phoenix
但是,你只是添加每行的第一个字段你的矢量。你真正想要的是什么,请发布例子。 –