对sql文件进行读取并通过JDBC批量执行
生活随笔
收集整理的這篇文章主要介紹了
对sql文件进行读取并通过JDBC批量执行
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
public class MySQLHandle {//mysql驅動包名private static final String DRIVER_NAME = "com.mysql.jdbc.Driver";//數據庫連接地址private static final String URL = "jdbc:mysql://localhost:3306/test";//用戶名private static final String USER_NAME = "root";//密碼private static final String PASSWORD = "rootroot";//數據庫連接對象private static Connection connection;public static void main(String[] args) {}static {try {//加載mysql的驅動類Class.forName(DRIVER_NAME);} catch (Exception e) {e.printStackTrace();}}//構造函數,包括連接數據庫等操作public MySQLHandle(){try {//加載mysql的驅動類Class.forName(DRIVER_NAME);//獲取數據庫連接connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);} catch (Exception e) {e.printStackTrace();connection = null;}}//帶參數構造函數,用于指定參數連接數據庫public MySQLHandle(String Database,String User,String Password){try {//獲取數據庫連接connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+Database, User, Password);} catch (Exception e) {e.printStackTrace();connection = null;}}public Connection getConnection(){return connection;}public static void ReleaseConnect(){if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}/*** @方法描述:批量執行SQL語句* @param sql 包含待執行的SQL語句的ArrayList集合* @return int 影響的函數*/public int batchDate(ArrayList<String> sql){try {Statement st = connection.createStatement();for(String subsql :sql){st.addBatch(subsql);}st.executeBatch();return 1;}catch (Exception e) {e.printStackTrace();return 0;}}/*** 以行為單位讀取文件,并將文件的每一行格式化到ArrayList中,常用于讀面向行的格式化文件*/private static ArrayList<String> readFileByLines(String filePath) throws Exception {ArrayList<String> listStr=new ArrayList<>();StringBuffer sb=new StringBuffer();BufferedReader reader = null;try {reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));String tempString = null;int flag=0;// 一次讀入一行,直到讀入null為文件結束while ((tempString = reader.readLine()) != null) {// 顯示行號// System.out.println("line " + line + ": " + tempString);if(tempString.trim().equals(""))continue;if(tempString.substring(tempString.length()-1).equals(";")){if(flag==1){sb.append(tempString);listStr.add(sb.toString());sb.delete(0,sb.length());flag=0;}elselistStr.add(tempString);}else{flag=1;sb.append(tempString);}}reader.close();} catch (IOException e) {e.printStackTrace();throw e;} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}return listStr;}/*** 讀取文件內容到SQL中執行* @param sqlPath SQL文件的路徑:如:D:/TestProject/web/sql/腳本.Sql*/public void runSqlByReadFileContent(String sqlPath){try {ArrayList<String> sqlStr = readFileByLines(sqlPath);if (sqlStr.size() > 0) {int num=batchDate(sqlStr);if(num>0)System.out.println("執行成功");elseSystem.out.println("未有執行的SQL語句");}else{System.out.println("沒有需要執行的SQL語句");}} catch (Exception e) {e.printStackTrace();}}
}
?
總結
以上是生活随笔為你收集整理的对sql文件进行读取并通过JDBC批量执行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: glibc交叉编译_TSN之linuxp
- 下一篇: 让PPT设计更出彩的技巧都有哪些?