📄 java_4_1.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.sql.*;
import javax.swing.*;
import javax.swing.table.*;
class RSTable extends AbstractTableModel {
private Connection con;
public Statement st;
public ResultSet rs;
private ResultSetMetaData rsmd;
private int numberOfRows;
private String user="sa",pass="457815",
qs = "SELECT * FROM Stuffinfo";
public RSTable(String query) throws SQLException,ClassNotFoundException
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:PIMS","sa","457815");
st = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
// 设置结果集为可滚动并且是可以更新
setQuery(query);
}
public Class getColumnClass(int column)
{
try { // 获得结果集列的类名
String className =rsmd.getColumnClassName(column+1);
return Class.forName( className );
}catch ( Exception e ) {
System.out.println(e);
}
return Object.class;
}
public int getColumnCount(){
try {
return rsmd.getColumnCount();// 获得结果集的列数
}catch ( SQLException se ){
System.out.println(se);
}
return 0; // 出错时返回0列
}
public String getColumnName( int column ){
try {
return rsmd.getColumnName( column + 1 );
// 获得结果集的列名
}catch ( SQLException se ) {
System.out.println(se);
}
return ""; // 出错时返回空字符串
}
public int getRowCount(){
return numberOfRows; // 获得结果集的行数
} // 获得结果集指定行列处的数据
public Object getValueAt( int row, int column ){
try {
rs.absolute( row + 1 );
return rs.getObject( column + 1 );
}catch (SQLException se) {
System.out.println(se);
}
return "";
}
protected void finalize(){
// 在对象撤销时自动调用来关闭数据库连接等
try {
rs.close(); st.close(); con.close();
}catch ( SQLException se ){
System.out.println(se);
}
}
public void setQuery( String query ) throws SQLException{
rs=st.executeQuery(query);//执行查询,返回结果集
rsmd = rs.getMetaData(); // 获得结果集的元数据
rs.last(); // 移动数据表指针到最后一行
numberOfRows = rs.getRow();// 获得最后一行的行号
fireTableStructureChanged();// 更新查询显示
}
}
public class Java_4_1 extends JFrame implements ActionListener{
private RSTable table;
private JTextArea jta;
String ss,s,s2;
public Java_4_1(){
super( "JdbcGUI应用程序:显示数据库查询结果" );
// 设置窗口标题
String qs = "select * from Stuffinfo where sno='001'";
// 设置初始显示的SQL语句
try {
table = new RSTable(qs ); // 创建RSTable对象
jta = new JTextArea( qs, 2, 100 );//设置文本区
jta.setWrapStyleWord( true ); // 设置换行属性
jta.setLineWrap( true ); // 设置文本区换行属性
jta.setFont(new Font("宋体",Font.PLAIN,13));//设置字体
JScrollPane scrollPane = new JScrollPane(jta,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER );
// 设置滚动面板
JLabel jl= new JLabel("<Html><Font color=red>输入SQL语句:");
JButton jb = new JButton("查询");
JButton jb1 = new JButton("修改");
JButton jb2 = new JButton("删除");
JButton jb3 = new JButton("插入");
JPanel jp=new JPanel(); // 创建面板对象
jp.setLayout(new GridLayout(3,2));
// 设置面板的布局为BorderLayout
jp.add(jl); // 添加到面板
jp.add(scrollPane);
// 添加到面板
jp.add(jb); // 添加到面板
jp.add(jb1);
jp.add(jb2);
jp.add(jb3);
JTable resultTable = new JTable(table);
resultTable.getTableHeader().setBackground(Color.blue); //设置表格标题背景色为蓝色
resultTable.getTableHeader().setForeground(Color.orange); //设置表格标题前景色为橙色
getContentPane().add( jp, BorderLayout.NORTH );
// 添加面板到窗体
getContentPane().add( new JScrollPane(resultTable),
BorderLayout.CENTER );
// 添加表格到窗体
jb.addActionListener(this); // 注册动作监听器
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb.setActionCommand("查询");
jb1.setActionCommand("修改");
jb2.setActionCommand("删除");
jb3.setActionCommand("插入");
}catch ( ClassNotFoundException e) {
JOptionPane.showMessageDialog( null,"数据库驱动程序未找到!","驱动程序未找到",JOptionPane.ERROR_MESSAGE );
System.exit(1); // 终止应用程序
}catch (SQLException e) {
JOptionPane.showMessageDialog( null, "数据库错误!","数据库错误",JOptionPane.ERROR_MESSAGE );
System.exit(1); // 终止应用程序
}
}
public void actionPerformed( ActionEvent e ){
try {
String cmd =e.getActionCommand();
if (cmd.equals("查询"))
table.setQuery("select * from Stuffinfo");
if (cmd.equals("修改"))
{
ss=JOptionPane.showInputDialog("请输入你要修改的员工的员工号码:");
s=JOptionPane.showInputDialog("请选择该员工的所属部门:\n 1.人事部\n 2.营销部\n 3.企划部\n 4.退出");
if(s.equals("1"))
s="人事部";
else if(s.equals("2"))
s="营销部";
else if(s.equals("3"))
s="企划部";
else if(s.equals("4"))
s="";
jta.setText("update Stuffinfo set sdepart= '"+s+"'where sno='"+ss+"'");
table.st.executeUpdate(jta.getText());
table.setQuery("select * from Stuffinfo");
}
if (cmd.equals("删除"))
{
ss=JOptionPane.showInputDialog("请输入你要删除的员工的员工号码:");
jta.setText("delete from Stuffinfo where sno="+"'"+ss+"'");
table.st.executeUpdate(jta.getText());
table.setQuery("select * from Stuffinfo");
}
if (cmd.equals("插入")){
ss="insert into Stuffinfo(Sno,Sname,Ssex,sage,Sreword,sdepart)values('";
s2=JOptionPane.showInputDialog("请输入你要新员工的员工号码:");
s2+="','";
ss+=s2;
s2=JOptionPane.showInputDialog("请输入你要新员工的姓名:");
s2+="','";
ss+=s2;
s2=JOptionPane.showInputDialog("请输入你要新员工的性别:");
s2+="','";
ss+=s2;
s2=JOptionPane.showInputDialog("请输入你要新员工的年龄:");
s2+="','";
ss+=s2;
s2=JOptionPane.showInputDialog("请输入你要新员工的月薪:");
s2+="','";
ss+=s2;
s=JOptionPane.showInputDialog("请选择该员工的所属部门:\n 1.人事部\n 2.营销部\n 3.企划部\n 4.退出");
if(s.equals("1"))
s="人事部";
else if(s.equals("2"))
s="营销部";
else if(s.equals("3"))
s="企划部";
else if(s.equals("4"))
s="";
s+="')";
ss+=s;
jta.setText(ss);
table.st.executeUpdate(jta.getText());
table.setQuery("select * from Stuffinfo ");
}
// 将输入在文本区中SQL语句作查询
}
catch (SQLException se) {//显示出错信息
JOptionPane.showMessageDialog( null, se.toString(),
"数据库错误",JOptionPane.ERROR_MESSAGE );
}
}
public static void main(String args[]){
Java_4_1 app = new Java_4_1();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize( 680, 250 ); // 设置初始窗口大小
app.setVisible( true );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -