使用java将表的整个数据从sql server获取到txt文件
我想把表的全部数据放到文本文件中,我使用了如下代码
String url = "jdbc:sqlserver://localhost:1433;databaseName=DBTEST;user=Data;password=123;";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Connection con = DriverManager.getConnection(url);
Statement select = con.createStatement();
ResultSet result = select.executeQuery
("select * from testTable");
System.out.println("Got results:");
System.out.println(result);
FileWriter fw = new FileWriter("I:/File/InputFile.txt");
BufferedWriter bw = new BufferedWriter(fw);
while(result.next())
{
try{
bw.write(String.valueOf(result.getFloat("XColumn")));; // \n is for to write in a new Line .
bw.newLine();
}
catch (Exception e) {
System.out.println("Errrrr......... writing to a file..... :P"+e);
}
}
bw.close();
select.close();
con.close();
}
catch( Exception e ) {
e.printStackTrace();
}
在这里,我只得到我指定的result.getFloat("XColumn")
对应的列(XColumn)值。如何获取整个表的值
注意:我的表格格式为testTable(XColumn、YColumn、ZColumn)。我希望所有列的值都在txt文件中
# 1 楼答案
在
ResultSet
中,不能一次调用所有行值。你应该分开做# 2 楼答案
合并ResultSet中的metadate信息以获取列名
使用按索引获取的列的实际值:
# 3 楼答案
一种选择是只检索每个列,因为您知道它的名称
如果您不知道它的名称(因为稍后可能会有人添加更多列),则可以检索
ResultSetMetaData
http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getMetaData()该元数据将在
ResultSet
中提供查询返回的列的数量、名称和类型# 4 楼答案
# 5 楼答案
您可以使用ResultSetMetaData按编号提取所有列:
# 6 楼答案
首先,使用语句是不明智的。 要防止sql注入,请转到preparedStatement
如果列名未知,则使用
ResultSetMetaData