动态加载JDBC Jar包连接数据库
2016-07-19 15:43
260 查看
在用Jmeter的时候,需要构造一些请求数据,所以为了方便大家使用,使用了动态加载jdbc jar包来连接数据库,以下是部分代码片段。
import java.io.*; import java.net.URL; import java.net.URLClassLoader; import java.sql.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; /** * Package:PACKAGE_NAME * Author:tanyong * Date: 2016/7/13 * Desc: */ public class GenerateSyncOrderData { // String[] res= // {"0000000006149049.xml","0000000006150003.xml","0000000006150013.xml","0000000006150017.xml","0000000006150023.xml","0000000006150040.xml"}; static List<String> names = new ArrayList<String>(); static String dirName = "D:\\project\\testCXFClient\\testClient\\src\\main\\java"; static String prefixLabel = "<hybrisOrderNo>"; static String confirmOrderActionLabel = "<action>"; static String confirmOrderActionPayed = "PAYED"; static String confirmOrderActionCancel = "CANCEL"; static String syncOrderOutputFile = "syncOrderFromHysbris.dat"; static String confirmOrderOutputFile = "confirmOrderFromHysbris.dat"; static String confirmOrderTempFile = "confirmOrderTmp.xml"; static String cancelOrderOutputFile = "cancelOrderFromHysbris.dat"; static String cancelOrderTempFile = "cancelOrderTmp.xml"; static int genNo = 100; static List<String> tmpOrderNos = new ArrayList<String>(); static String url = "jdbc:oracle:thin:@10.82.21.52:1521:GOMSUAT"; static String userName = "eos_user"; static String password= "wrutbznX7q"; static Connection connection; public static void main(String[] args) { if (args.length>=10){ //read parameter if (args[0]!=null){ dirName = args[0]; } if (args[1]!=null){ syncOrderOutputFile = args[1]; } if (args[2]!=null){ genNo = Integer.parseInt(args[2]); } if (args[3]!=null){ confirmOrderOutputFile = args[3]; } if (args[4]!=null){ confirmOrderTempFile = args[4]; } if (args[5]!=null){ cancelOrderOutputFile = args[5]; } if (args[6]!=null){ cancelOrderTempFile = args[6]; } if (args[7]!=null){ url = args[7]; } if (args[8]!=null){ userName = args[8]; } if (args[9]!=null){ password = args[9]; } } System.out.println("resource dir:"+dirName); System.out.println("syncOrderOutputFile:"+ syncOrderOutputFile); System.out.println("confirmOrderOutputFile:"+ confirmOrderOutputFile); System.out.println("generate count:"+genNo); //get all xml file names GenerateSyncOrderData gen = new GenerateSyncOrderData(); //System.out.println(GenerateSyncOrderData.class.getResource("")); //删除旧的订单请求文件 File sycOrderFile = new File(dirName + "\\" + syncOrderOutputFile); if (sycOrderFile.exists()) { sycOrderFile.delete(); } //删除旧的订单确认文件 File confirmOrderFile = new File(dirName + "\\" + confirmOrderOutputFile); if (confirmOrderFile.exists()) { confirmOrderFile.delete(); } //删除旧的取消订单文件 File cancelOrderFile = new File(dirName + "\\" + cancelOrderOutputFile); if (cancelOrderFile.exists()) { cancelOrderFile.delete(); } //生成sycOrder数据文件 gen.generateSyncOrderData(genNo, dirName + "\\" + syncOrderOutputFile); //生成confirmOrder数据文件 gen.generateConfimrOrCancelOrderData(dirName + "\\" + confirmOrderOutputFile,confirmOrderTempFile); //生成cancelOrder数据文件 gen.generateConfimrOrCancelOrderData(dirName + "\\" + cancelOrderOutputFile, cancelOrderTempFile); //保存生成的sourceOrderNo到临时表 gen.saveTempOrderNoData(); } private void generateConfimrOrCancelOrderData(String fileName, String tempFileSrc) { String content = null; try { //Writer writer = new FileWriter(fileName, true); Writer writer = new OutputStreamWriter(new FileOutputStream(fileName),"UTF-8"); for (int i = 0 ;i < tmpOrderNos.size() ; i++) { content = readFileByLines(dirName + "\\" + tempFileSrc); //假如是确认订单,则将百分之二十的付款情况设为未付款 if(content.contains(confirmOrderActionLabel)){ String payAction = confirmOrderActionLabel+confirmOrderActionPayed; if(i%4 == 0){ payAction = confirmOrderActionLabel+confirmOrderActionCancel; } content = content.replaceAll(confirmOrderActionLabel,payAction); } String newNo = tmpOrderNos.get(i); newNo = prefixLabel+newNo; content=content.replaceAll(prefixLabel,newNo); writer.write(content + "\t\n"); } writer.close(); } catch (IOException e) { e.printStackTrace(); } } private void generateSyncOrderData(int count, String fileName) { String[] dir = new File(dirName).list(); for (int i = 0; i < dir.length; i++) { if (dir[i].endsWith(".xml") && !dir[i].contains("Tmp")) { // System.out.println(dirName+"\\"+dir[i]); names.add(dirName + "\\" + dir[i]); } } // get new hybrisOrderNo Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String noStart = "9" + sdf.format(date); // write to dat file int i = 0; int j = 0; String content = null; try { //Writer writer = new FileWriter(fileName, true); Writer writer = new OutputStreamWriter(new FileOutputStream(fileName),"UTF-8"); while (i < count) { content = readFileByLines(names.get(j)); content = setNewHybrisOrderNo(content, noStart, names.get(j), i); writer.write(content + "\t\n"); i++; if (j == names.size() - 1) { j = 0; } else { j++; } } writer.close(); } catch (IOException e) { e.printStackTrace(); } } public String setNewHybrisOrderNo(String content, String start, String fileName, int no) { int index = fileName.lastIndexOf("\\"); String oldNo = fileName.substring(index + 1, fileName.length() - 4); System.out.println("new hybris order no is: "); String str = String.valueOf(no + 100001).substring(2); String newNo = start + str; System.out.println(newNo); tmpOrderNos.add(newNo); // content = content.replace("<"+prefix+">"+oldNo+"</"+prefix+">", content = content.replaceAll(oldNo, newNo); // System.out.println(content); return content; } public String readFileByLines(String fileName) { StringBuffer buffer = new StringBuffer(); File file = new File(fileName); BufferedReader reader = null; try { // System.out.println("begin read file "+fileName); InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8"); reader = new BufferedReader(isr); String tempString = null; int line = 1; while ((tempString = reader.readLine()) != null) { buffer.append(tempString); line++; } reader.close(); // System.out.println(buffer.toString()); return buffer.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader ! 4000 = null) { try { reader.close(); } catch (IOException e1) { } } } return ""; } /** * 清空临时表数据 */ private void saveTempOrderNoData(){ Connection conn = getConn(); Statement stmt = null; try { conn.setAutoCommit(false); stmt = conn.createStatement(); for(String orderNo : tmpOrderNos){ String sql = "insert into power_test values('"+orderNo+"') "; stmt.addBatch(sql); } stmt.executeBatch(); conn.commit(); } catch (SQLException e) { e.printStackTrace(); }finally { closeConn(stmt,conn); } } /** * 获取数据库连接 * @return */ private Connection getConn(){ if(connection!=null){ return connection; } try { Driver driver = getDrive(); Properties properties = new Properties(); properties.setProperty("user",userName); properties.setProperty("password", password); Connection connection = driver.connect(url, properties); System.out.println(connection); return connection; } catch (Exception e) { System.out.println("连接数据库异常"); e.printStackTrace(); } return null; } /** * 关闭数据库连接 * @param stmt * @param conn */ private void closeConn(Statement stmt,Connection conn){ try { if(stmt != null){ stmt.close(); } if(conn != null){ conn.close(); } }catch (Exception e){ e.printStackTrace(); } } /** * 获取数据库驱动 * @return */ private Driver getDrive(){ try { File file = new File(dirName+"\\"+"ojdbc14.jar"); URLClassLoader loader = new URLClassLoader(new URL[] { file.toURI().toURL() }); Class clazz = loader.loadClass("oracle.jdbc.driver.OracleDriver"); Driver driver = (Driver) clazz.newInstance(); return driver; } catch (Exception e) { e.printStackTrace(); } return null; } }
相关文章推荐
- mysql_config_editor工具
- OTL连接MySQL之unixODBC、mysql-connector-odbc安装配置
- 数据库的视图和索引的概念和区别
- Django连接MySQL
- MySQL 数据库性能优化之缓存参数优化
- 精简的后台程序代码——Sql
- 源码-PL/SQL从入门到精通-第八章-记录与集合-Part 3
- MySQL 数据库性能优化之表结构优化
- mysql循环插入数据
- 数据库连接池概述
- MySQL设置远程访问
- centos6.5下Redis3.2.1安装和配置
- MySQL 数据库性能优化之索引优化
- MySQL设置远程访问
- sql 查询插入
- MySQL 数据库性能优化之SQL优化
- Mongodb GridFS中对文件的上传、下载、删除
- Redis cluster简介
- MySQL 的各存储引擎特点-MySQ 存储引擎选择
- 事务了解