OSDN Git Service

2019-02-11
[hayashilib/hayashi.git] / src / jp / co / areaweb / tools / database / DoSQL.java
1 package jp.co.areaweb.tools.database;\r
2 \r
3 import java.io.*;\r
4 import java.sql.*;\r
5 import jp.co.areaweb.tools.core.JapaneseString;\r
6 \r
7 \r
8 /**\r
9  * SQL文が記述されたファイルを読み込んで実行する。\r
10  *\r
11  * ・SELECTコマンドは実行できない。\r
12  */\r
13 public class DoSQL\r
14 {\r
15     /** コマンドラインラインからdoSQLを実行する。\r
16      * java DoSQL [SQLファイル名]\r
17      * exp) java dbtool.DoSQL  sqlfile.sql\r
18      * @param args パラメータ\r
19      */\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
23         }\r
24         else {\r
25             DoSQL.doSQL(args[0], args[1]);\r
26         }\r
27     }\r
28 \r
29     /**\r
30      * sqlfileの中のSQL文を1行づつ実行する。\r
31      * ・SELECT文は実行できない。\r
32      * ・一つのSQL文は1行で記述すること。(途中改行はだめ)\r
33      * @param propertieFile             プロパティファイル\r
34      * @param sqlfile SQL文が記述されたファイル。\r
35      */\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
39                 String sqlStr = "";\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
44                     }\r
45                     System.out.println(sqlStr);\r
46                     sqlExecute(conn, sqlStr);\r
47                 }\r
48             }\r
49             System.out.println("SQL Finished");\r
50         }\r
51         catch(IOException | ClassNotFoundException | SQLException e) {\r
52             System.out.println(e);\r
53             e.printStackTrace();\r
54         }\r
55     }\r
56 \r
57     /**\r
58      * sqlStrを実行する\r
59      * @param conn データベースコネクション\r
60      * @param sqlStr 実行するSQL文\r
61      * @throws SQLException SQL実行エラー\r
62      */\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
66 \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
70 \r
71         // Close the Statement object, it is no longer used\r
72         stat.close();\r
73     }\r
74 }\r