我正在尝试通过Java执行SQL语句并将结果写入.csv文件。
我正在使用OJDBC.jar(v7)连接到Oracle 11g DB和OPENCSV.jar(v3.8),以创建并写入Excel。
表结果打印效果很好。我正在使用管道分隔记录中的所有列值。
但是,在生成的csv文件上,我仅看到表的列名,而根本没有数据!可能是什么原因?请帮忙。
package test;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import com.opencsv.CSVWriter;
public class AllInOne
{
static String hostIP="255.255.255.255";
static String PortNum="1521";
static String ServiceName="SNAME";
static String un="USER";
static String pw="PWD";
static int columnCount;
static String row="";
public static void main(String[] args) throws Exception
{
String addr = "jdbc:oracle:thin:@"+hostIP+":"+PortNum+":"+ServiceName;
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(addr,un,pw);
Statement stat = con.createStatement();
ResultSet rs = stat.executeQuery("select * from t_employee_info where rownum <6");
ResultSetMetaData resultSetMetaData = rs.getMetaData();
columnCount = resultSetMetaData.getColumnCount();
while (rs.next())
{
for (int i = 1; i <= columnCount; i++)
{
row += rs.getString(i) + "|";
}
System.out.println(row);
row = "";
}
FileWriter fw=new FileWriter("C:/Users/myName/Desktop/Folder/CSVfile.csv");
CSVWriter writer = new CSVWriter(fw);
writer.writeAll(rs,true);
writer.close();
fw.close();
stat.close();
con.close();
System.out.println("File Generated");
}
}
Shreyas,您已经遍历了一次结果集。因此,您的选择是在RS上迭代到变量(例如|分隔值的列表)时将值存储起来,并将它们传递给CSV Writer上的方法。
第二种选择是实际使用rs.first()(前提是您具有可滚动的结果集),然后将其传递给该方法。但是,这不是一个好习惯
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句