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