1.设置Properties类、设置Connection类、设置PreparedStatement类
预处理搬运工其它方法:对表的插入操作,其他操作其实也是一样的,只是查找调用的方法是executeQuery()而已.返回的是个resultSet结果集而已,打印输出即可.
static Properties pros;
static Connection conn = null;
static PreparedStatement ps = null;
静态的sql简单是已经写死了,固定了的sql语句,而封装的sql语句是不能更改的,所以说开发往往都不用静态的.参数化的sql语句是不固定的,用?来占用值,相当于萝卜坑,一个数据一个坑,最后组成一条数据.很灵活.
@param sql 操作数据库的SQL语句 @param param 用?代表参数的数组 @return 如果成功返回大于0的数字
public int executeUpdate(String sql, Object[] param) {
//创建一个PreparedStatement对象用来操作数据库
PreparedStatement pstmt = null;
try {
//getConnection()方法为我自己定义的获取数据库连接的方法
pstmt = getConnection().prepareStatement(sql);
//判断param数组是否为空
if (param != null) {
//用for循环来给所有参数赋值
for (int i = 0; i < param.length; i++) {
pstmt.setObject((i + 1), param[i]);
}
}
//用来返回受影响的行数
return pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// closeAll(conn, pstmt, null);
log.info("发送错误");
}
//返回-1表示数据操作失败
return -1;
}
对查询结果处理, //原文链接:https://blog.csdn.net/AnyingVirusKing/article/details/52187897
//1.创建预处理的搬运工对象
String sql = "insert into testjdbc.t_user (name1,age,sex) values(?,?,?)";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
//2.SQL语句已预编译并存储在PreparedStatement对象中
//对sql语句中的?进行赋值
//使用给定对象设置指定参数的值。
preparedStatement.setObject(1, "历史");//对第一个?进行赋值
preparedStatement.setObject(2, 5);//对第二个?进行赋值
preparedStatement.setObject(3, "男");//对第三个?进行赋值
//3.执行sql语句
int i = preparedStatement.executeUpdate();
System.out.println(i);
将查询结果写入到cvs表格中 @param defiled_info sql查询结果 @param fileName fileName为下载文件名,防止文件重名覆盖,可加入时间戳
String rootPath = "";
if(fileName == null){
rootPath = "D:/file_"+ System.currentTimeMillis()+".csv";
}else {
rootPath = "D:/"+fileName+System.currentTimeMillis()+".csv";
}
//第一个参数为文件存储路径,第二个为指定导出的文件字段间的间隔符,第三个参数为转出编码
CsvWriter csvWriter = new CsvWriter(rootPath, '|', Charset.forName("GBK"));
//需要确保查询的结果不能为空,也可以在这做判断,不为空才能自动取表头,不然需要手动传入表头
HashMap hashMap = defiled_info.get(0);
Set defiled_sets = hashMap.keySet();
if (defiled_sets.size() > 0) {
for (String key : defiled_sets) {
//写入表头信息
csvWriter.write(key, false);
}
//换行
csvWriter.endRecord();
}
//写入类容信息
for (int k = 0; k < defiled_info.size(); k++) {
HashMap infos = defiled_info.get(k);
for (String key : defiled_sets) {
//如果某字段为空,这转义为字符串"null"
if (infos.get(key) == null) {
csvWriter.write("null");
} else {
csvWriter.write(infos.get(key).toString());
}
}
csvWriter.endRecord();
}
csvWriter.close();//关闭流
将单个单个输出
ps=mysqlConnect().prepareStatement("select * from testjdbc.t_user");
//log.info("查询结果"+ps);
ps.execute();
ResultSet rs = ps.executeQuery();
log.info(rs);
while (rs.next()) {
System.out.println("账号:" + rs.getInt("id") +
" 密码:" + rs.getString("sex") +
" 姓名:" + rs.getString("name1") +
" 年龄:" + rs.getInt("age"));
}
//4.关闭资源
preparedStatement.close();
conn.close();