OSDN Git Service

2019-02-11
[hayashilib/hayashi.git] / src / jp / co / areaweb / tools / database / Select.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  * SQL文が記述されたファイルを読み込んで実行する。\r
9  *\r
10  * ・SELECTコマンドは実行できない。\r
11  */\r
12 public class Select\r
13 {\r
14     /** コマンドラインラインからdoSQLを実行する。\r
15      * java DoSQL [SQLファイル名]\r
16      * exp) java dbtool.DoSQL  sqlfile.sql\r
17      * @param args パラメータ\r
18      */\r
19     static public void main(String[] args) {\r
20         if (args.length < 2) {\r
21             System.out.println("exp: java jp.co.areaweb.tools.database.Select [propertieFile] [sqlfile]");\r
22         }\r
23         else {\r
24             Select.doSQL(args[0], args[1]);\r
25         }\r
26     }\r
27 \r
28     /**\r
29      * sqlfileの中のSQL文を1行づつ実行する。\r
30      * ・SELECT文は実行できない。\r
31      * ・一つのSQL文は1行で記述すること。(途中改行はだめ)\r
32      * @param propertieFile             プロパティファイル\r
33      * @param sqlfile SQL文が記述されたファイル。\r
34      */\r
35     public static void doSQL(String propertieFile, String sqlfile) {\r
36         try (Connection conn = DatabaseTool.openDb(propertieFile)) {\r
37             BufferedReader ds = new BufferedReader(new InputStreamReader(new FileInputStream(sqlfile)));\r
38             String sqlStr = "";\r
39             while ((sqlStr = ds.readLine()) != null) {\r
40                 sqlStr = JapaneseString.trim(sqlStr);\r
41                 if (sqlStr.endsWith(";")) {\r
42                         sqlStr = sqlStr.substring(0, sqlStr.length() - 1);\r
43                 }\r
44                 System.out.println(sqlStr);\r
45                 sqlExecute(conn, sqlStr);\r
46             }\r
47             System.out.println("SQL Finished");\r
48         }\r
49         catch(Exception e) {\r
50             System.out.println(e);\r
51             e.printStackTrace();\r
52         }\r
53     }\r
54 \r
55     /**\r
56      * sqlStrを実行する\r
57      * @param conn データベースコネクション\r
58      * @param sqlStr 実行するSQL文\r
59      * @throws SQLException SQL実行エラー\r
60      */\r
61     public static void sqlExecute(Connection conn, String sqlStr) throws SQLException {\r
62         try (Statement statement = conn.createStatement();\r
63             ResultSet rs = statement.executeQuery(sqlStr))\r
64         {\r
65             ResultSetMetaData rsmd = rs.getMetaData();\r
66             int count = rsmd.getColumnCount();\r
67             while (rs.next()) {\r
68                 for (int column = 1; column <= count; column++) {\r
69                     System.out.print("'"+ rs.getString(column) +"'");\r
70                     if (column < count) {\r
71                         System.out.print(",");\r
72                     }\r
73                 }\r
74                 System.out.print("\n");\r
75             }\r
76         }\r
77     }\r
78 }\r