1 import java.sql.Connection;
2 import java.sql.ResultSet;
3 import java.sql.ResultSetMetaData;
4 import java.sql.Statement;
5 import java.sql.SQLException;
6 import java.io.File;
7 import java.io.IOException;
8 import java.util.Scanner;
9
10 /**
11 Executes all SQL statements from a file or the console.
12 */
13 public class ExecSQL
14 {
15 public static void main(String[] args)
16 throws SQLException, IOException, ClassNotFoundException
17 {
18 if (args.length == 0)
19 {
20 System.out.println(
21 "Usage: java -classpath driver_class_path"
22 + File.pathSeparator
23 + ". ExecSQL propertiesFile [SQLcommandFile]");
24 return;
25 }
26
27 SimpleDataSource.init(args[0]);
28
29 Scanner in;
30 if (args.length > 1)
31 {
32 in = new Scanner(new File(args[1]));
33 }
34 else
35 {
36 in = new Scanner(System.in);
37 }
38
39 Connection conn = SimpleDataSource.getConnection();
40 try
41 {
42 Statement stat = conn.createStatement();
43 while (in.hasNextLine())
44 {
45 String line = in.nextLine();
46 try
47 {
48 boolean hasResultSet = stat.execute(line);
49 if (hasResultSet)
50 {
51 ResultSet result = stat.getResultSet();
52 showResultSet(result);
53 result.close();
54 }
55 }
56 catch (SQLException ex)
57 {
58 System.out.println(ex);
59 }
60 }
61 }
62 finally
63 {
64 conn.close();
65 }
66 }
67
68 /**
69 Prints a result set.
70 @param result the result set
71 */
72 public static void showResultSet(ResultSet result)
73 throws SQLException
74 {
75 ResultSetMetaData metaData = result.getMetaData();
76 int columnCount = metaData.getColumnCount();
77
78 for (int i = 1; i <= columnCount; i++)
79 {
80 if (i > 1) { System.out.print(", "); }
81 System.out.print(metaData.getColumnLabel(i));
82 }
83 System.out.println();
84
85 while (result.next())
86 {
87 for (int i = 1; i <= columnCount; i++)
88 {
89 if (i > 1) { System.out.print(", "); }
90 System.out.print(result.getString(i));
91 }
92 System.out.println();
93 }
94 }
95 }