/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package queryexecutor;
import java.awt.BorderLayout;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.Properties;
import java.sql.*;
import java.util.Vector;
import javax.swing.*;
/**
*
* @author 91152
*/
public class QueryExecutor {
JFrame jf = new JFrame("查询执行器");
private JTextField sqlField = new JTextField(45);
private JButton execBn = new JButton("查询");
private JScrollPane scrollPane;
private static Connection conn;
private static Statement stmt;
static{
try{
Properties prop = new Properties();
prop.load(new FileInputStream("mysql.ini"));
String drivers = prop.getProperty("driver");
String url = prop.getProperty("url");
String username = prop.getProperty("user");
String password = prop.getProperty("pass");
Class.forName(drivers);
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement();
}
catch(Exception e){
e.printStackTrace();
}
}
private void init(){
JPanel top = new JPanel();
top.add(new JLabel("输入查询语句:"));
top.add(sqlField);
top.add(execBn);
execBn.addActionListener(new ExceListener());
sqlField.addActionListener(new ExceListener());
jf.add(top,BorderLayout.NORTH);
jf.setSize(700,480);
//jf.pack();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
class ExceListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(scrollPane != null){
jf.remove(scrollPane);
}
try(ResultSet rs = stmt.executeQuery(sqlField.getText())){
ResultSetMetaData rsmd = rs.getMetaData();
Vector<String> columnNames = new Vector<>();
Vector<Vector<String>> data = new Vector<>();
for(int i =0; i<rsmd.getColumnCount();i++){
columnNames.add(rsmd.getColumnName(i+1));
}
while (rs.next()){
Vector<String> v= new Vector<>();
for(int i =0;i < rsmd.getColumnCount();i++){
v.add(rs.getString(i+1));
}
data.add(v);
}
JTable table = new JTable(data,columnNames);
scrollPane = new JScrollPane(table);
jf.add(scrollPane);
jf.validate();
}
catch(SQLException sl){
sl.printStackTrace();
}
}
}
public static void main(String[] args) {
new QueryExecutor().init();
}
}