本文主要是介绍Java程序生成逐条SQL更新语句,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用场景:
1.需要根据数据库查询出来的内容生成一条条的SQL语句,然后发给DBA进行执行.
代码运行准备:
1.在系统盘D盘建立:D:/ziptest/srcFile.txt.这是一个数据源文件,每条记录代表由两个属性逗号连接.
操作代码:
import java.io.*;
/**
* 特定需求需要执行一条条的更新SQL语句<br>
* <br>srcFile.txt:数据源文件,逗号连接,具体格式为:更新属性内容,主键内容.示例:tongguangying,0011e885_93a9_11e7_8568_6c92bf3bb435<br>
* <br>destSQLFile.txt:目标SQL文件,具体表现为一条根据主键修改的更新语句.示例:UPDATE rs_user SET PASSWORD ='tongguangying' WHERE RS_USER_ID ='0011e885_93a9_11e7_8568_6c92bf3bb435';<br>
* @author tgy
*
*/
public class CreateSQLByReadingText {
static final String srcFile="D:/ziptest/srcFile.txt";//数据源文件
static final String destFile="D:/ziptest/destSQLFile.txt";//SQL输出目标目录
public static void main(String[] args) throws Exception {
readTextFile();
}
/**
* 读取数据源txt文件,并拼接更新语句到指定目标文件中
*/
public static void readTextFile() throws Exception{
try (FileReader fr = new FileReader(srcFile);
BufferedReader br = new BufferedReader(fr);
FileOutputStream fos=new FileOutputStream(destFile);
){
String line;
while ((line = br.readLine()) != null) {
String []arr=line.split(",");
StringBuffer sb=new StringBuffer();
sb=makeSQL(sb,arr);
fos.flush();
fos.write(sb.toString().getBytes());
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @param sql 要拼接的SQL语句
* @param arr 数据源数组
* @return
*/
public static StringBuffer makeSQL(StringBuffer sql,String[]arr) throws Exception{
if(arr==null || !(arr.length==2)){
throw new Exception("数据源数组为空或者数组长度不等于2!");
}
sql.append("UPDATE")
.append(" rs_user ")
.append(" SET ")
.append(" PASSWORD ='")
.append(arr[0])
.append("'")
.append(" ")
.append(" WHERE RS_USER_ID ='")
.append(arr[1])
.append("'")
.append(";")
.append(System.getProperty("line.separator"));
return sql;
}
}
这篇关于Java程序生成逐条SQL更新语句的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!