java 从数据库取出数据并保存到本地文本中

我数据的格式:同一uid对应多个text,有跟多这样的uid,现在我的要求是把这些数据取出来,并且同一个用户只建一个文本,里面存放他所有的text,我写的代码如下这是存成... 我数据的格式:同一uid对应多个text,有跟多这样的uid,现在我的要求是把这些数据取出来,并且同一个用户只建一个文本,里面存放他所有的text,

我写的代码如下

这是存成文本的代码:

我不知道我哪里出错了,数据都没存进去,文件都已经建好了的。各位大神帮帮忙
展开
 我来答
liuyang054
2015-04-24 · TA获得超过9093个赞
知道大有可为答主
回答量:5317
采纳率:78%
帮助的人:5302万
展开全部

先看数据库表, 我里面有46条记录,其中有三条重复,我就拿其中一条emp_id 为"

DWR65030M"  做例子

java代码如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * java读取数据库内容并存放到文件中
 * 
 * @author young
 *
 */
public class JavaToSQLTest {
public static void main(String[] args) throws FileNotFoundException {
//  // 关联文件
//  File file = new File("F:\\workspace\\one\\test.txt");
//  // java IO流和文件关联
//  PrintWriter pw = new PrintWriter(file);
PrintWriter pw = null;
FileWriter fw = null;
// 定义数据库驱动
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
// 数据库连接URL
String url = "jdbc:sqlserver://localhost:1433;DatabaseName = soft";
Connection conn = null;
String id;
String fname, lname;
try {
// pw.println("emp_id\t\tfname\t\tlname");
// pw.println("------\t\t------\t\t------");
// 加载数据库驱动
Class.forName(driver);
// 创建数据库连接
conn = DriverManager.getConnection(url, "sa", "1234");
// 创建预编译SQL对象
PreparedStatement ps = conn
.prepareStatement("select emp_id, fname, lname from emps");
// 执行SQL,获取结果集rs
ResultSet rs = ps.executeQuery();
// 处理结果集
while (rs.next()) {
id = rs.getString("emp_id");
fname = rs.getString("fname");
lname = rs.getString("lname");
String filename = id + ".txt";
// 关联文件
File file = new File(filename);
if(!file.exists()){
// 判断文件不存在就new新文件,写数据
try {
file.createNewFile();
// java IO流和文件关联
pw = new PrintWriter(file);
pw.print(id + "\t");
pw.print(fname + "\t\t");
pw.print(lname);
pw.println();
pw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}else{
// 判断文件存在,就以FileWriter文件追加的方式写文件
try {
fw = new FileWriter(filename,true);
fw.write(id + "\t");
fw.write(fname + "\t\t");
fw.write(lname);
fw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("加载数据库失败");
System.exit(1);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库连接错误");
System.exit(1);
} finally {
if (conn != null) {
try {
// 关闭数据库连接
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (pw != null) {
// 关闭IO流
pw.close();
}
if(fw != null){
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}
}

结果生成了43个txt文件   ,看

DWR65030M.txt文件的内容如下:

里面有两条记录 ,实现了

追问

我照你的改了,但是现在只存了第一条数据,很神奇,我觉得你的代码和逻辑都没错阿。上图:

我的代码如下:

现在只存了第一条说明没有做else这一步??

追答
File file = new File(dir ,filename);
估计是这里的问题。 你改成 把目录和文件名都拼接好字符串,然后直接new 一个file,再判断是否存在。
油条小馄饨
2015-04-24
知道答主
回答量:8
采纳率:0%
帮助的人:6.9万
展开全部
selectFromDb里text是个空的List,你忘了把东西插进去
我的理解,应给在你的if红框下面text.Add(rs.getString("data")之类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暮影1994
2015-04-24 · TA获得超过2338个赞
知道大有可为答主
回答量:1215
采纳率:60%
帮助的人:398万
展开全部
用什么写进文件里面? IO吗? 写进的时候记得flush
追问
对呀,有flush,在写进的时候
追答
你输出看看你的数据是不是正常获取了,在写入之前
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式