Java操作資料庫,直接執行sql語句
阿新 • • 發佈:2019-02-13
TDDL也一樣,首先通過appName和group獲取到TGroupDataSource,然後通過TGroupDataSource.getConnection獲取TGroupConnection用這個
connection去操作statment就可以了
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /* * 使用java以及jdbc執行sql指令碼的工具示例程式碼 */ public class SqlHelper { public static void main(String[] args){ String path = "檔案地址字串"; String sql = getText(path); List<String> sqlarr = getSql(sql); for(int i=0; i<10; i++){ System.out.println(i+":"+sqlarr.get(i)); } try{ SqlHelper.execute(getConn(),sqlarr); }catch(Exception e){ e.printStackTrace(); } } private static Connection getConn() { String driver = "com.mysql.jdbc.Driver"; String url = "資料庫連線"; String username = "賬號"; String password = "密碼"; Connection conn = null; try { Class.forName(driver); //classLoader,載入對應驅動 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static void execute(Connection conn, List<String> sqlFile) throws Exception { Statement stmt = null; stmt = conn.createStatement(); for (String sql : sqlFile) { sql = sql.trim(); if(sql!=null&&!sql.equals("")) stmt.addBatch(sql); } int[] rows = stmt.executeBatch(); System.out.println("Row count:" + Arrays.toString(rows)); conn.close(); } /* * getText方法吧path路徑裡面的檔案按行讀數來放入一個大的String裡面去 * 並在換行的時候加入\r\n */ public static String getText(String path){ File file = new File(path); if(!file.exists()||file.isDirectory()){ return null; } StringBuilder sb = new StringBuilder(); try{ FileInputStream fis = new FileInputStream(path); InputStreamReader isr = new InputStreamReader(fis,"UTF-8"); BufferedReader br = new BufferedReader(isr); String temp = null; temp = br.readLine(); while(temp!=null){ if(temp.length()>=2){ String str1 = temp.substring(0, 1); String str2 = temp.substring(0, 2); if(str1.equals("#")||str2.equals("--")||str2.equals("/*")||str2.equals("//")){ temp = br.readLine(); continue; } sb.append(temp+"\r\n"); } temp = br.readLine(); } br.close(); }catch(Exception e){ e.printStackTrace(); } return sb.toString(); } /* * getSqlArray方法 * 從檔案的sql字串中分析出能夠獨立執行的sql語句並返回 */ public static List<String> getSql(String sql){ String s = sql; s = s.replaceAll("\r\n", "\r"); s = s.replaceAll("\r", "\n"); List<String> ret = new ArrayList<String>(); String[] sqlarry = s.split(";"); //用;把所有的語句都分開成一個個單獨的句子 sqlarry = filter(sqlarry); ret = Arrays.asList(sqlarry); return ret; } public static String[] filter(String[] ss){ List<String> strs = new ArrayList<String>(); for(String s : ss){ if(s!=null&&!s.equals("")){ strs.add(s); } } String[] result = new String[strs.size()]; for(int i=0; i<strs.size(); i++){ result[i] = strs.get(i).toString(); } return result; } }