import java.net.URL;
import java.sql.*;
import java.util.*;
import java.io.*;
/**
* <p>Title: ExportData</p>
* <p>Description: 在这里仅仅就某个表employee中数据进行导出,
* 按照顺序存放入一个文本文件data_OUT.txt,询问换行问题</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author mjl125@sohu.com
* @version 1.0
*/
public class exportdata11 {
public static void main(String[] args) {
Connection con;
DatabaseMetaData dma;
ResultSet results;
String url = "jdbc:oracle:thin:@10.6.3.53:1521:ORCL";
String uid = "dbu";
String pwd = "dbudbu";
String drive = "oracle.jdbc.driver.OracleDriver";
String query = "select ID,NAME from employee";
FileOutputStream out; // declare a file output object
PrintStream p; // declare a print stream object
try {
//加载 JDBC-ODBC 桥驱动程序
Class.forName(drive);
//连接数据库
con = DriverManager.getConnection(url, uid, pwd);
Statement stmt = con.createStatement();
//在dos中显示内容
results = stmt.executeQuery(query);
System.out.println(dumpResults(results));
//输出数据到文本中
results = stmt.executeQuery(query);
out = new FileOutputStream("DATA_OUT.txt");
p = new PrintStream(out);
p.println(dumpResults(results));
p.close();
}
catch (Exception e) {
System.out.println(e);
}
}
public static String dumpResults(ResultSet rs)
{
try
{
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
StringBuffer ret = new StringBuffer(500);
//列名
for (int i = 1; i <= numberOfColumns; i++)
{
String columnName = rsmd.getColumnName(i);
ret.append(columnName + "\t" );
}
ret.append("\n"); //换行问题
//列内容
while (rs.next())
{
for (int i = 1; i <= numberOfColumns; i++){
if (i == numberOfColumns) ret.append(rs.getString(i));
else ret.append(rs.getString(i) + "," );
}
ret.append("\n");//换行问题
}
return(ret.toString());
}
catch(Exception e)
{
return e.toString();
}
}
}
9 个解决方案
#1
oracle数据库中数据导出到一个文本文件中,每一条记录的换行问题,在线,急!
#2
我又搞定了,其实很简单。ret.append("\n")这个语句换为ret.append("\r\n")即可。
#3
晕。。。
\r是换行,\n是回车符
\r是换行,\n是回车符
#4
可能换行与回车都要,才是我希望的结果吧!不好意思,曾经打搅了你!
不过也谢谢你跟贴!
不过也谢谢你跟贴!
#5
版主:
我这个问题已经可以结贴了,我该怎么结呢?
另外,本文代码包含了jdbc连接oracle数据库的方法,sql语句查询的结果保存到文本文件的方法,值得推荐大家,参考使用!
我这个问题已经可以结贴了,我该怎么结呢?
另外,本文代码包含了jdbc连接oracle数据库的方法,sql语句查询的结果保存到文本文件的方法,值得推荐大家,参考使用!
#6
不打扰,我也不是得到学习了嘛~
在这个帖子上面有个“管理”,那里结帖给分就行,
然后你可以把这个帖子提交到FAQ,我可以通过审核,这样大家就都能看到了~
在这个帖子上面有个“管理”,那里结帖给分就行,
然后你可以把这个帖子提交到FAQ,我可以通过审核,这样大家就都能看到了~
#7
不行啊,自己不能给自己分,这个问题差不多是自问自答的阿,也想给你一点儿分,可不想都给你啊!~~
#8
public String export_tk(String hsdw) throws SQLException
{
String ret="";
String m="";
String s4="";
int jls=0;
String sql="";
LinkSQL conn=new LinkSQL();
ResultSet rs2;
try{
String mysql="select sphm,gkbm_dm,ysjc_dm,yskm_dm,fzbz,sjze,nsrsbh,tkyy_dm,jm_dm,yhzh,yhdm from sk_ttkyxh where gkhsbm_dm='"+hsdw+"'" ;
ResultSet rs=conn.executeQuery(mysql);
while(rs!=null && rs.next()){
ret="";
ret=ret+rs.getString("sphm")+","; //凭证编号
ret=ret+"1111111111,"; //征收机关代码
ret=ret+rs.getString("gkbm_dm")+",";//收款国库代码
ret=ret+rs.getString("gkbm_dm")+",";//目的国库代码
ret=ret+rs.getString("ysjc_dm")+",";//预算级次代码
ret=ret+"1,"; //预算种类编码
ret=ret+rs.getString("yskm_dm")+",";//预算科目代码
ret=ret+rs.getString("fzbz").trim()+",";//辅助标志
ret=ret+rs.getString("tkyy_dm").trim()+",";//退库原因代码
ret=ret+rs.getString("jm_dm").trim()+",";//退库依据
ret=ret+"1111111111,"; //审批机关代码
ret=ret+"0,"; //退库比例
ret=ret+"0,"; //退库总额
ret=ret+rs.getString("sjze")+",";//实缴总额
ret=ret+"0,";//退回标志
ret=ret+rs.getString("yhzh")+",";//收款帐号
ret=ret+rs.getString("nsrsbh");//收款单位代码
m=m+ret+"\r\n"; //一行明细 \r是换行,\n是回车符
jls=jls+1; //记录条数
}
//组包
//1111111111,1606080000 ,1606080000 ,1111111111,410303001180022,2,,0,1,010106,134,170039.95
s4=s4+m;//明细
}
catch(SQLException ex)
{
System.out.println(ex.getMessage());
}
finally{conn.close();}
return m;
}
{
String ret="";
String m="";
String s4="";
int jls=0;
String sql="";
LinkSQL conn=new LinkSQL();
ResultSet rs2;
try{
String mysql="select sphm,gkbm_dm,ysjc_dm,yskm_dm,fzbz,sjze,nsrsbh,tkyy_dm,jm_dm,yhzh,yhdm from sk_ttkyxh where gkhsbm_dm='"+hsdw+"'" ;
ResultSet rs=conn.executeQuery(mysql);
while(rs!=null && rs.next()){
ret="";
ret=ret+rs.getString("sphm")+","; //凭证编号
ret=ret+"1111111111,"; //征收机关代码
ret=ret+rs.getString("gkbm_dm")+",";//收款国库代码
ret=ret+rs.getString("gkbm_dm")+",";//目的国库代码
ret=ret+rs.getString("ysjc_dm")+",";//预算级次代码
ret=ret+"1,"; //预算种类编码
ret=ret+rs.getString("yskm_dm")+",";//预算科目代码
ret=ret+rs.getString("fzbz").trim()+",";//辅助标志
ret=ret+rs.getString("tkyy_dm").trim()+",";//退库原因代码
ret=ret+rs.getString("jm_dm").trim()+",";//退库依据
ret=ret+"1111111111,"; //审批机关代码
ret=ret+"0,"; //退库比例
ret=ret+"0,"; //退库总额
ret=ret+rs.getString("sjze")+",";//实缴总额
ret=ret+"0,";//退回标志
ret=ret+rs.getString("yhzh")+",";//收款帐号
ret=ret+rs.getString("nsrsbh");//收款单位代码
m=m+ret+"\r\n"; //一行明细 \r是换行,\n是回车符
jls=jls+1; //记录条数
}
//组包
//1111111111,1606080000 ,1606080000 ,1111111111,410303001180022,2,,0,1,010106,134,170039.95
s4=s4+m;//明细
}
catch(SQLException ex)
{
System.out.println(ex.getMessage());
}
finally{conn.close();}
return m;
}
#9
fuzhan820(fzd) 师兄挺对,现在有另外一个问题,怎么样把异常信息和结果信息传送到客户端,让客户浏览到结果,对有对的信息,错有错的信息。希望大家指导指导,谢谢!
#1
oracle数据库中数据导出到一个文本文件中,每一条记录的换行问题,在线,急!
#2
我又搞定了,其实很简单。ret.append("\n")这个语句换为ret.append("\r\n")即可。
#3
晕。。。
\r是换行,\n是回车符
\r是换行,\n是回车符
#4
可能换行与回车都要,才是我希望的结果吧!不好意思,曾经打搅了你!
不过也谢谢你跟贴!
不过也谢谢你跟贴!
#5
版主:
我这个问题已经可以结贴了,我该怎么结呢?
另外,本文代码包含了jdbc连接oracle数据库的方法,sql语句查询的结果保存到文本文件的方法,值得推荐大家,参考使用!
我这个问题已经可以结贴了,我该怎么结呢?
另外,本文代码包含了jdbc连接oracle数据库的方法,sql语句查询的结果保存到文本文件的方法,值得推荐大家,参考使用!
#6
不打扰,我也不是得到学习了嘛~
在这个帖子上面有个“管理”,那里结帖给分就行,
然后你可以把这个帖子提交到FAQ,我可以通过审核,这样大家就都能看到了~
在这个帖子上面有个“管理”,那里结帖给分就行,
然后你可以把这个帖子提交到FAQ,我可以通过审核,这样大家就都能看到了~
#7
不行啊,自己不能给自己分,这个问题差不多是自问自答的阿,也想给你一点儿分,可不想都给你啊!~~
#8
public String export_tk(String hsdw) throws SQLException
{
String ret="";
String m="";
String s4="";
int jls=0;
String sql="";
LinkSQL conn=new LinkSQL();
ResultSet rs2;
try{
String mysql="select sphm,gkbm_dm,ysjc_dm,yskm_dm,fzbz,sjze,nsrsbh,tkyy_dm,jm_dm,yhzh,yhdm from sk_ttkyxh where gkhsbm_dm='"+hsdw+"'" ;
ResultSet rs=conn.executeQuery(mysql);
while(rs!=null && rs.next()){
ret="";
ret=ret+rs.getString("sphm")+","; //凭证编号
ret=ret+"1111111111,"; //征收机关代码
ret=ret+rs.getString("gkbm_dm")+",";//收款国库代码
ret=ret+rs.getString("gkbm_dm")+",";//目的国库代码
ret=ret+rs.getString("ysjc_dm")+",";//预算级次代码
ret=ret+"1,"; //预算种类编码
ret=ret+rs.getString("yskm_dm")+",";//预算科目代码
ret=ret+rs.getString("fzbz").trim()+",";//辅助标志
ret=ret+rs.getString("tkyy_dm").trim()+",";//退库原因代码
ret=ret+rs.getString("jm_dm").trim()+",";//退库依据
ret=ret+"1111111111,"; //审批机关代码
ret=ret+"0,"; //退库比例
ret=ret+"0,"; //退库总额
ret=ret+rs.getString("sjze")+",";//实缴总额
ret=ret+"0,";//退回标志
ret=ret+rs.getString("yhzh")+",";//收款帐号
ret=ret+rs.getString("nsrsbh");//收款单位代码
m=m+ret+"\r\n"; //一行明细 \r是换行,\n是回车符
jls=jls+1; //记录条数
}
//组包
//1111111111,1606080000 ,1606080000 ,1111111111,410303001180022,2,,0,1,010106,134,170039.95
s4=s4+m;//明细
}
catch(SQLException ex)
{
System.out.println(ex.getMessage());
}
finally{conn.close();}
return m;
}
{
String ret="";
String m="";
String s4="";
int jls=0;
String sql="";
LinkSQL conn=new LinkSQL();
ResultSet rs2;
try{
String mysql="select sphm,gkbm_dm,ysjc_dm,yskm_dm,fzbz,sjze,nsrsbh,tkyy_dm,jm_dm,yhzh,yhdm from sk_ttkyxh where gkhsbm_dm='"+hsdw+"'" ;
ResultSet rs=conn.executeQuery(mysql);
while(rs!=null && rs.next()){
ret="";
ret=ret+rs.getString("sphm")+","; //凭证编号
ret=ret+"1111111111,"; //征收机关代码
ret=ret+rs.getString("gkbm_dm")+",";//收款国库代码
ret=ret+rs.getString("gkbm_dm")+",";//目的国库代码
ret=ret+rs.getString("ysjc_dm")+",";//预算级次代码
ret=ret+"1,"; //预算种类编码
ret=ret+rs.getString("yskm_dm")+",";//预算科目代码
ret=ret+rs.getString("fzbz").trim()+",";//辅助标志
ret=ret+rs.getString("tkyy_dm").trim()+",";//退库原因代码
ret=ret+rs.getString("jm_dm").trim()+",";//退库依据
ret=ret+"1111111111,"; //审批机关代码
ret=ret+"0,"; //退库比例
ret=ret+"0,"; //退库总额
ret=ret+rs.getString("sjze")+",";//实缴总额
ret=ret+"0,";//退回标志
ret=ret+rs.getString("yhzh")+",";//收款帐号
ret=ret+rs.getString("nsrsbh");//收款单位代码
m=m+ret+"\r\n"; //一行明细 \r是换行,\n是回车符
jls=jls+1; //记录条数
}
//组包
//1111111111,1606080000 ,1606080000 ,1111111111,410303001180022,2,,0,1,010106,134,170039.95
s4=s4+m;//明细
}
catch(SQLException ex)
{
System.out.println(ex.getMessage());
}
finally{conn.close();}
return m;
}
#9
fuzhan820(fzd) 师兄挺对,现在有另外一个问题,怎么样把异常信息和结果信息传送到客户端,让客户浏览到结果,对有对的信息,错有错的信息。希望大家指导指导,谢谢!