用java實現把數據庫的數據寫入到txt中


*

**

    本文講解如何用java實現把數據庫的數據寫入到txt中 並實現類似下載軟件的樣子在網頁中彈出下載.
-------------------------------------------------

**

*

package datatest;



import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bean.ConnDB;


public class export extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //設置編碼
        response.setCharacterEncoding("UTF-8");
        //連接數據庫
        ConnDB conn = new ConnDB();
        ServletOutputStream outputstream = null;
        BufferedOutputStream buffoutputstream = null; 
        String txt_name = "導出的txt文件名.txt";//導出的txt文件名
        try {
            response.reset();// 清空輸出流
            response.setContentType("text/plain;charset=utf-8");
            //設置txt文件名稱編碼,防止中文亂碼
            response.setHeader("Content-disposition", "attachment; filename="+URLEncoder.encode(txt_name, "UTF-8"));
        StringBuffer write = new StringBuffer();
            outputstream=response.getOutputStream();
            buffoutputstream = new BufferedOutputStream(outputstream);
        //根據id查詢數據庫
            int id=Integer.parseInt(request.getParameter("id"));
            String sql = "select a.id,name,account,password ";
            sql+="from test_rank a ";
            sql+="left join test_join b on b.id=a.id where a.id="+id;
            ResultSet rs = conn.doQuery(sql);
            String content="";
            try {
                while(rs.next())
                {
                    //把數據庫中讀取的數據寫入
                    content=rs.getString("name")+"\r\n";//在txt中換行爲\t\n
                    write.append(content);
                    content=rs.getString("account")+"\r\n";
                    write.append(content);
                    break;
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //write.append(content);
            //設置編碼 防止中文亂碼
            String str = new String(write.toString().getBytes(),"gbk");
            buffoutputstream.write(str.toString().getBytes("gbk"));
            buffoutputstream.flush();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       finally {
            if (outputstream != null)
                try {
                    outputstream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            if (buffoutputstream != null)
                try {
                    buffoutputstream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }

    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章