1 package nmp.dbms.util;
2
3 import java.util.*;
4 import java.io.*;
5 import javax.swing.*;
6 import java.awt.*;
7 import java.awt.event.*;
8 import nmp.dbms.JDBC.*;
9
10 public class XInterDB {
11 public static void main( String[] args)
12 throws IOException{
13 if( args == null || ( args.length != 3 && args.length != 4)) {
14 System.err.println( "Usage:\n InterDB url userName userPwd [driver]");
15 return;
16 }
17
18 try {
19 Jdbc_Sql sql = null;
20 if( args.length == 3)
21 sql = new Jdbc_Sql( "sun.jdbc.odbc.JdbcOdbcDriver", args[0], args[1], args[2]);
22 else
23 sql = new Jdbc_Sql( args[3], args[0], args[1], args[2]);
24
25 doit( sql,args[0]);
26
27 sql.closeAll();
28 }
29 catch( Exception e) {
30 PrintWriter pw;
31 String name = args[0].substring( args[0].lastIndexOf( ':') + 1);
32 try {
33 pw = new PrintWriter( new FileWriter( "ERR_" + name + ".log", true));
34 }
35 catch( FileNotFoundException e0) {
36 pw = new PrintWriter( new FileWriter( "ERR_" + name + ".log"));
37 }
38 e.printStackTrace( pw);
39 pw.println();
40 pw.flush();
41 }
42 }
43
44 static void doit( Jdbc_Sql sql, String name) {
45 new XInterFrame( sql, name);
46 }
47 static void doit( Jdbc_Sql sql) {
48 new XInterFrame( sql);
49 }
50 }
51
52 class XInterFrame extends JFrame
53 {
54 Jdbc_Sql sql;
55 JTextField f_statement;
56 JTextArea f_result;
57 Vector s_list = new Vector();
58 int cur = 0;
59
60 public XInterFrame( Jdbc_Sql sql) {
61 this( sql, "unknown name");
62 }
63 public XInterFrame( Jdbc_Sql sql, String name) {
64 super( name);
65 this.sql = sql;
66 getContentPane().setLayout( new BorderLayout());
67 JPanel panel = new JPanel();
68 f_statement = new JTextField( 50) {
69 protected void processComponentKeyEvent(KeyEvent e) {
70 if( e.getID() == e.KEY_PRESSED) {
71 if( e.getKeyCode() == e.VK_UP) {
72 if( cur > 0) {
73 String str = (String)s_list.elementAt( --cur);
74 f_statement.setText( str);
75 f_statement.setCaretPosition( str.length());
76 }
77 return;
78 } else if( e.getKeyCode() == e.VK_DOWN) {
79 if( cur == s_list.size() - 1) {
80 cur++;
81 f_statement.setText( "");
82 f_statement.setCaretPosition( 0);
83 } else if( cur < s_list.size() - 1) {
84 String str = (String)s_list.elementAt( ++cur);
85 f_statement.setText( str);
86 f_statement.setCaretPosition( str.length());
87 }
88 return;
89 }
90 }
91 super.processComponentKeyEvent( e);
92 }
93 };
94 f_statement.addActionListener( new ActionListener() {
95 public void actionPerformed(ActionEvent e) {
96 process();
97 }
98 });
99 panel.add( f_statement);
100 JButton button = new JButton( "Exec");
101 button.addActionListener( new ActionListener() {
102 public void actionPerformed(ActionEvent e) {
103 process();
104 }
105 });
106 panel.add( button);
107 getContentPane().add( "North", panel);
108 f_result = new JTextArea( 20, 50);
109 f_result.setEditable( false);
110 getContentPane().add( "Center", new JScrollPane( f_result));
111 addWindowListener( new WindowAdapter() {
112 public void windowClosing(WindowEvent e) {
113 dispose();
114 System.exit( 0);
115 }
116 });
117 pack();
118 setVisible( true);
119 }
120
121 void process() {
122 String line = f_statement.getText().trim();
123 if( line.equals( "quit")) {
124 dispose();
125 System.exit( 0);
126 return;
127 }
128 s_list.addElement( line);
129 if( s_list.size() == 20)
130 s_list.removeElementAt( 0);
131 cur = s_list.size();
132 f_statement.setText("");
133 CharArrayWriter caw = new CharArrayWriter();
134 PrintWriter pw = new PrintWriter( caw);
135 pw.println( line);
136 try {
137 if( line.startsWith( "select"))
138 Utilities.displayResultSet( pw, sql.executeQuery( line));
139 else
140 pw.println( sql.executeUpdate( line) + " rows modified");
141 } catch( Exception e) {
142 pw.println( e.getMessage());
143 e.printStackTrace( pw);
144 }
145 pw.flush();
146 caw.flush();
147 f_result.setText( caw.toString());
148 f_result.setCaretPosition( 0);
149 }
150
151 }
152
This page was automatically generated by Maven