OSDN Git Service

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