1 package jp.co.areaweb.tools.database;
\r
5 import jp.co.areaweb.tools.core.JapaneseString;
\r
9 * SQL文が記述されたファイルを読み込んで実行する。
\r
11 * ・SELECTコマンドは実行できない。
\r
15 /** コマンドラインラインからdoSQLを実行する。
\r
16 * java DoSQL [SQLファイル名]
\r
17 * exp) java dbtool.DoSQL sqlfile.sql
\r
20 static public void main(String[] args) {
\r
21 if (args.length < 2) {
\r
22 System.out.println("exp: java dbtool.DoSQL [propertieFile] [sqlfile]");
\r
25 DoSQL.doSQL(args[0], args[1]);
\r
30 * sqlfileの中のSQL文を1行づつ実行する。
\r
32 * ・一つのSQL文は1行で記述すること。(途中改行はだめ)
\r
33 * @param propertieFile プロパティファイル
\r
34 * @param sqlfile SQL文が記述されたファイル。
\r
36 public static void doSQL(String propertieFile, String sqlfile) {
\r
37 try (Connection conn = DatabaseTool.openDb(propertieFile)) {
\r
38 try (BufferedReader ds = new BufferedReader(new InputStreamReader(new FileInputStream(sqlfile)))) {
\r
40 while ((sqlStr = ds.readLine()) != null) {
\r
41 sqlStr = JapaneseString.trim(sqlStr);
\r
42 if (sqlStr.endsWith(";")) {
\r
43 sqlStr = sqlStr.substring(0, sqlStr.length() - 1);
\r
45 System.out.println(sqlStr);
\r
46 sqlExecute(conn, sqlStr);
\r
49 System.out.println("SQL Finished");
\r
51 catch(IOException | ClassNotFoundException | SQLException e) {
\r
52 System.out.println(e);
\r
53 e.printStackTrace();
\r
59 * @param conn データベースコネクション
\r
60 * @param sqlStr 実行するSQL文
\r
61 * @throws SQLException SQL実行エラー
\r
63 public static void sqlExecute(Connection conn, String sqlStr) throws SQLException {
\r
64 // Create a statement object
\r
65 Statement stat = conn.createStatement();
\r
67 // For compatibility to other database, use varchar(255)
\r
68 // In Hypersonic SQL, length is unlimited, like Java Strings
\r
69 stat.execute(sqlStr);
\r
71 // Close the Statement object, it is no longer used
\r