📄 distill[anank].java
字号:
import javax.swing.*;
import java.awt.*;
import java.sql.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.table.* ;
import javax.swing.event.ListSelectionListener ;//用ListSelectionListener和ListSelectionEvent的时候好像要单独引入!~
import javax.swing.event.ListSelectionEvent ;
import java.util.Date ;
import java.lang.Boolean ;
public class Distill
{
static Object[][] myData = new Object[100][6] ;//这个地方必须给出空间!
public Distill()
{
JFrame.setDefaultLookAndFeelDecorated(true);//把JFrame设置城修饰的外观!
for( int i = 0 ;i < 100 ; i++)
for(int j = 0 ;j < 5; j++)
myData[i][j] = new String() ;
for(int i = 0 ; i< 100 ;i++)
myData[i][5] = new Boolean(false) ;
final JFrame frame = new JFrame("寄存设置--提取") ;
frame.setSize(600, 450) ;
//建立上面的面板,设置布局管理方法:GridBagLayout
JPanel panUp = new JPanel() ;
GridBagLayout gbl = new GridBagLayout() ;
GridBagConstraints gbc = new GridBagConstraints() ;
panUp.setLayout(gbl) ;
//
JLabel lblNumber = new JLabel("根据寄存号码查询", SwingConstants.LEFT) ;
gbc.gridx = 0 ;
gbc.gridy = 0 ;
gbc.gridwidth = 1 ;
gbc.gridheight = 1 ;
gbl.setConstraints(lblNumber, gbc) ;
panUp.add(lblNumber) ;
//
final JTextField txtNumber = new JTextField(12) ;
/*
*为txtNumber田间监听程序:
*如果txtNumber获得焦点,那么JTable里面的数据全面清除!
*/
gbc.gridx++ ;
gbc.gridy = gbc.gridy ;
gbc.gridwidth = 1 ;
gbc.gridheight = 1 ;
gbl.setConstraints(txtNumber, gbc) ;
panUp.add(txtNumber) ;
//
JLabel lblName = new JLabel("根据姓名查询") ;
gbc.gridx++ ;
gbc.gridy = gbc.gridy ;
gbc.gridwidth = 1 ;
gbc.gridheight = 1 ;
gbc.insets = new Insets(10, 20, 10, 20) ;
gbl.setConstraints(lblName, gbc) ;
panUp.add(lblName) ;
gbc.insets = new Insets(0, 0, 0, 0) ;
final JPasswordField txtPassword = new JPasswordField(10) ;
//
final JTextField txtName = new JTextField(10) ;
gbc.gridx++ ;
gbc.gridy = gbc.gridy ;
gbc.gridwidth = 1 ;
gbc.gridheight = 1 ;
gbl.setConstraints(txtName, gbc) ;
panUp.add(txtName) ;
panUp.setBorder(BorderFactory.createTitledBorder("查询")) ;
//
JButton btnQuery = new JButton("查询") ;
gbc.gridx++ ;
gbc.gridy = gbc.gridy ;
gbc.gridwidth = 1 ;
gbc.gridheight = 1 ;
gbc.ipadx = 50 ;
gbc.ipady = -4 ;
gbc.insets = new Insets(10, 40, 10, 0) ;
gbl.setConstraints(btnQuery, gbc) ;
panUp.add(btnQuery) ;
gbc.ipadx = 0 ;
gbc.ipady = 0 ;
gbc.insets = new Insets(0, 0, 0, 0) ;
//panUp已经设计完毕!
//panUnder布局管理设置成GridBagLayout
JPanel panUnder = new JPanel() ;
GridBagLayout gbl2 = new GridBagLayout() ;
GridBagConstraints gbc2 = new GridBagConstraints() ;
panUnder.setLayout(new BorderLayout()) ;
//在树的上面
ModelTable model = new ModelTable() ;
final JTable table = new JTable(model) ;
panUnder.add(new JScrollPane(table), "West") ;
//定义一个新的JPanel,放置别的组件
JPanel panRight = new JPanel() ;
panRight.setLayout(gbl2) ;
//
JLabel lblPassword = new JLabel("请输入提取密码:") ;
gbc2.gridx = 0 ;
gbc2.gridy = 0 ;
gbc2.insets = new Insets(100, 0, 0, 0) ;
gbc2.gridwidth = 1;
gbc2.gridheight = 1 ;
gbl2.setConstraints(lblPassword, gbc2) ;
panRight.add(lblPassword) ;
gbc2.insets = new Insets(0, 0, 0, 0) ;
//
gbc2.gridx = gbc2.gridx ;
gbc2.gridy++ ;
gbc2.gridwidth = 1 ;
gbc2.gridheight = 1 ;
gbl2.setConstraints(txtPassword, gbc2) ;
panRight.add(txtPassword) ;
//
btnQuery.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
boolean boolQuery = false ;
String strNumber = new String() ;
String strName = new String() ;
String strConNumber = new String() ;
int rowSelected = 0 ;
String strGetPassword = new String() ;
if(txtNumber.getText().trim().length() != 0 && txtName.getText().length() != 0)
{
JOptionPane.showMessageDialog(null, "查询依据只能输一个!") ;
return ;
}
if(txtNumber.getText().length() != 0 || txtName.getText().length() != 0)
{
if(txtNumber.getText().trim().length() != 0)//如果根据寄存号码来查询!
{
strNumber = txtNumber.getText().trim() ;
}
if(txtName.getText().trim().length() != 0)
{
strName = txtName.getText().trim() ;
}
}
else
{
JOptionPane.showMessageDialog(null, "请输入一项查询依据!") ;
return ;
}
//上一段程序是测试应该采取哪种方法:
//进行数据库查询!
//数据库驱动程序注册!
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
}
catch(Exception ee)
{
JOptionPane.showMessageDialog(null, "数据库驱动程序注册失败!") ;
}
//连接数据库,并进行查询!
try
{
Connection con = DriverManager.getConnection("jdbc:odbc:Hotel") ;
Statement smt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE) ;
try
{
ResultSet rst = smt.executeQuery("SELECT * "+
"FROM table_Consign"
) ;
System.out.println("(2)") ;
rst.beforeFirst() ;
int numbers = -1 ;
while(rst.next())
{
String getNumber = rst.getString(1) ;
String getName = rst.getString(2) ;
strGetPassword = rst.getString(4) ;
String getConName = rst.getString(5) ;
int getCount = rst.getInt(6) ;
String strGetCount = String.valueOf(getCount) ;
String getTime = rst.getString(8) ;
String getState = rst.getString(12) ;
Boolean getBool = new Boolean(false) ;
if(getState.equals("提取"))
getBool = new Boolean(true) ;
else
getBool = new Boolean(false) ;
//根据寄存号码来查询!
if(getNumber.length() != 0 || getName.length() != 0)
if(getNumber.equals(strNumber) || getName.equals(strName))
{
numbers++ ;
if(numbers == 0)
JOptionPane.showMessageDialog(null, "找到数据!") ;
boolQuery = true ;
/*
*如果找到数据,那么现对原来的数据进行清空!然后输出找到的数据!
*/
if(numbers == 0 )
{
for( int i = 0 ;i < 100 ; i++)
for(int j = 0 ;j < 5; j++)
myData[i][j] = new String() ;
for(int i = 0 ; i< 100 ;i++)
myData[i][5] = new Boolean(false) ;
}
myData[numbers][0] = getNumber ;
myData[numbers][1] = getName ;
myData[numbers][2] = getConName ;
myData[numbers][3] = strGetCount ;
myData[numbers][4] = getTime ;
myData[numbers][5] = getBool ;
}
}//while循环结束!
}
catch(SQLException eee)
{
JOptionPane.showMessageDialog(null,eee.toString()) ;
}
}
catch(SQLException ee)
{
JOptionPane.showMessageDialog(null, "数据库连接失败!") ;
}
if(boolQuery == false)
{
JOptionPane.showMessageDialog(null, "没有找到符合条件的数据!") ;
for( int i = 0 ;i < 100 ; i++)
for(int j = 0 ;j < 5; j++)
myData[i][j] = new String() ;
for(int i = 0 ; i< 100 ;i++)
myData[i][5] = new Boolean(false) ;
}
//查询完毕!
/*
*程序设计缺陷:
*这个地方不管用户是不是要查询,系统都会查询一遍!
*/
}//处理函数结束!
}) ;//监听类结束!
JButton btnConfirm = new JButton("确定") ;
btnConfirm.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int rowSelected = table.getSelectedRow() ;
if(rowSelected == -1)
{
JOptionPane.showMessageDialog(null, "请选择一行!") ;
return ;
}
if(((Boolean)table.getModel().getValueAt(rowSelected, 5)).booleanValue() == true)
{
JOptionPane.showMessageDialog(null, "已经提取过,不能再提取!") ;
return ;
}
if(((String)table.getModel().getValueAt(rowSelected, 0)).equals("") )
{
JOptionPane.showMessageDialog(null, "请选择一行数据!") ;
return ;
}
//////////////////////////////////////////////
//进行数据库操作
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
}
catch(Exception ee)
{
JOptionPane.showMessageDialog(null, "数据库驱动程序注册失败!") ;
}
//连接数据库,并进行查询!
try
{
Connection con = DriverManager.getConnection("jdbc:odbc:Hotel") ;
Statement smt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE) ;
try
{
ResultSet rst = smt.executeQuery("select * from table_Consign") ;
rst.beforeFirst() ;
String connumber =(String) table.getModel().getValueAt(rowSelected, 0) ;
String temp = new String() ;
while(rst.next())
{
if(rst.getString(1).equals(connumber))
{
temp = rst.getString(11) ;
System.out.println(temp) ;
if(txtPassword.getText().trim().equals(rst.getString(4)))
{
JOptionPane.showMessageDialog(null, "提取成功!") ;
smt.executeUpdate("update table_Consign set 状态='提取' where 寄存号码='"+connumber+"'") ;
break ;
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -