JDBC连接MySQL数据库查询数据并以TXT的格式写入到本地

本示例采用原生JDBC连接数据库,I/O进行输出操作,所以只需要创建一个简单的java工程并引入jar包即可。
在这里插入图片描述
再说一下本示例满足的需求为:用户输入时间,程序按时间为条件查询出当天数据库中的订单(例如:当天已完成订单数等)。

目录结构

JDBC连接MySQL数据库查询数据并以TXT的格式写入到本地_第1张图片

代码实现

package test;
import java.io.File;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.util.Date;

public class JDBCforTxt {
        public static void main(String[] args) {
            System.out.println("请输入时间:(例如:2018-08-28)");
            Scanner sc=new Scanner(System.in);
            String time=sc.next();
            //执行获取txt文件操作。
            try {
                getTxt(time);
            }catch (Exception e){
                e.printStackTrace();
            }

        }

        //创建jdbc连接mysql数据库。
        public static void getTxt(String time)throws Exception{
            Connection con = null;
            String sql;
            String sqlTwo;
            //Windows当前用户名。
            String userName=System.getProperty("user.name");
            String url="jdbc:mysql://xxxxx.com:3306/xxx?useUnicode=true&characterEncoding=UTF-8";
            //创建IO需求的条件。
            File file = null;
            FileWriter fw = null;
            //使用时间防止文件名重复。
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-ddHH-mm-ss");//设置日期格式。
            String times=df.format(new Date());// new Date()为获取当前系统时间。
            //把文件输出到桌面。
            file = new File("C:\\Users\\"+userName+"\\Desktop\\"+times+"info.txt");
            if(!file.exists()){
                file.createNewFile();
            }
            fw = new FileWriter(file);
            try {
                //加载驱动。
                Class.forName("com.mysql.jdbc.Driver");
                //创建连接。
                con = DriverManager.getConnection(url,"user","password");

                Statement stat = con.createStatement();
                sql = "SELECT * FROM tableName WHERE DATE_FORMAT(create_date,\"%Y-%m-%d\")="+"'"+time+"'";

                //获取sql结果。
                ResultSet result = stat.executeQuery(sql);
                //获取得到总行数。
                int totalNumberOfOrders=0;
                // 已完成订单数。
                int numberOfCompletedOrders=0;
                //候付费未支付订单数。
                int pendingNotPayOrderNumber=0;
                //候付费已支付订单数。
                int pendingPayedOrderNumber=0;

                while (result.next()){
                    totalNumberOfOrders++;
                    if ("finish".equals(result.getString("status"))){
                           numberOfCompletedOrders++;
                    }
                    if (result.getString("post_pay")!=null && "0".equals(result.getString("post_payed"))){
                        fw.write("当天候付费未支付用户:"+result.getString("order_addr_username")+"     "+" 电话号码:"+result.getString("order_addr_mobile")+"\r\n");
                        pendingNotPayOrderNumber++;
                    }
                    if (result.getString("post_pay")!=null && "1".equals(result.getString("post_payed"))){
                        pendingPayedOrderNumber++;
                    }
                }
                fw.write("当天总订单数:"+totalNumberOfOrders+"\r\n");
                fw.write("当天已完成订单数:"+numberOfCompletedOrders+"\r\n");
                fw.write("当天候付费已支付订单数:"+pendingPayedOrderNumber+"\r\n");
                fw.write("当天候付费未支付订单数:"+pendingNotPayOrderNumber+"\r\n");
                fw.flush();
                System.out.println("完成查询写入txt功能");
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                con.close();
                fw.close();
            }
        }
    }

实现效果

JDBC连接MySQL数据库查询数据并以TXT的格式写入到本地_第2张图片
JDBC连接MySQL数据库查询数据并以TXT的格式写入到本地_第3张图片
JDBC连接MySQL数据库查询数据并以TXT的格式写入到本地_第4张图片

你可能感兴趣的:(JDBC连接MySQL数据库查询数据并以TXT的格式写入到本地)