OSDN Git Service

Merge branch 'master' of ssh://www.deister.jp/mnt/hdb1/git/hayashi
[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 sqlfile SQL文が記述されたファイル。\r
34      */\r
35     public static void doSQL(String propertieFile, String sqlfile) {\r
36         Connection conn = null;\r
37         try {\r
38             conn = DatabaseTool.openDb(propertieFile);\r
39             \r
40             BufferedReader ds = new BufferedReader(new InputStreamReader(new FileInputStream(sqlfile)));\r
41             String sqlStr = "";\r
42             while ((sqlStr = ds.readLine()) != null) {\r
43                 sqlStr = JapaneseString.trim(sqlStr);\r
44                 if (sqlStr.endsWith(";")) {\r
45                         sqlStr = sqlStr.substring(0, sqlStr.length() - 1);\r
46                 }\r
47                 System.out.println(sqlStr);\r
48                 sqlExecute(conn, sqlStr);\r
49             }\r
50 \r
51             ds.close();\r
52             System.out.println("SQL Finished");\r
53         }\r
54         catch(Exception e) {\r
55             // Print out the error message\r
56             System.out.println(e);\r
57             e.printStackTrace();\r
58         }\r
59         finally {\r
60             if (conn != null) {\r
61                 DatabaseTool.closeDb(conn);\r
62             }\r
63         }\r
64     }\r
65 \r
66     /**\r
67      * sqlStrを実行する\r
68      * @param conn データベースコネクション\r
69      * @param sqlStr 実行するSQL文\r
70      * @throws SQLException SQL実行エラー\r
71      */\r
72     static void sqlExecute(Connection conn, String sqlStr) throws SQLException {\r
73         // Create a statement object\r
74         Statement stat = conn.createStatement();\r
75 \r
76         // For compatibility to other database, use varchar(255)\r
77         // In Hypersonic SQL, length is unlimited, like Java Strings\r
78         stat.execute(sqlStr);\r
79 \r
80         // Close the Statement object, it is no longer used\r
81         stat.close();\r
82     }\r
83 }\r