无可奈花落去,似曾相识燕归来。
本示例采用原生JDBC连接数据库,I/O进行输出操作,所以只需要创建一个简单的java工程并引入jar包即可。
再说一下本示例满足的需求为:用户输入时间,程序按时间为条件查询出当天数据库中的订单(例如:当天已完成订单数等)。
目录结构
代码实现
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();
}
}
}
实现效果