繁体   English   中英

用Java将数据从数据库写入文件

[英]Write data from Database to File in Java

我正在尝试将数据库中的数据写入文本文件。

文本文件为空。 我试图度。 这是代码:

public void writeText()
{
     try
    {
        Class.forName("com.mysql.jdbc.Driver");
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    final String DB_URL ="jdbc:mysql://mis-sql.uhcl.edu/gattupalliv3940";
    Connection conn = null;
    Statement stat  = null;
    ResultSet rs = null;
    try
    {
        conn = DriverManager.getConnection(DB_URL,"gattupalliv3940","1552688");
        stat = conn.createStatement();
        rs = stat.executeQuery("select * from student_2");
        FileWriter fw = new FileWriter("data.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        String line ="";
        while(rs.next())
        {
            line = rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getDouble(3);
            bw.write(line);
            bw.newLine();
        }
        bw.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    finally
    {
        try
        {
            conn.close();
            rs.close();
            stat.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

如果您没有收到任何错误并且文件为空,则唯一可能发生的情况是您的while(rs.next())行在第一次输入时必须返回false; 这意味着您没有从数据库中得到任何东西。

您是否已逐步执行代码以验证正在执行哪些行,而哪些行没有执行?

我怀疑文件未写入您期望的位置,因为您未指定目录。 我创建了一个简单的测试,并将文件写到Tomcat的目录下... \\ springsource \\ vfabric-tc-server-developer-2.6.4.RELEASE \\ spring-insight-instance \\ wtpwebapps \\ Junk \\ data.txt(我的项目名为“垃圾邮件”。 下面是我的代码(没有数据库的东西):

@RequestMapping(value="/")
public ModelAndView test(HttpServletRequest request, HttpServletResponse response) throws IOException{

    writeText(request.getRealPath("data.txt"));

    return new ModelAndView("home");
}

public void writeText(String path) {
    BufferedWriter bw = null;
    try {
        FileWriter fw = new FileWriter(path);
        bw = new BufferedWriter(fw);
        String line = "this is only a test";
        bw.write(line);
        bw.newLine();
    }
    catch(Exception e) {
        e.printStackTrace();
    } finally {
        if( bw != null ) {
            try {
                bw.close();
            } catch (IOException e) {
                // ignore
            }
        }
    }
}

在这里可以使用名为JOConnection的库。 将此库从外部导入到您的项目中。

在开始时创建一个文件。

 File myDb=new File("file_name");

然后使用此代码访问该文件数据库

 Database db=Connection.openConnection(myDb);

然后获取数据以对象列表的形式写入db。

 ArrayList<Items> itmDetails=  (ArrayList<Items> )db.getList("Items");

然后将这些数据添加到文件db

       db.addList("Items", itmDetails);

最后

  Connection.save(); 

尝试从Oracle将日志写入文件时,我遇到了完全相同的问题。

FileOutputStream为我工作! 希望这对您有用。 我不知道为什么PrintWriter无法正常工作。 必须设置oracle ...

List<String> logs = new LinkedList<String>();       
String filepath = "xxx.txt";
System.out.println(filepath);
OutputStream os = null;
try{
    for(int i = 0; i < logs.size(); i++) {
        os = new FileOutputStream(filepath,true);
        os.write(("\n"+logs.get(i)).getBytes(), 0, ("\n"+logs.get(i)).length());            
    }               
    } catch (IOException e) {
         e.printStackTrace();
    } finally{
         try {
             os.close();
         } catch (IOException e) {
             e.printStackTrace();
     }
}   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM