科学网

 找回密码
  注册

tag 标签: 软件生产线

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

管理信息系统软件生产线源码27-31
求新 2018-5-31 14:37
版本1 27.源码27,部件程序,以表格为界面作数据维护使用的基本程序,最后一个数据输入后无需换行。 /** * 程序文件名:tableTenance2.java * 作者:程传庆 * 用途:以表格为界面作数据维护使用的基本程序。 * 完成日期:2012年12月12日 * 被调用语句:tableTenance2.means(parameter) 必须提供的参数:数据“表名”、 “关键字”。 * 可选参数:要求字段号表:所操作数据可以是表的全部字段,也可以只涉及部分字段。 如果选择全部字段,初始值设为; * 否则写入所有将涉及的字段在表中的顺序号,号与号之间以英文逗号分隔。 本部件预设的按钮控件共4个,序号及按钮名:1当前行存盘、2删除、3修改存盘、4退出 * 在入口处通过“要求按钮号表”选择按钮以实现所需要的功能。 每个号数字后可以加分号,分号后跟准备更换的按钮名称,实现按钮名变换。 * 录入数据时先将数据填入到表格中,再点击“当前行存盘”按钮保存记录。 修改数据时先在表格中修改,之后点击“当前行存盘”按钮保存记录。 * 删除操作时先点击表格中某行,之后点击“删除”按钮完成删除。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class tableTenance2 extends JFrame { static tableTenance2 frame; static JPanel 面板 = new JPanel(false); // 定义面板 static JScrollPane scrollPane; private static JTable table02; static Connection con; static String 表名; static String 表名表; static String 字典表名; static String 列名; static String 列标题; static String 列数据宽度; static int 记录条数, 记录条数1; static String 表格数据; static String 备份数据; static String 一条空记录; static String 关键字序号; static int 行号 = 0, 列号 = 0; static String s1 = , s2 = , s3 = ; static String 键盘输入字串 = ; static DefaultTableModel tableModel; static int b = 0, c = 0; static String sw = new String ; static int 按钮数 = 0, 按钮宽 = 0; public static void means(String ; sw = main1.sw1 + ;sw = main1.sw2; sw = main1.sw3; sw = main1.sw4; sw = main1.sw5; sw = main1.sw6; sw = main1.sw7; sw = main1.sw8; sw = main1.sw9; sw = main1.sw10; main1.sw1 = 0; main1.sw2 = ; main1.sw3 = ; main1.sw4 = ; main1.sw5 = ; main1.sw6 = ; main1.sw7 = ; main1.sw8 = ; main1.sw9 = ; main1.sw10 = ; /* 注释:本组变量用于涉及工作流的程序之间数据接口,其意义如下: * main1.sw1 //工序号; main1.sw2//取工作流定义数据;main1//取类图位置数据 * main1.sw4//取关键字;main1.sw5//取关键字值; main1.sw6//取表名 * main1.sw7//取记录序号;main1.sw8//取类名; main1.sw9//取工序号 main1.sw10//取用户名 */ 起始序号 = 0; 终了序号 = 0; 当前列号 = 0; 上次列号 = 0; 行号 = 0; 列号 = 0; s1 = ; s2 = ; s3 = ; 键盘输入字串 = ; b = 0; c = 0; con = main1.getConn(); String ; 按钮数 = 0; for (int i0 = 0; i0 按钮集01.length; i0++) 按钮集 = 按钮集01 ; if (parameter .length() 0) { 要求按钮号表 = parameter ;// 需要显示的按钮的顺序号 // 注意区分按钮号与按钮变换名称之间分隔符统一为英文分号 if (要求按钮号表.indexOf(;) 0) { // 如果有按钮更名要求 String s601 .indexOf(;) 0) { String s602 .split(;); 按钮集 ))] = s602 ; 要求按钮号表 = 要求按钮号表 + , + s602 ;// 只留号,去更名 按钮数++; } else { 要求按钮号表 = 要求按钮号表 + , + s601 ;// 只留号,原无更名 按钮数++; } } } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持按钮号原有摸样 else { String s601 ; else 要求按钮号表 = 要求按钮号表 + , + s601 ; 按钮数++; } } } else { 要求按钮号表 = ; // 没输入要求按钮号,定全部按钮号 for (int i1 = 0; i1 按钮集.length; i1++) { if (i1 == 0) 要求按钮号表 = 要求按钮号表 + i1; else 要求按钮号表 = 要求按钮号表 + , + i1; 按钮数++; } } 要求按钮号表 = , + 要求按钮号表 + ,; 窗口宽 = main1.窗口宽; 窗口高 = main1.窗口高; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter );// 宽度参数 m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } frame = new tableTenance2(); frame.setTitle(单表数据维护部件 作者:程传庆); frame.setBounds(0, 0, 窗口宽, 窗口高); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 面板.setLayout(null); 面板.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); frame.add(面板, null); scrollPane = new JScrollPane(); scrollPane.setBounds(0, 0, 窗口宽 - 100, 窗口高 - 100); 面板.add(scrollPane, BorderLayout.CENTER); char x1 = 10, x2 = 13; 表名表 = parameter ; 表名 = parameter ; 关键字段名 = parameter .split(,); 关键字段值 = new String ; 关键字序号 = new int ; 要求字段号表 = parameter ; if (要求字段号表.trim().length()==0) 字段名表 = parameter ; else { String .split(,); for (int i = 0; i s6.length; i++) { if (字段名表.length() 0) 字段名表 = 字段名表 + , + s7 )]; else 字段名表 = s7 )]; } } for (int i = 0; i 关键字段名.length; i++) { if ((,+字段名表+,).indexOf(,+关键字段名 +,)0) { 字段名表=字段名表+,+关键字段名 ; } //确保关键字包含在字段名表中 } con = main1.getConn(); try { Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select + 字段名表 + from + 表名; if ((sw .length() 0) (sw .length() 0)) s1 = s1 + where + sw + = ' + sw + '; ResultSet rs = sta.executeQuery(s1); rs.last(); 记录条数 = rs.getRow(); ResultSetMetaData rsmd = rs.getMetaData(); 列数 = rsmd.getColumnCount(); 列名 = new String ; 列数据类型 = new String ; 列数据宽度 = new int ; 表格列数 = 列数; 列标题 = new String ; int ; 当前字段值 = new String ; 一条空记录 = new String ; while (b 列数) { 列名 = rsmd.getColumnName(b + 1); 列标题 = 列名 ; 列数据类型 = rsmd.getColumnTypeName(b + 1); 列数据宽度 = rsmd.getColumnDisplaySize(b + 1); 一条空记录 = ; for (int i = 0; i 关键字段名.length; i++) { 关键字段值 = ; } for (int i = 0; i 关键字段名.length; i++) { if (关键字段名 .trim().equals(列名 .trim())) { 关键字序号 = b; 字段名表0 = 字段名表0 + b + ,; //关键字序号集 break; } } if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); else if (列数据宽度 50) 列数据宽度 = 50; b++; } 表格数据 = new String ; rs.absolute(1); c = 0; b = 0; while (c 记录条数) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta.close(); } catch (Exception e) { e.printStackTrace(); } tableModel = new DefaultTableModel(表格数据, 列名); table02 = new JTable(tableModel); table02.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table02.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); for (int i = 0; i 表格列数; i++) { TableColumn tc = table02.getColumn(列标题 ); tc.setPreferredWidth(列数据宽度 * 9); tc.sizeWidthToFit(); } scrollPane.setViewportView(table02); tableModel.addRow(一条空记录); 记录条数 = 记录条数 + 1; table02.addKeyListener(new KeyAdapter() { //键盘事件 public void keyPressed(KeyEvent evt) { //按下某个键时调用此方法 键盘输入字串 = 键盘输入字串 + evt.getKeyChar(); } }); table02.addMouseListener(new MouseAdapter() { //鼠标侦听器 public void mouseClicked(MouseEvent e) { //鼠标按键在组件上单击(按下并释放)时调用 int selectedRow = table02.getSelectedRow(); 行号 = table02.getSelectedRow(); 列号 = table02.getSelectedColumn(); int k=0; for (int i = 0; i 关键字段名.length; i++) { if (关键字序号 == 列号 ) k=1; } if (k==0) { //非关键字数据清除,关键字数据保留 tableModel.setValueAt(, 行号, 列号); //清原有数据 } 键盘输入字串 = ; //清键盘输入字串 } }); table02.addFocusListener(new FocusAdapter() { //键盘焦点 public void focusLost(final FocusEvent arg0) {//组件失去键盘焦点时调用 行号 = table02.getSelectedRow(); 列号 = table02.getSelectedColumn(); if (键盘输入字串.trim().length()0){ if (键盘输入字串.indexOf( )=0) 键盘输入字串=键盘输入字串.substring(键盘输入字串.lastIndexOf( )+1,键盘输入字串.length()); tableModel.setValueAt(键盘输入字串, 行号, 列号); } } }); int j = 0; 要求按钮号表 = , + 要求按钮号表 + ,; if (要求按钮号表.length() 3) j = 4; else for (int i = 0; i 4; i++) if (要求按钮号表.lastIndexOf(, + i + ,) = 0) j = j + 1; int 按钮宽 = (窗口宽 - 20) / 按钮数; int 按钮左边距 = 5; final JButton 当前行存盘 = new JButton(按钮集 ); //添加新一行 当前行存盘.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); con = main1.getConn(); try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = ; int j = 0; for (int i = 0; i 关键字段名.length; i++) { 关键字段值 = tableModel.getValueAt(selectedRow, 关键字序号 ) .toString(); if (关键字段值 .compareTo( ) 0) j = -1; if (main1.数字数据类型.lastIndexOf(列数据类型 ]) 0) s1 = s1 + 关键字段名 + = + 关键字段值 ; else s1 = s1 + 关键字段名 + =' + 关键字段值 + ' ; if (i 关键字段名.length - 1) s1 = s1 + and ; } if (j = 0) { s3 = where + s1; s1 = select * from + 表名 + where + s1; ResultSet rs = sta.executeQuery(s1); rs.last(); 记录条数1 = rs.getRow(); s1 = ; s2 = set ; for (int i = 0; i 列数; i++) { if (tableModel.getValueAt(selectedRow, i) == null) 当前字段值 = ; else 当前字段值 = tableModel .getValueAt(selectedRow, i).toString(); if (当前字段值 == null) 当前字段值 = ; if (main1.数字数据类型.indexOf(列数据类型 )=0) { if (当前字段值 .length() == 0)当前字段值 = 0; s1 = s1 + 当前字段值 ; s2 = s2 + 列名 + = + 当前字段值 ; } else { s1 = s1 + ' + 当前字段值 + '; s2 = s2 + 列名 + =' + 当前字段值 + '; } if (i 列数 - 1) { s1 = s1 + ,; s2 = s2 + ,; } } if (记录条数1 == 0) { //非关键字重复记录 if (字段名表.length() 0) s1 = insert into + 表名 + ( + 字段名表 + ) values ( + s1 + ); else s1 = insert into + 表名 + values ( + s1 + ); tableModel.addRow(一条空记录); 记录条数 = 记录条数 + 1; } else { JOptionPane.showMessageDialog(null, 关键字数据重复!); tableModel.removeRow(selectedRow); tableModel.addRow(一条空记录); rs.close(); con.close(); return; } pstmt = con.prepareStatement(s1); pstmt.execute(); pstmt.close(); rs.close(); con.close(); } } catch (Exception e2) { e2.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,0,) = 0)) { 当前行存盘.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); 面板.add(当前行存盘); 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 删除 = new JButton(按钮集 ); 删除.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); if (selectedRow != -1) { s1 = ; for (int i = 0; i 关键字段名.length; i++) { if (tableModel.getValueAt(selectedRow, 关键字序号 ) == null) { JOptionPane.showMessageDialog(null, 关键字不能缺少!); return; } 关键字段值 = tableModel.getValueAt(selectedRow, 关键字序号 ) .toString(); if (main1.数字数据类型.lastIndexOf(列数据类型 ]) 0) s1 = s1 + 关键字段名 + = + 关键字段值 ; else s1 = s1 + 关键字段名 + =' + 关键字段值 + ' ; if (i 关键字段名.length - 1) s1 = s1 + and ; } s1 = delete from + 表名 + where + s1; try { con = main1.getConn(); pstmt = con.prepareStatement(s1); pstmt.execute(); tableModel.removeRow(selectedRow); 记录条数 = 记录条数 - 1; pstmt.close(); con.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,1,) = 0)) { 删除.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); 面板.add(删除); 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 修改存盘 = new JButton(按钮集 ); 修改存盘.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); int 当前列=table02.getSelectedColumn(); if (selectedRow != -1) { // 判断是否存在被选中行 // 修改表格模型当中的指定值 for (int i=0;i列数;i++){ Object oa = tableModel.getValueAt(selectedRow, i); // 从表格模型中获得第i列指定值 } } con = main1.getConn(); try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = ; //查关键字数据是否重复 for (int i = 0; i 关键字段名.length; i++) { if (tableModel.getValueAt(selectedRow, 关键字序号 ) == null) { JOptionPane.showMessageDialog(null, 关键字不能缺少!); return; } 关键字段值 = tableModel.getValueAt(selectedRow, 关键字序号 ) .toString(); if (main1.数字数据类型.lastIndexOf(列数据类型 ]) = 0) s1 = s1 + 关键字段名 + = + 关键字段值 ; else s1 = s1 + 关键字段名 + =' + 关键字段值 + ' ; if (i 关键字段名.length - 1) s1 = s1 + and ; } s3 = where + s1; s1 = select * from + 表名 + where + s1; ResultSet rs = sta.executeQuery(s1); rs.last(); 记录条数1 = rs.getRow(); //处理修改事务 s1 = ; s2 = set ; for (int i = 0; i 列数; i++) { if (tableModel.getValueAt(selectedRow, i) == null) 当前字段值 = ; else 当前字段值 = tableModel .getValueAt(selectedRow, i).toString(); if (当前字段值 == null) 当前字段值 = ; if (main1.数字数据类型.indexOf(列数据类型 )=0) { if (当前字段值 .length() == 0)当前字段值 = 0; s1 = s1 + 当前字段值 ; s2 = s2 + 列名 + = + 当前字段值 ; } else { s1 = s1 + ' + 当前字段值 + '; s2 = s2 + 列名 + =' + 当前字段值 + '; } if (i 列数 - 1) { s1 = s1 + ,; s2 = s2 + ,; } } if (记录条数1 == 0) { JOptionPane.showMessageDialog(null, 请改按当前行存盘按钮!); return; } else { s1 = update + 表名 + s2 + s3; } pstmt = con.prepareStatement(s1); pstmt.execute(); rs.close(); con.close(); } catch (Exception e2) { e2.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,2,) = 0)) { 修改存盘.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); 面板.add(修改存盘); 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 退出 = new JButton(按钮集 ); 退出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ((sw .length() 0) (sw .length() 0) (sw .length() 0)) WorkflowDrivek1.means(sw); frame.setVisible(false); frame.dispose(); } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,3,) = 0)) { 退出.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); 面板.add(退出); 按钮左边距 = 按钮左边距 + 按钮宽; } frame.setVisible(true); // 显示窗体 } } 28.源码28,部件程序,单表数据表格式快速维护, 数据直接录入无需存盘按钮。 import java.awt.Color; import java.awt.Component; import java.awt.Dialog; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Iterator; import java.util.TreeSet; import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.plaf.TableHeaderUI; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellEditor; import javax.swing.table.TableColumn; /** * 程序文件名:tableTenance3.java * 作者:齐赛 * 用途:适用于单表数据快速维护。数据直接录入无需存盘按钮,但要注意最后一行录入完成后要点击下一行任意位置完成存盘。 * 不能使用代码表、字典表,因此只适应采用中文命名字段名的表的操作。 * 参数设置:表名、关键字、要求字段号 * 类似于sql server的表格编辑器,直接点击某一行即可方便进行修改,点击最后一行可以进行插入新的记录,每一次离开编辑行时, * 该行数据会在内存中进行对比关键字,而无需进入数据库,提高了效率 */ public class tableTenance3 extends JFrame { static tableTenance3 frame; String 表名; int 字段号; String 表格字段 关键字段名; String sw=new String ; static String ) { String ; 按钮数=0; for (int i0=0;i0按钮集01.length;i0++) 按钮集 = 按钮集01 ; if (parameter .length()0){ 要求按钮号表=parameter ;// 需要显示的按钮的顺序号 //将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表=要求按钮号表.replaceAll(;,;); 要求按钮号表=要求按钮号表.replaceAll(。,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); if (要求按钮号表.indexOf(;)0){ //如果有按钮更名要求 String s601 .indexOf(;)0){ String s602 .split(;); 按钮集 ))]=s602 ; 要求按钮号表=要求按钮号表+,+s602 ;//只留号,去更名 按钮数++; } else { 要求按钮号表=要求按钮号表+,+s601 ;//只留号,原无更名 按钮数++; } } } //如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表=要求按钮号表+,+s601 ; 按钮数++; } } } else { 要求按钮号表=; //没输入要求按钮号,定全部按钮号 for (int i1=0;i1按钮集.length;i1++){ if (i1==0) 要求按钮号表=要求按钮号表+i1; else 要求按钮号表=要求按钮号表+,+i1; 按钮数++; } } 要求按钮号表=,+要求按钮号表+,; 窗口宽=main1.窗口宽; 窗口高=main1.窗口高; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ;//宽度参数 m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } 窗口宽=m1 ; 窗口高=m2 ; } }catch(Exception e2){} frame = new tableTenance3(); frame.setTitle(表格式数据维护程序 作者:齐赛); frame.initParameter(parameter); frame.initGUI(); } /** * 初始化数据成员 */ private void initParameter(String parameter ; sw =main1.sw1+;sw =main1.sw2;sw =main1.sw3; sw =main1.sw4;sw =main1.sw5;sw =main1.sw6; sw =main1.sw7;sw =main1.sw8;sw =main1.sw9; sw =main1.sw10; main1.sw1=0;main1.sw2=;main1.sw3=; main1.sw4=;main1.sw5=;main1.sw6=; main1.sw7=;main1.sw8=;main1.sw9=;main1.sw10=; con = main1.getConn(); 表名 = parameter ; String 字段名表= parameter ; String ==null)||(parameter .length()==0)){ parameter =; for (int i=0;is6.length;i++) if (is6.length-1) parameter =parameter +i+,; else parameter =parameter +i; } if(parameter ==null || parameter .length()==0) { JOptionPane.showConfirmDialog(null, 缺少关键字!, 错误提示, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); System.exit(0); } 关键字段名 = parameter .trim().split(,); 关键字表格序号 = new int ; ArrayListInteger 关键字数据库序号 = new ArrayListInteger(关键字段名.length); con = main1.getConn(); try { sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1=select * from + 表名; if ((sw .length()0)(sw .length()0)) s1=s1+ where +sw + = '+sw +'; rt = sta.executeQuery(s1); rtmd = rt.getMetaData(); int columns = rtmd.getColumnCount(); TreeSetInteger ts = new TreeSetInteger(); for (int i = 1, flag = 0; i = columns flag 关键字段名.length; i++) { for (int j = 0; j 关键字段名.length; j++) { if (rtmd.getColumnName(i).trim().equals(关键字段名 .trim())) { ts.add(i); 关键字数据库序号.add(i); flag++; break; } } } if (parameter == ) { for (int i = 0; i columns; i++) { parameter +=( i == columns - 1 )? i + : i + ,; } } String array .trim().split(,); for (int i = 0; i array.length; i++) { ts.add(Integer.valueOf(array ) + 1); } int i = 0; int k = 0; 字段号 = new int ; 表格列数 = 字段号.length; 表格字段 = new String ; 空记录 = new String ; IteratorInteger it = ts.iterator(); while (it.hasNext()) { 字段号 = it.next(); if (关键字数据库序号.contains(字段号 )) { 关键字表格序号 = 字段号 - 1; } i++; } for (i = 0; i 表格列数; i++) { 表格字段 = rtmd.getColumnName(字段号 ); 空记录 = ; } rt.last(); 表格行数 = rt.getRow(); 表格数据 = new String ; i = 0; while (i 表格行数) { rt.absolute(i + 1); for (int j = 0; j 表格列数; j++) { 表格数据 = rt.getString(字段号 ); } i++; } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rt != null) rt.close(); if (sta != null) sta.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 初始化组件、添加组件的监听器 */ private void initGUI() { dtm = new DefaultTableModel(表格数据, 表格字段); dtm.addRow(空记录); table = new JTable(); table.setModel(dtm); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 单选 table.getTableHeader().setDefaultRenderer(new DefaultTableCellRenderer(){ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); for(int i=0;i关键字表格序号.length;i++) { if(column==关键字表格序号 ) { cell.setBackground(Color.LIGHT_GRAY); break; } cell.setBackground(new Color(238,238,238)); } return cell; } }); tm = new TableMonitor(); table.addMouseListener(tm); for (int i = 0; i table.getColumnCount(); i++) { table.getColumnModel().getColumn(i).setPreferredWidth(100); } scro = new JScrollPane(); scro.setBounds(30, 30, 窗口宽 - 100,窗口高 - 150); scro.getViewport().add(table); 按钮宽=(窗口宽-60)/按钮数; int 左边距=30; delete=new JButton(按钮集 ); delete.setBounds(左边距, 窗口高-100, 按钮宽, 25); if (要求按钮号表.indexOf(,0,)=0) 左边距=左边距+按钮宽; delete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int tempCurrentRow=table.getSelectedRow(); if(tempCurrentRow=0 tempCurrentRow=表格行数-1) { try { deleteSQL(表格数据 ); table.editCellAt(-1, -1); dtm.removeRow(tempCurrentRow); tm.lastColumn=-1; tm.lastRow=-1; 表格行数--; String tempData=new String ; for(int i=0;itempData.length;i++) { if(i=tempCurrentRow) { tempData =表格数据 ; } else { tempData =表格数据 ; } } 表格数据=tempData; System.out.println(----删除记录成功!------); } catch (SQLException e1) { JOptionPane.showConfirmDialog(frame, e1.getMessage(), 数据库出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } finally { if(sta!=null) { try { sta.close(); sta=null; } catch (SQLException e1) { e1.printStackTrace(); } } } } } }); exit=new JButton(按钮集 ); exit.setBounds(左边距, 窗口高-100, 按钮宽, 25); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableTenance3.this.dispose(); try { if (con != null) con.close(); System.out.println(数据库已断开连接!); } catch (SQLException e1) { e1.printStackTrace(); System.out.println(数据库连接断开时异常!); } if ((sw .length()0)(sw .length()0)(sw .length()0)) WorkflowDrivek1.means(sw); } }); frame.setLayout(null); frame.getContentPane().add(scro); if (要求按钮号表.indexOf(,0,)=0) frame.getContentPane().add(delete); if (要求按钮号表.indexOf(,1,)=0) frame.getContentPane().add(exit); frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); frame.addWindowListener(new WindowMonitor()); frame.setVisible(true); } /** * 鼠标点击表格单元格即可进行编辑,当鼠标点击其他行时,之前的行会存盘 */ private class TableMonitor extends MouseAdapter { int lastRow = -1; int lastColumn = -1; int lastHeight=-1; int newHeight=30; JTextField cell; public void mousePressed(MouseEvent e) { int tempRow = table.getSelectedRow(); int tempColumn = table.getSelectedColumn(); int tempHeight = table.getRowHeight(); if (lastRow == -1 || lastRow == tempRow) { table.setRowHeight(tempRow, newHeight); table.editCellAt(tempRow, tempColumn); cell = (JTextField) ((DefaultCellEditor) table.getCellEditor()) .getComponent(); cell.requestFocus(); cell.selectAll(); if(lastRow == -1 tempRow==table.getRowCount()-1) { dtm.addRow(空记录); table.scrollRectToVisible(table.getCellRect(table.getRowCount()-1, 0, false)); } lastRow = tempRow; lastColumn = tempColumn; lastHeight=tempHeight; } else { table.setRowSelectionInterval(lastRow, lastRow); if (lastRow =表格行数) { VectorString v = (VectorString) dtm.getDataVector() .elementAt(lastRow); if (!isKeyExist(v)) { try { insertSQL(v); System.out.println(-----------------); table.setRowSelectionInterval(tempRow, tempRow);// 选中其他行 if( tempRow==table.getRowCount()-1) { dtm.addRow(空记录); table.scrollRectToVisible(table.getCellRect(table.getRowCount()-1, 0, false)); } table.editCellAt(tempRow, tempColumn); cell.requestFocus(); cell.selectAll(); table.setRowHeight(tempRow, newHeight); table.setRowHeight(lastRow, tempHeight); lastRow = tempRow; lastColumn = tempColumn; 表格行数++; String tempArray = new String = v.toArray(new String = 表格数据 ; } } 表格数据 = tempArray; } catch (SQLException e1) { JOptionPane.showConfirmDialog(frame,e1.getMessage(), 数据库插入出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } finally { try { if (sta != null) sta.close(); } catch (SQLException e1) { e1.printStackTrace(); } } } else { JOptionPane.showConfirmDialog(frame, 关键字重复,请检查!, 关键字出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); table.editCellAt(lastRow, 关键字表格序号 ); return; } } else { VectorString v = (VectorString) dtm.getDataVector() .elementAt(lastRow); if(!isKeyExist(v,lastRow)) { try { updateSQL(v,lastRow); 表格数据 =v.toArray(new String ); return; } } } } } /** * 监听窗口关闭时,释放组件资源,断开数据库连接,以便于其他部件再次连接 */ private class WindowMonitor extends WindowAdapter { public void windowClosing(WindowEvent e) { frame.dispose(); try { if (con != null) con.close(); System.out.println(数据库已断开连接!); } catch (SQLException e1) { e1.printStackTrace(); System.out.println(数据库连接断开时异常!); } } } /** * 将要存盘的一行数据 * 如果为true,表示关键字已经存在 */ public boolean isKeyExist(VectorString v) { for (int i = 0; i 表格行数; i++) { int j = 0; for (; j 关键字表格序号.length; j++) { if (v.get(关键字表格序号 ) != 表格数据 ] !v.get(关键字表格序号 ).trim().equals(表格数据 ].trim())) break; } if (j = 关键字表格序号.length) { return true; } } return false; } /** * param lastRow 要更新的行号 * 如果除lastRow有重复的关键字,则返回false */ public boolean isKeyExist(VectorString v, int lastRow) { for (int i = 0; i 表格行数; i++) { if(i==lastRow) continue; int j = 0; for (; j 关键字表格序号.length; j++) { if (v.get(关键字表格序号 ) != 表格数据 ] !v.get(关键字表格序号 ).trim().equals(表格数据 ].trim())) break; } if (j = 关键字表格序号.length) { return true; } } return false; } /** * @param v 改变后的行内容 * @param lastRow 要更新的行号 * @throws SQLException */ public void updateSQL(VectorString v,int lastRow) throws SQLException { String preSQL = update + 表名 + set ; String rearSQL = where ; String strSQL = ; for (int i = 0, flag = 0; i 表格字段.length; i++) { if (i != 表格字段.length - 1) { if( v.get(i)==null || v.get(i).length()=0) { preSQL += 表格字段 + =NULL,; } else { preSQL += 表格字段 + =' + v.get(i) + ',; } for (int j = 0; j 关键字表格序号.length flag 关键字表格序号.length; j++) { if (关键字表格序号 == i) { flag++; if (j != 关键字表格序号.length - 1) rearSQL += 表格字段 + =' + 表格数据 + ' AND ; else rearSQL += 表格字段 + =' + 表格数据 + '; break; } } } else { if( v.get(i)==null || v.get(i).length()=0) { preSQL += 表格字段 + =NULL; } else { preSQL += 表格字段 + =' + v.get(i) + ' ; } } } strSQL = preSQL + rearSQL; updateExecute(strSQL); } private void updateExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } /** * @param v 将要存盘的一行数据 * @throws SQLException * 存盘时候发生异常 */ public void insertSQL(VectorString v) throws SQLException { String rearSQL = values (; String preSQL = insert into + 表名 + (; String strSQL = ; for (int i = 0; i 表格字段.length; i++) { if (i != 表格字段.length - 1) { preSQL += 表格字段 + ,; if( v.get(i)==null || v.get(i).length()=0) { rearSQL +=NULL,; } else { rearSQL += ' + v.get(i) + ',; } } else { preSQL += 表格字段 + ); if( v.get(i)==null || v.get(i).length()=0) { rearSQL +=NULL); } else { rearSQL += ' + v.get(i) + '); } } } strSQL = preSQL + rearSQL; insertExecute(strSQL); } private void insertExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } private void deleteSQL(String ]+='+array +' AND ; } else { rearSQL+=表格字段 ]+='+array +'; } } strSQL = preSQL + rearSQL; deleteExecute(strSQL); } private void deleteExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } } 29.源码29,部件程序,单表数据表格式快速维护。可以使用代码表、字典表,数据直接录入无需存盘按钮。 import java.awt.Color; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeSet; import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; /** * 程序文件名:tableTenance4.java * 作者:齐赛 * 用途:适用于单表数据快速维护。 可以使用代码表、字典表,数据直接录入无需存盘按钮。 * 适用于包括非中文字段名的任意数据表数据维护。 * 参数设置:表名、关键字、要求字段号 * 关于代码表不能显示全代码表,也不能选择输入,只能变换代码显示与输入。 */ public class tableTenance4 extends JFrame { static tableTenance4 frame; String 表名; int 字段号; String 表格字段 关键字段名; String 中文标签; boolean flags 按钮集=null; static String 要求按钮号表; static int 窗口宽=0,窗口高=0,按钮数=0,按钮宽=0; TableMonitor tm; public static void means(String parameter 按钮集01={ 删除,退出}; 按钮集=new String ; 按钮数=0; for (int i0=0;i0按钮集01.length;i0++) 按钮集 = 按钮集01 ; if (parameter .length()0){ 要求按钮号表=parameter ;// 需要显示的按钮的顺序号 //将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表=要求按钮号表.replaceAll(;,;); 要求按钮号表=要求按钮号表.replaceAll(。,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); if (要求按钮号表.indexOf(;)0){ //如果有按钮更名要求 String s601 .indexOf(;)0){ String s602 .split(;); 按钮集 ))]=s602 ; 要求按钮号表=要求按钮号表+,+s602 ;//只留号,去更名 按钮数++; } else { 要求按钮号表=要求按钮号表+,+s601 ;//只留号,原无更名 按钮数++; } } } //如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表=要求按钮号表+,+s601 ; 按钮数++; } } } else { 要求按钮号表=; //没输入要求按钮号,定全部按钮号 for (int i1=0;i1按钮集.length;i1++){ if (i1==0) 要求按钮号表=要求按钮号表+i1; else 要求按钮号表=要求按钮号表+,+i1; 按钮数++; } } 要求按钮号表=,+要求按钮号表+,; 窗口宽=main1.窗口宽; 窗口高=main1.窗口高; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ;//宽度参数 m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } 窗口宽=m1 ; 窗口高=m2 ; } }catch(Exception e2){} frame = new tableTenance4(); frame.setTitle(表格式数据维护程序 作者:齐赛); frame.initParameter(parameter); frame.initGUI(); } /** * 初始化数据成员 */ private void initParameter(String parameter ; String 字段名表= parameter ; String ==null)||(parameter .length()==0)){ parameter =; for (int i=0;is6.length;i++) if (is6.length-1) parameter =parameter +i+,; else parameter =parameter +i; } if (parameter == null || parameter .length() == 0) { JOptionPane.showConfirmDialog(null, 缺少关键字!, 错误提示, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); System.exit(0); } 关键字段名 = parameter .trim().split(,); 关键字表格序号 = new int ; ArrayListInteger 关键字数据库序号 = new ArrayListInteger(关键字段名.length); con = main1.getConn(); ResultSet rs = null; try { sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); DatabaseMetaData dbmd = con.getMetaData(); rs = dbmd.getTables(null, null, %, new String =parameter .split(,); for(int i=0;itemp.length 字典表名==null;i++) { 字典表名=temp .endsWith(字典表)?temp :null; } if (字典表名 != null 字典表名.length() 0) { try { sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rt = sta.executeQuery(select * from + 字典表名); rt.last(); int count = rt.getRow(); 字典数据 = new String ; rt.absolute(1); while (count = 1) { 字典数据 = rt.getString(1); 字典数据 = rt.getString(2); count--; rt.next(); } } catch (SQLException e1) { e1.printStackTrace(); } finally { try { if (rt != null) { rt.close(); rt = null; } if (sta != null) { sta.close(); sta = null; } } catch (SQLException sqle) { sqle.printStackTrace(); } } } try { sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rt = sta.executeQuery(select * from + 表名); rtmd = rt.getMetaData(); int columns = rtmd.getColumnCount(); TreeSetInteger ts = new TreeSetInteger(); for (int i = 1, flag = 0; i = columns flag 关键字段名.length; i++) { for (int j = 0; j 关键字段名.length; j++) { if (rtmd.getColumnName(i).trim().equals(关键字段名 .trim())) { ts.add(i); 关键字数据库序号.add(i); flag++; break; } } } if (parameter == ) { for (int i = 0; i columns; i++) { parameter +=( i == columns - 1 )? i + : i + ,; } } String array .trim().split(,); for (int i = 0; i array.length; i++) { ts.add(Integer.valueOf(array ) + 1); } int i = 0; int k = 0; 字段号 = new int ; 表格列数 = 字段号.length; 表格字段 = new String ; 空记录 = new String ; IteratorInteger it = ts.iterator(); while (it.hasNext()) { 字段号 = it.next(); if (关键字数据库序号.contains(字段号 )) { 关键字表格序号 = 字段号 - 1; } i++; } 中文标签 = new String ; flags = new boolean ; for (i = 0; i 表格列数; i++) { 表格字段 = rtmd.getColumnName(字段号 ); 空记录 =; if (字典数据 != null) { int j = 0; for (; j 字典数据.length; j++) { if (字典数据 .trim().equalsIgnoreCase(表格字段 .trim())) { 中文标签 = 字典数据 ; break; } } if (j = 字典数据.length) { 中文标签 = 表格字段 ; } } else { 中文标签 = 表格字段 ; } if (!中文标签 .endsWith(代码) 代码表名.contains(中文标签 + 代码表)) { ResultSet rs1 = null; Statement sta1 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs1 = sta1.executeQuery(select * from + 中文标签 + 代码表); MapString, String codeTable = new HashMapString, String(); while (rs1.next()) { String label = rs1.getString(中文标签 .trim()); String code = rs1.getString(中文标签 .trim() + 代码); codeTable.put(label, code); codeTable.put(code, label); } map.put(中文标签 + 代码, codeTable); rs1.close(); rs1 = null; sta1.close(); sta1 = null; flags = true; 中文标签 = 中文标签 + 代码; } 空记录 = ; } rt.last(); 表格行数 = rt.getRow(); 表格数据 = new String ; i = 0; while (i 表格行数) { rt.absolute(i + 1); for (int j = 0; j 表格列数; j++) { if (flags ) { 表格数据 = map.get(中文标签 ).get(rt.getString(字段号 )); } else { 表格数据 = rt.getString(字段号 ); } } i++; } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rt != null) { rt.close(); rt = null; } if (sta != null) { sta.close(); sta = null; } } catch (SQLException e) { e.printStackTrace(); } } } /** * 初始化组件、添加组件的监听器 */ private void initGUI() { dtm = new DefaultTableModel(表格数据, 中文标签); dtm.addRow(空记录); table = new JTable(); table.setModel(dtm); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 单选 table.getTableHeader().setDefaultRenderer( new DefaultTableCellRenderer() { public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JComponent cell = (JComponent)super .getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); for (int i = 0; i 关键字表格序号.length; i++) { if (column == 关键字表格序号 ) { cell.setBackground(Color.LIGHT_GRAY); break; } cell.setBackground(new Color(238, 238, 238)); } cell.setBorder(BorderFactory.createRaisedBevelBorder()); return cell; } }); tm = new TableMonitor(); table.addMouseListener(tm); for (int i = 0; i table.getColumnCount(); i++) { table.getColumnModel().getColumn(i).setPreferredWidth(100); } 按钮宽=(窗口宽-60)/按钮数; int 左边距=30; delete = new JButton(按钮集 ); delete.setBounds(左边距, 窗口高 - 100, 按钮宽, 25); if (要求按钮号表.indexOf(,0,)=0) 左边距=左边距+按钮宽; delete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int tempCurrentRow = table.getSelectedRow(); if (tempCurrentRow = 0 tempCurrentRow = 表格行数 - 1) { try { deleteSQL(表格数据 ); table.editCellAt(-1, -1); dtm.removeRow(tempCurrentRow); tm.lastColumn = -1; tm.lastRow = -1; 表格行数--; String tempData = new String = 表格数据 ; } else { tempData = 表格数据 ; } } 表格数据 = tempData; System.out.println(----删除记录成功!------); } catch (SQLException e1) { JOptionPane.showConfirmDialog(frame, e1.getMessage(), 数据库出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } finally { if (sta != null) { try { sta.close(); sta = null; } catch (SQLException e1) { e1.printStackTrace(); } } } } } }); exit = new JButton(按钮集 ); exit.setBounds(左边距, 窗口高 - 100, 按钮宽, 25); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableTenance4.this.dispose(); try { if (con != null) con.close(); System.out.println(数据库已断开连接!); } catch (SQLException e1) { e1.printStackTrace(); System.out.println(数据库连接断开时异常!); } } }); scro = new JScrollPane(); scro.setBounds(30, 30, 窗口宽 - 100, 窗口高 - 150); scro.getViewport().add(table); frame.setLayout(null); frame.getContentPane().add(scro); frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); frame.addWindowListener(new WindowMonitor()); if (要求按钮号表.indexOf(,0,)=0) frame.add(delete); if (要求按钮号表.indexOf(,1,)=0) frame.add(exit); frame.setVisible(true); } /** * 鼠标点击表格单元格即可进行编辑,当鼠标点击其他行时,之前的行会存盘 */ private class TableMonitor extends MouseAdapter { int lastRow = -1; int lastColumn = -1; int lastHeight = -1; int newHeight = 30; JTextField cell; public void mousePressed(MouseEvent e) { int tempRow = table.getSelectedRow(); int tempColumn = table.getSelectedColumn(); int tempHeight = table.getRowHeight(); if (lastRow == -1 || lastRow == tempRow) { table.setRowHeight(tempRow, newHeight); table.editCellAt(tempRow, tempColumn); cell = (JTextField) ((DefaultCellEditor) table.getCellEditor()) .getComponent(); cell.requestFocus(); cell.selectAll(); if (lastRow == -1 tempRow == table.getRowCount() - 1) { dtm.addRow(空记录); table.scrollRectToVisible(table.getCellRect( table.getRowCount() - 1, 0, false)); } lastRow = tempRow; lastColumn = tempColumn; lastHeight = tempHeight; } else { table.setRowSelectionInterval(lastRow, lastRow); if (lastRow = 表格行数) { VectorString v = (VectorString) dtm.getDataVector() .elementAt(lastRow); VectorString vv = new VectorString(v); for (int i = 0; i vv.size(); i++) { if (flags ) { vv.set(i, map.get(中文标签 ).get(vv.get(i))); } } if (!isKeyExist(vv)) { try { insertSQL(vv); table.setRowSelectionInterval(tempRow, tempRow);// 选中其他行 if (tempRow == table.getRowCount() - 1) { dtm.addRow(空记录); table.scrollRectToVisible(table.getCellRect( table.getRowCount() - 1, 0, false)); } table.editCellAt(tempRow, tempColumn); cell.requestFocus(); cell.selectAll(); table.setRowHeight(tempRow, newHeight); table.setRowHeight(lastRow, tempHeight); lastRow = tempRow; lastColumn = tempColumn; 表格行数++; String tempArray = new String = v.toArray(new String = 表格数据 ; } } 表格数据 = tempArray; System.out.println(------插入新纪录成功!--------); } catch (SQLException e1) { JOptionPane.showConfirmDialog(frame, e1.getMessage(), 数据库插入出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } finally { try { if (sta != null) sta.close(); } catch (SQLException e1) { e1.printStackTrace(); } } } else { JOptionPane.showConfirmDialog(frame, 关键字重复,请检查!, 关键字出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); table.editCellAt(lastRow, 关键字表格序号 ); return; } } else { VectorString v = (VectorString) dtm.getDataVector() .elementAt(lastRow); VectorString vv = new VectorString(v); for (int i = 0; i vv.size(); i++) { if (flags ) { vv.set(i, map.get(中文标签 ).get(vv.get(i))); } } if (!isKeyExist(vv, lastRow)) { try { updateSQL(vv, lastRow); 表格数据 = v.toArray(new String ); return; } } } } } /** * 监听窗口关闭时,释放组件资源,断开数据库连接,以便于其他部件再次连接 */ private class WindowMonitor extends WindowAdapter { public void windowClosing(WindowEvent e) { frame.dispose(); try { if (con != null) con.close(); System.out.println(数据库已断开连接!); } catch (SQLException e1) { e1.printStackTrace(); System.out.println(数据库连接断开时异常!); } } } /** * 存盘的一行数据 * 如果为true,表示关键字已经存在 */ public boolean isKeyExist(VectorString v) { for (int i = 0; i 表格行数; i++) { int j = 0; for (; j 关键字表格序号.length; j++) { if (v.get(关键字表格序号 ) != 表格数据 ] !v.get(关键字表格序号 ).trim().equals(表格数据 ].trim())) break; } if (j = 关键字表格序号.length) { return true; } } return false; } /** * @param lastRow 要更新的行号 * @return 如果除lastRow有重复的关键字,则返回false */ public boolean isKeyExist(VectorString v, int lastRow) { for (int i = 0; i 表格行数; i++) { if (i == lastRow) continue; int j = 0; for (; j 关键字表格序号.length; j++) { if (v.get(关键字表格序号 ) != 表格数据 ] !v.get(关键字表格序号 ).trim().equals(表格数据 ].trim())) break; } if (j = 关键字表格序号.length) { return true; } } return false; } /** * @param v 改变后的行内容 * @param lastRow 要更新的行号 * @throws SQLException */ public void updateSQL(VectorString v, int lastRow) throws SQLException { String preSQL = update + 表名 + set ; String rearSQL = where ; String strSQL = ; for (int i = 0, flag = 0; i 表格字段.length; i++) { if (i != 表格字段.length - 1) { if( v.get(i)==null || v.get(i).length()=0) { preSQL += 表格字段 + =NULL,; } else { preSQL += 表格字段 + =' + v.get(i) + ',; } for (int j = 0; j 关键字表格序号.length flag 关键字表格序号.length; j++) { if (关键字表格序号 == i) { flag++; if (j != 关键字表格序号.length - 1) rearSQL += 表格字段 + =' + 表格数据 + ' AND ; else rearSQL += 表格字段 + =' + 表格数据 + '; break; } } } else { if( v.get(i)==null || v.get(i).length()=0) { preSQL += 表格字段 + =NULL; } else { preSQL += 表格字段 + =' + v.get(i) + ' ; } } } strSQL = preSQL + rearSQL; updateExecute(strSQL); } private void updateExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } /** * @param v 将要存盘的一行数据 * @throws SQLException 存盘时候发生异常 */ public void insertSQL(VectorString v) throws SQLException { String rearSQL = values (; String preSQL = insert into + 表名 + (; String strSQL = ; for (int i = 0; i 表格字段.length; i++) { if (i != 表格字段.length - 1) { preSQL += 表格字段 + ,; if( v.get(i)==null || v.get(i).length()=0) { rearSQL +=NULL,; } else { rearSQL += ' + v.get(i) + ',; } } else { preSQL += 表格字段 + ); if( v.get(i)==null || v.get(i).length()=0) { rearSQL +=NULL); } else { rearSQL += ' + v.get(i) + '); } } } strSQL = preSQL + rearSQL; insertExecute(strSQL); } private void insertExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } private void deleteSQL(String ] + =' + array + ' AND ; } else { rearSQL += 表格字段 ] + =' + array + '; } } strSQL = preSQL + rearSQL; deleteExecute(strSQL); } private void deleteExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } } 30.源码30,部件程序,数据批录入、批修改、批删除表格式数据维护。 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.util.HashSet; import java.util.Vector; import java.io.*; /** * 程序文件名:tableTenance5.java * 作者:齐赛 * 用途:以表格为界面作数据批录入、批修改、批删除使用。 * 完成日期:2013年2月20日 * 要求提供的参数:数据“表名”、“关键字段名”、 * 可选参数“要求字段号表”、“要求按钮号表”。 * 操作方法与注意事项:以上所有参数均由菜单传入。 * 关键字段名为识别与区分记录的主要标志,不允许重复,不允许为空,可以是单一字段,也可以是多个字段,如果是多字段,以英文逗号分隔。 * 要求字段号表:所操作数据可以是表的全部字段,也可以只涉及部分字段。如果选择全部字段,初始值设为; * 否则写入所有将涉及的字段在表中的顺序后,号与号之间以英文逗号分隔。 * 本部件预设的按钮控件共5个,序号及按钮名:1添加空记录、2本条记录存盘、3全部数据存盘、4删除、5退出 * 在入口处通过“要求按钮号表”选择按钮以实现所需要的功能。 要求按钮号表:如果做录入程序用,一般选择:“1,3,5”(添加空记录、全部数据存盘、退出), * 或1,2,5”(添加空记录、本条记录存盘、退出)。操作时每点击一次 * “添加空记录”按钮,将在表中增加一空行,可以将欲添加的数据填入表内。之后需要按本条记录存盘按钮,将新记录填入表内。 * 也可以继续点击一次“添加空记录”按钮,继续添加下一列及之后记录或修改表格中已经有的数据, * 只到全部数据加入到表格中或全部完成修改后后,最后按全部数据存盘按钮,将所有数据存入数据库。 * 如果做修改程序用,一般选择:“2,5”(本条记录存盘、退出)或3,5”(全部数据存盘、退出)。 * 如果要修改表中数据,要双击表格中数据栏,之后修改表格中数据,可以修改完一条后按本条记录存盘后保存修改结果。 * 也可以逐一修改要修改的数据,最后按“全部数据存盘”按钮,将所有修改数据存入数据库。 * 如果做删除程序用,选择:“4,5”(删除当前记录、退出”。操作时首先用鼠标点击表格中要删除的记录,之后按删除按钮,完成删除。 * 注意本程序适用于由基本数据类型构成的数据表,适用数据类型包括各类整型、各浮点类型、各char数据类型、各text数据类型。 * 本程序新加特点:提供各字段共用列表框,可以利用鼠标选择历史数据录入。 * 全部数据存盘采用修改方式完成,不事先删除全表数据, 更加安全且有利于共享。 * 如果某字段有代码表,列表框中列入内容为代码表中值,否则为历史数据,供鼠标点击录入。 * 如果为某字段设计代码表,要求再当前数据库中建代码表,其名字为字段名加“代码表”,其中字段名,一个与字段名相同,另一个为 * 字段名加“代码”或字段名中去掉“代码”二字。例如,关于性别,设计用0表示男,1表示女 * 那么,设计“性别代码表”,其中有“性别”、“性别代码”二个字段,其中二条记录:男 0;女 1。 * 在数据表中可以有字段“性别代码”,也可以有“性别”,如果前者,在列表框中显示0 1;录入保存的是性别代码。 * 如果数据表中字段名为性别,那么,列表框中显示男 女,录入保存的也是性别内容。 * 操作时特别注意:当修改或填入某数据后不按回车,也不用鼠标点本行的另一字段,直接按二个存盘按钮,新修改或填入的那个字段数据将丢失。 * 也就是说,最后输入一个数据后,要先按回车,再按存盘按钮。 */ public class tableTenance5 extends JFrame implements ItemListener { private static JTable table02; // 创建表格 static String DBMS系统 = main1.DBMS系统; static Connection con; // 连接数据库 static String ODBC数据源 = main1.ODBC数据源; static String url; static String 表名 ; // 数据表名 static String 字典表名=; static String 列名; // 数据表列名 static String 列标题; // 表格列标题名,如果有字典,是翻译后内容 static String 表列数据类型; // 存放表格各列数据类型的数组 static int 表列数据宽度; static int 记录条数, 记录条数1; // 记录条数 static String 表格数据;// 存放表格数据的数组 static String 备份数据; static String 一条空记录; static String 关键字序号; static String 字段名表=; static String s1 = , s2 = , s3 = ; static DefaultTableModel tableModel; static int b = 0, c = 0; // 以下显示数据库中的列名 static String 列序号; private static String 部件序号=; private static String 代码表字符串; static int 临时=0,按钮数=0; static void means(String parameter 按钮集01={ 添加空记录,删除,当前行存盘,全部表存盘,退出}; 按钮集=new String ; 按钮数=0; for (int i0=0;i0按钮集01.length;i0++) 按钮集 = 按钮集01 ; if (parameter .length()0){ 要求按钮号表=parameter ;// 需要显示的按钮的顺序号 //将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表=要求按钮号表.replaceAll(;,;); 要求按钮号表=要求按钮号表.replaceAll(。,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); if (要求按钮号表.indexOf(;)0){ //如果有按钮更名要求 String s601 .indexOf(;)0){ String s602 .split(;); 按钮集 ))]=s602 ; 要求按钮号表=要求按钮号表+,+s602 ;//只留号,去更名 按钮数++; } else { 要求按钮号表=要求按钮号表+,+s601 ;//只留号,原无更名 按钮数++; } } } //如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表=要求按钮号表+,+s601 ; 按钮数++; } } } else { 要求按钮号表=; //没输入要求按钮号,定全部按钮号 for (int i1=0;i1按钮集.length;i1++){ if (i1==0) 要求按钮号表=要求按钮号表+i1; else 要求按钮号表=要求按钮号表+,+i1; 按钮数++; } } 要求按钮号表=,+要求按钮号表+,; 窗口宽=main1.窗口宽; 窗口高=main1.窗口高; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ;//宽度参数 m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } 窗口宽=m1 ; 窗口高=m2 ; } }catch(Exception e2){} 表名=parameter ; // 数据表名 String .split(,); for (int i=0;is8.length;i++) if (s8 .lastIndexOf(表名+字典表)=0) 字典表名=s8 ; if (parameter .length()=0){ JOptionPane.showMessageDialog( null, 缺少关键字,请说明关键字字段后再运行。); return; } 关键字段名=parameter .split(,); 要求字段号表=parameter ; 部件序号=parameter ; 关键字序号=new int ; 代码表字符串=parameter ; final tableTenance5 frame = new tableTenance5(); // 创建窗体 frame.setTitle(表格式数据维护程序 作者:齐赛); frame.setBounds(10, 10, 窗口宽, 窗口高); // 窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.setLayout(null); final JScrollPane scrollPane = new JScrollPane(); // 定义滚动条 scrollPane.setBounds(0, 0, 窗口宽 - 200, 窗口高 - 100); // 定义滚动面板大小位置 frame.getContentPane().add(scrollPane); // 加入滚动条 JLabel jl = new JLabel(字段可选内容 :); jl.setBounds(窗口宽 - 175, 0, 150, 30); list1 = new List(); list1.addItemListener(frame); list1.setBounds(窗口宽 - 175, 30, 150, 窗口高 - 130); frame.getContentPane().add(list1); frame.getContentPane().add(jl); if (关键字段名.length == 0) { JOptionPane.showMessageDialog(null, 缺少关键字的说明,请选择关键字后重新操作); return; } 关键字段值 = new String ; 关键字序号 = new int ; for (int i = 0; i 关键字段名.length; i++) { 关键字段值 = ; 关键字序号 = 0; } con = main1.getConn(); try { // 以下是连接数据库 Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String .split(,); for (int i=0;is6.length;i++){ if (字段名表.length()0) 字段名表=字段名表+,+s7 )]; else 字段名表=s7 )]; } s1=select +字段名表+ from +表名; } else s1=select * from +表名; ResultSet rs = sta.executeQuery(s1); rs.last(); 记录条数 = rs.getRow(); ResultSetMetaData rsmd = rs.getMetaData(); 列数 = rsmd.getColumnCount(); // 获取列数 列名 = new String ; // 定义列名数组 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i=0;i列数;i++){ 列名 = rsmd.getColumnName(i + 1); // 获取列名存到数组中 列数据类型 = rsmd.getColumnTypeName(i + 1); // 获取列数据类型名存到数组中 列数据宽度 = rsmd.getColumnDisplaySize(b + 1);// 获取列数据宽度 if (列数据宽度 4) 列数据宽度 = 4; if (要求字段号表.length() 0) { for (int j = 0; j 关键字段名.length; j++) { if ((,+要求字段号表+,).lastIndexOf(,+i+,)0){ 要求字段号表=要求字段号表+,+(i); } } } for (int j = 0; j 关键字段名.length; j++) { if (关键字段名 .trim().equals(列名 .trim())) { 关键字序号 = i; break; } } } 列序号 = new int ; for (int i=0;i列数;i++) 列序号 =i; 表格列数 = 列数; 列标题 = new String ; 表格列名 = new String ; // 定义列名数组 表列数据类型 = new String ; // 定义列字段类型数组 表列数据宽度 = new int ; // 定义列数据宽度 表格数据 = new String ; // 表格数据数组 一条空记录 = new String ; b = 0; while (b 表格列数) { 表格列名 = 列名 ]; 表列数据类型 = 列数据类型 ]; 表列数据宽度 = 列数据宽度 ]; 列标题 = 列名 ]; 一条空记录 = ; b++; } rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c 记录条数) { rs.absolute(c + 1); while (b 表格列数) { 表格数据 = rs.getString(列序号 + 1); // 表格数据 b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta.close(); // 关闭连接 con.close(); con = null; } catch (Exception e) { e.printStackTrace(); } if (字典表名.length() 0) { con = main1.getConn(); // 调用前面方法连接数据库 try { Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1 = select * from + 字典表名; ResultSet rs = sta.executeQuery(s1);// 执行查询,获得查询结果集 while (rs.next()) { String 字段名称 = rs.getString(1); String 标签名称 = rs.getString(2); b = 0; while (b 表格列数) { if (列标题 .compareTo(字段名称) == 0) { 列标题 = 标签名称; break; } b++; } } rs.close(); // 关闭查询结果集 sta.close(); // 关闭连接 } catch (Exception e1) { e1.printStackTrace(); } } tableModel = new DefaultTableModel(表格数据, 列标题); table02 = new JTable(tableModel); table02.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table02.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); table02.addMouseListener(new MouseAdapter() { int flag = -1; public void mouseClicked(MouseEvent e) { currentRow = table02.getSelectedRow();// 获得当前行号 currentColumn = table02.getSelectedColumn();// 获得当前列号 if (flag != currentColumn) { list1.clear(); if (代码表字符串.indexOf(表格列名 ) = 0 || 代码表字符串.indexOf(列标题 ) = 0) { try { con=main1.getConn(); Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1 = select * from + 表格列名 +代码表; ResultSet rs = sta.executeQuery(s1); while(rs.next()) { String 代码内容=rs.getString(1); list1.add(代码内容); } rs.close(); sta.close(); con.close(); } catch (Exception e2) { e2.printStackTrace(); } } else { HashSetString set = new HashSetString(); for (int i = 0; i 记录条数; i++) { set.add((String) tableModel.getValueAt(i, currentColumn)); } for (String str : set) list1.add(str); } } flag = currentColumn; } }); for (int i = 0; i 表格列数; i++) { TableColumn tc = table02.getColumn(列标题 ); JTableHeader header = table02.getTableHeader(); tc.setPreferredWidth(表列数据宽度 * 8); tc.setMaxWidth(表列数据宽度 * 8); tc.sizeWidthToFit(); } scrollPane.setViewportView(table02); table02.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int selectedRow = table02.getSelectedRow(); } }); int j = 0; 要求按钮号表 = , + 要求按钮号表 + ,; if (要求按钮号表.length() 3) j = 5; else for (int i = 0; i 5; i++) if (要求按钮号表.lastIndexOf(, + i + ,) = 0) j = j + 1; int 按钮宽 = (窗口宽 - 20)/按钮数 ; //j; int 按钮左边距 = 5; 添加 = new JButton(按钮集 ); // 定义添加空记录按钮 添加.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableModel.addRow(一条空记录); // 向表格模型中添加一空行 记录条数 = 记录条数 + 1; } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,0,) = 0)) { 添加.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); // 定义添加按钮对象大小位置 frame.getContentPane().add(添加); // 加入添加按钮 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 删除 = new JButton(按钮集 ); 删除.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); // 获得被选中行的索引 if (selectedRow != -1) { s1 = ; for (int i = 0; i 关键字段名.length; i++) { if (tableModel.getValueAt(selectedRow, 关键字序号 ) == null) { JOptionPane.showMessageDialog(null, 关键字不能缺少!); return; } 关键字段值 = tableModel.getValueAt(selectedRow, 关键字序号 ) .toString(); if (main1.数字数据类型.lastIndexOf(列数据类型 ]) 0) s1 = s1 + 关键字段名 + = + 关键字段值 ; else s1 = s1 + 关键字段名 + =' + 关键字段值 + ' ; if (i 关键字段名.length - 1) s1 = s1 + and ; } s1 = delete from + 表名 + where + s1; try { con = main1.getConn(); // 连接数据库 pstmt = con.prepareStatement(s1); pstmt.execute(); tableModel.removeRow(selectedRow); // 从表格模型当中删除指定行 记录条数 = 记录条数 - 1; pstmt.close(); con.close(); // 关闭连接 } catch (Exception e2) { e2.printStackTrace(); } } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,1,) = 0)) { 删除.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); // 定义删除按钮对象大小位置 frame.getContentPane().add(删除); // 加入删除按钮 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 本条存盘 = new JButton(按钮集 ); 本条存盘.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { con = main1.getConn(); // 连接数据库 try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (itemCount(currentRow) = 0) { if (记录条数1 == 0) s1 = insertNewItem(currentRow); else { s1 = updateItem(currentRow); } pstmt = con.prepareStatement(s1); pstmt.execute(); sta.close(); con.close(); } else { JOptionPane.showMessageDialog(null, 关键字为空,请重新输入!); return; } } catch (Exception e2) { e2.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,2,) = 0)) { 本条存盘.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); frame.getContentPane().add(本条存盘); 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 全部存盘 = new JButton(按钮集 ); 全部存盘.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { con = main1.getConn(); try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch (SQLException e2) { e2.printStackTrace(); } for (int i = 0; i 记录条数; i++) { if (itemCount(i) = 0) { if (记录条数1 == 0) s1 = insertNewItem(i); else s1 = updateItem(i); try { pstmt = con.prepareStatement(s1); pstmt.execute(); } catch (SQLException e1) { e1.printStackTrace(); } } else { JOptionPane.showMessageDialog(null, 关键字有的为空,请检查!); return; } } try { sta.close(); con.close(); pstmt.close(); } catch (SQLException e1) { e1.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,3,) = 0)) { 全部存盘.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); // 定义全部存盘按钮对象大小位置 frame.getContentPane().add(全部存盘); // 加入全部存盘按钮 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 退出 = new JButton(按钮集 ); 退出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.setVisible(false); frame.dispose(); } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,4,) = 0)) { 退出.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); frame.getContentPane().add(退出); 按钮左边距 = 按钮左边距 + 按钮宽; } frame.setVisible(true); // 显示窗体 } static String insertNewItem(int row) { String temp11 = 0 + ,; String temp12 = 0; String temp21 = ' + + ' + ,; String temp22 = ' + + '; String ss = new String(); 当前字段值 = new String ; for (int i = 0; i 列数; i++) { if (main1.数字数据类型.indexOf(列数据类型 ) = 0) { 当前字段值 = temp11; if (i == 列数 - 1) 当前字段值 = temp12; } else { 当前字段值 = temp21; if (i == 列数 - 1) 当前字段值 = temp22; } } for (int i = 0; i 表格列数; i++) { String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString();// 取当前表格元素数据值 if (当前字段值 ].trim().equals(temp21.trim())) 当前字段值 ] = ' + temp + ' + ,; else if (当前字段值 ].trim().equals(temp11.trim()) temp != ) 当前字段值 ] = temp + ,; else if (当前字段值 ].trim().equals(temp22.trim())) 当前字段值 ] = ' + temp + '; else if (当前字段值 ].trim().equals(temp12.trim()) temp != ) 当前字段值 ] = temp; } if (字段名表.length()0) ss=insert into +表名+(+字段名表+) values (; else ss=insert into +表名+ values (; for (int i = 0; i 列数; i++) { ss += 当前字段值 ; } ss += ); return ss; } static String updateItem(int row) { String ss = new String(); 当前字段值 = new String ; for (int i = 0; i 表格列数; i++) { int k; for (k = 0; k 关键字序号.length; k++) { if (i == 关键字序号 ) break; } if (k 关键字序号.length) continue; String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); if (main1.数字数据类型.indexOf(列数据类型 ) = 0) { ss += 表格列名 + = + temp; } else { ss += 表格列名 + =' + temp + '; } if (i 表格列数 - 1) ss += ,; } ss = update + 表名 + set + ss + s3; return ss; } static int itemCount(int row) { 临时=临时+1; s1 = ; int j = 0; for (int i = 0; i 关键字段名.length; i++) { String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); 关键字段值 = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); if (关键字段值 .compareTo( ) 0){ j = -1; break; } if (main1.数字数据类型.lastIndexOf(列数据类型 ]) 0) s1 = s1 + 关键字段名 + = + 关键字段值 ; else s1 = s1 + 关键字段名 + =' + 关键字段值 + ' ; if (i 关键字段名.length - 1) s1 = s1 + and ; } if (j = 0) { s3 = where + s1; s1 = select * from + 表名 + where + s1; ResultSet rs; try { con = main1.getConn(); // 连接数据库 sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); rs = sta.executeQuery(s1); rs.last(); 记录条数1 = rs.getRow(); s1 = ; rs.close(); sta.close(); //关闭连接 } catch (SQLException e) { e.printStackTrace(); }// 执行查询 return 记录条数1; } else return -1; } public void itemStateChanged(ItemEvent e) { String item = list1.getSelectedItem(); tableModel.setValueAt(item, currentRow, currentColumn); } } 31.源码31,部件程序,数据批录入、批修改、批删除表格式数据维护,可以使用代码表、字典表。 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.util.HashSet; import java.util.Vector; import java.io.*; /** * 程序文件名:tableTenance6.java * 作者:齐赛 * 用途:以表格为界面作数据录入、修改数据库中数据、删除数据库中数据等使用。 * 完成日期:2013年2月20日 * 被调用语句:tableTenance6..means(parameter)。 * 要求提供的参数:数据“表名”、字段序号、“关键字段名”、 * 可选参数:“要求字段号表”、“要求按钮号表”、“字典表名”、所涉及的“代码表名”。 操作方法与注意事项:以上所有参数均为字符串数据类型的全局变量。 * 关键字段名为识别与区分记录的主要标志,不允许重复,不允许为空,可以是单一字段,也可以是多个字段,如果是多字段,以英文逗号分隔。 * 要求字段号表:所操作数据可以是表的全部字段,也可以只涉及部分字段。如果选择全部字段,初始值设为; * 否则写入所有将涉及的字段在表中的顺序后,号与号之间以英文逗号分隔。 * 本部件预设的按钮控件共5个,序号及按钮名:1添加空记录、2本条记录存盘、3全部数据存盘、4删除、5退出 * 通过“要求按钮号表”选择按钮以实现所需要的功能。 要求按钮号表: * 如果做录入程序用,一般选择:“1,3,5”变色选择添加空记录、全部数据存盘、退出等按钮 * 如果选“1,2,5”表示选择添加空记录、本条记录存盘、退出等按钮。 * 操作时每点击一次“添加空记录”按钮,将在表中增加一空行,可以将欲添加的数据填入表内。 * 之后需要按“本条记录存盘”按钮,将新记录填入表内。 * 也可以继续点击一次“添加空记录”按钮,继续添加下一列及之后记录或修改表格中已经有的数据, * 直到全部数据加入到表格中或全部完成修改后后,最后按全部数据存盘按钮,将所有数据存入数据库。 * 如果做修改程序用,一般选择:“2,5”(本条记录存盘、退出)或3,5”(全部数据存盘、退出)。 * 如果要修改表中数据,要双击表格中数据栏,之后修改表格中数据,可以修改完一条后按本条记录存盘后保存修改结果。 * 也可以逐一修改要修改的数据,最后按“全部数据存盘”按钮,将所有修改数据存入数据库。 * 如果做删除程序用,选择:“4,5”(删除当前记录、退出”。操作时首先用鼠标点击表格中要删除的记录,之后按删除按钮,完成删除。 * 注意本程序适用于由基本数据类型构成的数据表,适用数据类型包括各类整型、各浮点类型、 * 各char数据类型、各text数据类型。 * 本程序新加特点:提供各字段共用列表框,可以利用鼠标选择历史数据录入。 * 全部数据存盘采用修改方式完成,不事先删除全表数据, 更加安全且有利于共享。 * 如果某字段有代码表,列表框中列入内容为代码表中值。 * 否则为历史数据,供鼠标点击录入。 * 如果为某字段设计代码表,要求再当前数据库中建代码表,其名字为字段名加“代码表”, * 其中字段名,一个与字段名相同,另一个为字段名加“代码”或字段名中去掉“代码”二字。 * 例如,关于性别,设计用0表示男,1表示女 * 那么,设计“性别代码表”,其中有“性别”、“性别代码”二个字段,其中二条记录:男 0;女 1。 * 在数据表中可以有字段“性别代码”,也可以有“性别”,如果前者,在列表框中显示0 1; * 录入保存的是性别代码。 * 如果数据表中字段名为性别,那么,列表框中显示男 女,录入保存的也是性别内容。 * 操作时特别注意:当修改或填入某数据后不按回车,也不用鼠标点本行的另一字段, * 直接按二个存盘按钮,新修改或填入的那个字段数据将丢失。 * 也就是说,最后输入一个数据后,要先按回车,再按存盘按钮。 */ public class tableTenance6 extends JFrame implements ItemListener { private static JTable table02; // 创建表格 static Connection con; // 连接数据库 static String url; static String 表名; // 数据表名 static String 字典表名;// 将操作的数据表的字段名说明 static String 列名; // 数据表列名 static String 列标题; static String 表列数据类型; static int 表列数据宽度; static int 记录条数, 记录条数1; // 记录条数 static String 表格数据; static String 备份数据; static String 一条空记录; static String 关键字序号; static String s1 = , s2 = , s3 = ; static DefaultTableModel tableModel; // 定义表格模型对象 static int b = 0, c = 0; static String 列序号; static String 键盘输入字串=; static int 临时=0,按钮数=0; public static void means(String ; // 数据表名 要求字段号表 = parameter ; // 需要显示的字段的顺序号 关键字段名 = parameter .split(,); String ; 按钮数 = 0; for (int i0 = 0; i0 按钮集01.length; i0++) 按钮集 = 按钮集01 ; if (parameter .length() 0) { 要求按钮号表 = parameter ;// 需要显示的按钮的顺序号 // 将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表 = 要求按钮号表.replaceAll(;, ;); 要求按钮号表 = 要求按钮号表.replaceAll(。, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); if (要求按钮号表.indexOf(;) 0) { // 如果有按钮更名要求 String s601 .indexOf(;) 0) { String s602 .split(;); 按钮集 ))] = s602 ; 要求按钮号表 = 要求按钮号表 + , + s602 ;// 只留号,去更名 按钮数++; } else { 要求按钮号表 = 要求按钮号表 + , + s601 ;// 只留号,原无更名 按钮数++; } } } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表 = 要求按钮号表 + , + s601 ; 按钮数++; } } } else { 要求按钮号表 = ; // 没输入要求按钮号,定全部按钮号 for (int i1 = 0; i1 按钮集.length; i1++) { if (i1 == 0) 要求按钮号表 = 要求按钮号表 + i1; else 要求按钮号表 = 要求按钮号表 + , + i1; 按钮数++; } } 要求按钮号表 = , + 要求按钮号表 + ,; 窗口宽 = main1.窗口宽; 窗口高 = main1.窗口高; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter );// 宽度参数 m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } final String 表名表 = parameter ; final tableTenance6 frame = new tableTenance6(); // 创建窗体 frame.setTitle(表格式数据维护程序 作者:齐赛); frame.setBounds(10, 10, 窗口宽, 窗口高); // 窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.setLayout(null); final JScrollPane scrollPane = new JScrollPane(); // 定义滚动条 scrollPane.setBounds(0, 0, 窗口宽 - 200, 窗口高 - 100); // 定义滚动面板大小位置 frame.getContentPane().add(scrollPane); // 加入滚动条 JLabel jl = new JLabel(字段可选内容 :); jl.setBounds(窗口宽 - 175, 0, 150, 30); list1 = new List(); list1.addItemListener(frame); list1.setBounds(窗口宽 - 175, 30, 150, 窗口高 - 130); frame.getContentPane().add(list1); frame.getContentPane().add(jl); if (关键字段名.length == 0) { JOptionPane.showMessageDialog(null, 缺少关键字的说明,请选择关键字后重新操作); return; } 关键字段值 = new String ; 关键字序号 = new int ; for (int i = 0; i 关键字段名.length; i++) { 关键字段值 = ; 关键字序号 = 0; } con = main1.getConn(); try { Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String .split(,); for (int i = 0; i s6.length; i++) { if (字段名表.length() 0) 字段名表 = 字段名表 + , + s7 )]; else 字段名表 = s7 )]; } s1 = select + 字段名表 + from + 表名; } else s1 = select * from + 表名; ResultSet rs = sta.executeQuery(s1); rs.last(); 记录条数 = rs.getRow(); ResultSetMetaData rsmd = rs.getMetaData(); 列数 = rsmd.getColumnCount(); 列名 = new String ; 列数据类型 = new String ; 列数据宽度 = new int ; for (int i = 0; i 列数; i++) { 列名 = rsmd.getColumnName(i + 1); 列数据类型 = rsmd.getColumnTypeName(i + 1); 列数据宽度 = rsmd.getColumnDisplaySize(b + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); else if (列数据宽度 50) 列数据宽度 = 50; if (要求字段号表.length() 0) { for (int j = 0; j 关键字段名.length; j++) { if ((,+要求字段号表+,).lastIndexOf(,+i+,)0){ 要求字段号表=要求字段号表+,+(i); } } } for (int j = 0; j 关键字段名.length; j++) { if (关键字段名 .trim().equals(列名 .trim())) { 关键字序号 = i; break; } } } 要求字段号表 = , + 要求字段号表 + ,; 列序号 = new int ; int b0 = 0, b = -1; while (b0 列数) { if ((要求字段号表.length() 3) || (要求字段号表.lastIndexOf(, + (b0 + 1) + ,) = 0)) { b = b + 1; 列序号 = b0; } b0++; } 表格列数 = b + 1; 列标题 = new String ; 表格列名 = new String ; // 定义列名数组 表列数据类型 = new String ; // 定义列字段类型数组 表列数据宽度 = new int ; // 定义列数据宽度 表格数据 = new String ; // 表格数据数组 一条空记录 = new String ; b = 0; while (b 表格列数) { 表格列名 = 列名 ]; 表列数据类型 = 列数据类型 ]; 表列数据宽度 = 列数据宽度 ]; 列标题 = 列名 ]; 一条空记录 = ; b++; } rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c 记录条数) { rs.absolute(c + 1); while (b 表格列数) { 表格数据 = rs.getString(列序号 + 1); // 表格数据 b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta.close(); // 关闭连接 con.close(); con = null; } catch (Exception e) { e.printStackTrace(); } 字典表名 = ; String .lastIndexOf(表名 + 字典表) = 0) 字典表名 = t1 ; } if (字典表名.length() 0) { con = main1.getConn(); // 调用前面方法连接数据库 try { Statement sta = con.createStatement( // 建立连接 ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1 = select * from + 字典表名; ResultSet rs = sta.executeQuery(s1); while (rs.next()) { String 字段名称 = rs.getString(1); String 标签名称 = rs.getString(2); b = 0; while (b 表格列数) { if (列标题 .compareTo(字段名称) == 0) { 列标题 = 标签名称; break; } b++; } } rs.close(); // 关闭查询结果集 sta.close(); // 关闭连接 } catch (Exception e1) { e1.printStackTrace(); } } tableModel = new DefaultTableModel(表格数据, 列标题); // 创建表格模型 table02 = new JTable(tableModel); // 创建指定表格模型的表格 table02.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table02.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); table02.addMouseListener(new MouseAdapter() { int flag = -1; public void mouseClicked(MouseEvent e) { currentRow = table02.getSelectedRow();// 获得当前行号 currentColumn = table02.getSelectedColumn(); if (flag != currentColumn) { list1.clear(); if (表名表.lastIndexOf(表格列名 ) = 0 || 表名表.lastIndexOf(列标题 ) = 0) { try { con = main1.getConn(); Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1 = select * from + 表格列名 + 代码表; ResultSet rs = sta.executeQuery(s1); while (rs.next()) { String 代码内容 = rs.getString(1); list1.add(代码内容); } } catch (Exception e2) { e2.printStackTrace(); } } else { HashSetString set = new HashSetString(); for (int i = 0; i 记录条数; i++) { set.add((String) tableModel.getValueAt(i, currentColumn)); } for (String str : set) list1.add(str); } } flag = currentColumn; } }); for (int i = 0; i 表格列数; i++) { // 设置表格每列宽度 TableColumn tc = table02.getColumn(列标题 );// 返回表格的列对象 tc.setPreferredWidth(表列数据宽度 * 9); tc.sizeWidthToFit(); } scrollPane.setViewportView(table02); // 滚动条加到表格中 table02.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int selectedRow = table02.getSelectedRow(); 键盘输入字串 = ; } }); table02.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent evt) { 键盘输入字串 = 键盘输入字串 + evt.getKeyChar(); } }); int j = 0; 要求按钮号表 = , + 要求按钮号表 + ,; if (要求按钮号表.length() 3) j = 5; else for (int i = 0; i 5; i++) if (要求按钮号表.lastIndexOf(, + i + ,) = 0) j = j + 1; int 按钮宽 = (窗口宽 - 20) / 按钮数; int 按钮左边距 = 5; 添加 = new JButton(按钮集 ); // 定义添加空记录按钮 添加.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableModel.addRow(一条空记录); 记录条数 = 记录条数 + 1; } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,0,) = 0)) { 添加.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); frame.getContentPane().add(添加); 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 删除 = new JButton(按钮集 ); 删除.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); if (selectedRow != -1) { s1 = ; for (int i = 0; i 关键字段名.length; i++) { 关键字段值 = (String) tableModel.getValueAt(selectedRow, 关键字序号 ); if (main1.数字数据类型.lastIndexOf(列数据类型 ]) 0) s1 = s1 + 关键字段名 + = + 关键字段值 ; else s1 = s1 + 关键字段名 + =' + 关键字段值 + ' ; if (i 关键字段名.length - 1) s1 = s1 + and ; } s1 = delete from + 表名 + where + s1; try { con = main1.getConn(); pstmt = con.prepareStatement(s1); pstmt.execute(); tableModel.removeRow(selectedRow); 记录条数 = 记录条数 - 1; con.close(); // 关闭连接 } catch (Exception e2) { e2.printStackTrace(); } } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,1,) = 0)) { 删除.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); // 定义删除按钮对象大小位置 frame.getContentPane().add(删除); // 加入删除按钮 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 本条存盘 = new JButton(按钮集 ); 本条存盘.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { con = main1.getConn();// 连接数据库 try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (itemCount(currentRow) = 0) { if (记录条数1 == 0) s1 = insertNewItem(currentRow); else { s1 = updateItem(currentRow); } pstmt = con.prepareStatement(s1); pstmt.execute(); sta.close(); con.close(); } else { JOptionPane.showMessageDialog(null, 关键字为空,请重新输入!); return; } } catch (Exception e2) { e2.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,2,) = 0)) { 本条存盘.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); // 定义本条存盘按钮对象大小位置 frame.getContentPane().add(本条存盘); // 加入本条存盘按钮 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 全部存盘 = new JButton(按钮集 ); 全部存盘.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { con = main1.getConn(); // 连接数据库 try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch (SQLException e2) { e2.printStackTrace(); } for (int i = 0; i 记录条数; i++) { if (itemCount(i) = 0) { if (记录条数1 == 0) s1 = insertNewItem(i); else s1 = updateItem(i); try { pstmt = con.prepareStatement(s1); pstmt.execute(); } catch (SQLException e1) { e1.printStackTrace(); } } else { JOptionPane.showMessageDialog(null, 关键字有的为空,请检查!); return; } } try { sta.close(); con.close(); pstmt.close(); } catch (SQLException e1) { e1.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,3,) = 0)) { 全部存盘.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); // 定义全部存盘按钮对象大小位置 frame.getContentPane().add(全部存盘); // 加入全部存盘按钮 按钮左边距 = 按钮左边距 + 按钮宽; } final JButton 退出 = new JButton(按钮集 ); 退出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.setVisible(false); frame.dispose(); } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,4,) = 0)) { 退出.setBounds(按钮左边距, 窗口高 - 80, 按钮宽 - 10, 20); frame.getContentPane().add(退出); // 加入退出按钮 按钮左边距 = 按钮左边距 + 按钮宽; } frame.setVisible(true); // 显示窗体 } static String insertNewItem(int row) { if (table02.getValueAt(row,currentColumn)==null) tableModel.setValueAt(键盘输入字串, row, currentColumn); else if (! table02.getValueAt(row,currentColumn).toString().trim().equals(键盘输入字串.trim())) tableModel.setValueAt(table02.getValueAt(row,currentColumn)+键盘输入字串, row, currentColumn); table02.setModel(tableModel); String temp11 = 0 + ,; String temp12 = 0; String temp21 = ' + + ' + ,; String temp22 = ' + + '; String ss = new String(); 当前字段值 = new String ; for (int i = 0; i 列数; i++) { if (main1.数字数据类型.indexOf(列数据类型 ) = 0) { 当前字段值 = temp11; if (i == 列数 - 1) 当前字段值 = temp12; } else { 当前字段值 = temp21; if (i == 列数 - 1) 当前字段值 = temp22; } } for (int i = 0; i 表格列数; i++) { String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString();// 取当前表格元素数据值 if (当前字段值 ].trim().equals(temp21.trim())) 当前字段值 ] = ' + temp + ' + ,; else if (当前字段值 ].trim().equals(temp11.trim()) temp != ) 当前字段值 ] = temp + ,; else if (当前字段值 ].trim().equals(temp22.trim())) 当前字段值 ] = ' + temp + '; else if (当前字段值 ].trim().equals(temp12.trim()) temp != ) 当前字段值 ] = temp; } if (字段名表.length()0) ss=insert into +表名+(+字段名表+) values (; else ss=insert into +表名+ values (; for (int i = 0; i 列数; i++) { ss += 当前字段值 ; } ss += ); return ss; } static String updateItem(int row) { String ss = new String(); 当前字段值 = new String ; if (table02.getValueAt(row,currentColumn)==null) tableModel.setValueAt(键盘输入字串, row, currentColumn); else if (! table02.getValueAt(row,currentColumn).toString().trim().equals(键盘输入字串.trim())) tableModel.setValueAt(table02.getValueAt(row,currentColumn)+键盘输入字串, row, currentColumn); table02.setModel(tableModel); for (int i = 0; i 表格列数; i++) { int k; for (k = 0; k 关键字序号.length; k++) { if (i == 关键字序号 ) break; } if (k 关键字序号.length) continue; String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); if (main1.数字数据类型.indexOf(列数据类型 ) = 0) { ss += 表格列名 + = + temp; } else { ss += 表格列名 + =' + temp + '; } if (i 表格列数 - 1) ss += ,; } ss = update + 表名 + set + ss + s3; return ss; } static int itemCount(int row) { 临时=临时+1; s1 = ; int j = 0; for (int i = 0; i 关键字段名.length; i++) { String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); 关键字段值 = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString();// 取当前表格元素数据值 if (关键字段值 .compareTo( ) 0){ j = -1; break; } if (main1.数字数据类型.lastIndexOf(列数据类型 ]) 0) s1 = s1 + 关键字段名 + = + 关键字段值 ; else s1 = s1 + 关键字段名 + =' + 关键字段值 + ' ; if (i 关键字段名.length - 1) s1 = s1 + and ; } if (j = 0) { s3 = where + s1; s1 = select * from + 表名 + where + s1; ResultSet rs; try { rs = sta.executeQuery(s1); rs.last(); 记录条数1 = rs.getRow(); s1 = ; rs.close(); } catch (SQLException e) { e.printStackTrace(); }// 执行查询 return 记录条数1; } else return -1; } public void itemStateChanged(ItemEvent e) { String item = list1.getSelectedItem(); tableModel.setValueAt(item, currentRow, currentColumn); } } 版本2 27.源码27,部件程序,以表格为界面作数据维护使用的基本程序,最后一个数据输入后无需换行。 /** * 程序文件名:tableTenance2.java * 作者:程传庆 * 用途:以表格为界面作数据维护使用的基本程序。 * 完成日期:2012年12月12日 * 被调用语句:tableTenance2.means(parameter) 必须提供的参数:数据“表名”、 “关键字”。 * 可选参数:要求字段号表:所操作数据可以是表的全部字段,也可以只涉及部分字段。 如果选择全部字段,初始值设为; * 否则写入所有将涉及的字段在表中的顺序号,号与号之间以英文逗号分隔。 本部件预设的按钮控件共4个,序号及按钮名:1当前行存盘、2删除、3修改存盘、4退出 * 在入口处通过“要求按钮号表”选择按钮以实现所需要的功能。 每个号数字后可以加分号,分号后跟准备更换的按钮名称,实现按钮名变换。 * 录入数据时先将数据填入到表格中,再点击“当前行存盘”按钮保存记录。 修改数据时先在表格中修改,之后点击“当前行存盘”按钮保存记录。 * 删除操作时先点击表格中某行,之后点击“删除”按钮完成删除。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class tableTenance2 extends JFrame { static tableTenance2 frame; static JPanel variabl2613 = new JPanel(false); static JScrollPane scrollPane; private static JTable table02; static Connection con; static String variabl2603; static String variabl2429; static String variabl1873; static String variabl2517; static String variabl2411; static String variabl1489; static int variabl1853, variabl18531; static String variabl2197; static String variabl1701; static String variabl1507; static String variabl1287; static int variabl2593 = 0, variabl2547 = 0; static String s1 = , s2 = , s3 = ; static String variabl1175 = ; static DefaultTableModel tableModel; static int b = 0, c = 0; static String sw = new String ; static int variabl2851 = 0, variabl2339 = 0; public static void means(String ; sw = main1.sw1 + ;sw = main1.sw2; sw = main1.sw3; sw = main1.sw4; sw = main1.sw5; sw = main1.sw6; sw = main1.sw7; sw = main1.sw8; sw = main1.sw9; sw = main1.sw10; main1.sw1 = 0; main1.sw2 = ; main1.sw3 = ; main1.sw4 = ; main1.sw5 = ; main1.sw6 = ; main1.sw7 = ; main1.sw8 = ; main1.sw9 = ; main1.sw10 = ; /* 注释:本组变量用于涉及工作流的程序之间数据接口,其意义如下: * main1.sw1 * main1.sw4 * main1.sw7 */ variabl1901 = 0; variabl1691 = 0; variabl1739 = 0; variabl1899 = 0; variabl2593 = 0; variabl2547 = 0; s1 = ; s2 = ; s3 = ; variabl1175 = ; b = 0; c = 0; con = main1.getConn(); String ; variabl2851 = 0; for (int i0 = 0; i0 variabl240501.length; i0++) variabl2405 = variabl240501 ; if (parameter .length() 0) { variabl1187 = parameter ; if (variabl1187.indexOf(;) 0) { String s601 .indexOf(;) 0) { String s602 .split(;); variabl2405 ))] = s602 ; variabl1187 = variabl1187 + , + s602 ; variabl2851++; } else { variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { String s601 ; else variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { variabl1187 = ; for (int i1 = 0; i1 variabl2405.length; i1++) { if (i1 == 0) variabl1187 = variabl1187 + i1; else variabl1187 = variabl1187 + , + i1; variabl2851++; } } variabl1187 = , + variabl1187 + ,; variabl2483 = main1.variabl2483; variabl2503 = main1.variabl2503; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter ); m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } frame = new tableTenance2(); frame.setTitle(单表数据维护部件 作者:程传庆); frame.setBounds(0, 0, variabl2483, variabl2503); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); variabl2613.setLayout(null); variabl2613.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); frame.add(variabl2613, null); scrollPane = new JScrollPane(); scrollPane.setBounds(0, 0, variabl2483 - 100, variabl2503 - 100); variabl2613.add(scrollPane, BorderLayout.CENTER); char x1 = 10, x2 = 13; variabl2429 = parameter ; variabl2603 = parameter ; variabl1525 = parameter .split(,); variabl1377 = new String ; variabl1287 = new int ; variabl1153 = parameter ; if (variabl1153.trim().length()==0) variabl1633 = parameter ; else { String .split(,); for (int i = 0; i s6.length; i++) { if (variabl1633.length() 0) variabl1633 = variabl1633 + , + s7 )]; else variabl1633 = s7 )]; } } for (int i = 0; i variabl1525.length; i++) { if ((,+variabl1633+,).indexOf(,+variabl1525 +,)0) { variabl1633=variabl1633+,+variabl1525 ; } } con = main1.getConn(); try { Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select + variabl1633 + from + variabl2603; if ((sw .length() 0) (sw .length() 0)) s1 = s1 + where + sw + = ' + sw + '; ResultSet rs = sta.executeQuery(s1); rs.last(); variabl1853 = rs.getRow(); ResultSetMetaData rsmd = rs.getMetaData(); variabl2651 = rsmd.getColumnCount(); variabl2517 = new String ; variabl1501 = new String ; variabl1489 = new int ; variabl2113 = variabl2651; variabl2411 = new String ; int ; variabl1425 = new String ; variabl1507 = new String ; while (b variabl2651) { variabl2517 = rsmd.getColumnName(b + 1); variabl2411 = variabl2517 ; variabl1501 = rsmd.getColumnTypeName(b + 1); variabl1489 = rsmd.getColumnDisplaySize(b + 1); variabl1507 = ; for (int i = 0; i variabl1525.length; i++) { variabl1377 = ; } for (int i = 0; i variabl1525.length; i++) { if (variabl1525 .trim().equals(variabl2517 .trim())) { variabl1287 = b; variabl16330 = variabl16330 + b + ,; break; } } if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); else if (variabl1489 50) variabl1489 = 50; b++; } variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c variabl1853) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta.close(); } catch (Exception e) { e.printStackTrace(); } tableModel = new DefaultTableModel(variabl2197, variabl2517); table02 = new JTable(tableModel); table02.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table02.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); for (int i = 0; i variabl2113; i++) { TableColumn tc = table02.getColumn(variabl2411 ); tc.setPreferredWidth(variabl1489 * 9); tc.sizeWidthToFit(); } scrollPane.setViewportView(table02); tableModel.addRow(variabl1507); variabl1853 = variabl1853 + 1; table02.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent evt) { variabl1175 = variabl1175 + evt.getKeyChar(); } }); table02.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int selectedRow = table02.getSelectedRow(); variabl2593 = table02.getSelectedRow(); variabl2547 = table02.getSelectedColumn(); int k=0; for (int i = 0; i variabl1525.length; i++) { if (variabl1287 == variabl2547 ) k=1; } if (k==0) { tableModel.setValueAt(, variabl2593, variabl2547); } variabl1175 = ; } }); table02.addFocusListener(new FocusAdapter() { public void focusLost(final FocusEvent arg0) { variabl2593 = table02.getSelectedRow(); variabl2547 = table02.getSelectedColumn(); if (variabl1175.trim().length()0){ if (variabl1175.indexOf( )=0) variabl1175=variabl1175.substring(variabl1175.lastIndexOf( )+1,variabl1175.length()); tableModel.setValueAt(variabl1175, variabl2593, variabl2547); } } }); int j = 0; variabl1187 = , + variabl1187 + ,; if (variabl1187.length() 3) j = 4; else for (int i = 0; i 4; i++) if (variabl1187.lastIndexOf(, + i + ,) = 0) j = j + 1; int variabl2339 = (variabl2483 - 20) / variabl2851; int variabl1423 = 5; final JButton variabl1291 = new JButton(variabl2405 ); variabl1291.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); con = main1.getConn(); try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = ; int j = 0; for (int i = 0; i variabl1525.length; i++) { variabl1377 = tableModel.getValueAt(selectedRow, variabl1287 ) .toString(); if (variabl1377 .compareTo( ) 0) j = -1; if (main1.variabl1545.lastIndexOf(variabl1501 ]) 0) s1 = s1 + variabl1525 + = + variabl1377 ; else s1 = s1 + variabl1525 + =' + variabl1377 + ' ; if (i variabl1525.length - 1) s1 = s1 + and ; } if (j = 0) { s3 = where + s1; s1 = select * from + variabl2603 + where + s1; ResultSet rs = sta.executeQuery(s1); rs.last(); variabl18531 = rs.getRow(); s1 = ; s2 = set ; for (int i = 0; i variabl2651; i++) { if (tableModel.getValueAt(selectedRow, i) == null) variabl1425 = ; else variabl1425 = tableModel .getValueAt(selectedRow, i).toString(); if (variabl1425 == null) variabl1425 = ; if (main1.variabl1545.indexOf(variabl1501 )=0) { if (variabl1425 .length() == 0)variabl1425 = 0; s1 = s1 + variabl1425 ; s2 = s2 + variabl2517 + = + variabl1425 ; } else { s1 = s1 + ' + variabl1425 + '; s2 = s2 + variabl2517 + =' + variabl1425 + '; } if (i variabl2651 - 1) { s1 = s1 + ,; s2 = s2 + ,; } } if (variabl18531 == 0) { if (variabl1633.length() 0) s1 = insert into + variabl2603 + ( + variabl1633 + ) values ( + s1 + ); else s1 = insert into + variabl2603 + values ( + s1 + ); tableModel.addRow(variabl1507); variabl1853 = variabl1853 + 1; } else { JOptionPane.showMessageDialog(null, 关键字数据重复!); tableModel.removeRow(selectedRow); tableModel.addRow(variabl1507); rs.close(); con.close(); return; } pstmt = con.prepareStatement(s1); pstmt.execute(); pstmt.close(); rs.close(); con.close(); } } catch (Exception e2) { e2.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,0,) = 0)) { variabl1291.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); variabl2613.add(variabl1291); variabl1423 = variabl1423 + variabl2339; } final JButton variabl2633 = new JButton(variabl2405 ); variabl2633.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); if (selectedRow != -1) { s1 = ; for (int i = 0; i variabl1525.length; i++) { if (tableModel.getValueAt(selectedRow, variabl1287 ) == null) { JOptionPane.showMessageDialog(null, 关键字不能缺少!); return; } variabl1377 = tableModel.getValueAt(selectedRow, variabl1287 ) .toString(); if (main1.variabl1545.lastIndexOf(variabl1501 ]) 0) s1 = s1 + variabl1525 + = + variabl1377 ; else s1 = s1 + variabl1525 + =' + variabl1377 + ' ; if (i variabl1525.length - 1) s1 = s1 + and ; } s1 = delete from + variabl2603 + where + s1; try { con = main1.getConn(); pstmt = con.prepareStatement(s1); pstmt.execute(); tableModel.removeRow(selectedRow); variabl1853 = variabl1853 - 1; pstmt.close(); con.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,1,) = 0)) { variabl2633.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); variabl2613.add(variabl2633); variabl1423 = variabl1423 + variabl2339; } final JButton variabl1697 = new JButton(variabl2405 ); variabl1697.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); int variabl2247=table02.getSelectedColumn(); if (selectedRow != -1) { for (int i=0;ivariabl2651;i++){ Object oa = tableModel.getValueAt(selectedRow, i); } } con = main1.getConn(); try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = ; for (int i = 0; i variabl1525.length; i++) { if (tableModel.getValueAt(selectedRow, variabl1287 ) == null) { JOptionPane.showMessageDialog(null, 关键字不能缺少!); return; } variabl1377 = tableModel.getValueAt(selectedRow, variabl1287 ) .toString(); if (main1.variabl1545.lastIndexOf(variabl1501 ]) = 0) s1 = s1 + variabl1525 + = + variabl1377 ; else s1 = s1 + variabl1525 + =' + variabl1377 + ' ; if (i variabl1525.length - 1) s1 = s1 + and ; } s3 = where + s1; s1 = select * from + variabl2603 + where + s1; ResultSet rs = sta.executeQuery(s1); rs.last(); variabl18531 = rs.getRow(); s1 = ; s2 = set ; for (int i = 0; i variabl2651; i++) { if (tableModel.getValueAt(selectedRow, i) == null) variabl1425 = ; else variabl1425 = tableModel .getValueAt(selectedRow, i).toString(); if (variabl1425 == null) variabl1425 = ; if (main1.variabl1545.indexOf(variabl1501 )=0) { if (variabl1425 .length() == 0)variabl1425 = 0; s1 = s1 + variabl1425 ; s2 = s2 + variabl2517 + = + variabl1425 ; } else { s1 = s1 + ' + variabl1425 + '; s2 = s2 + variabl2517 + =' + variabl1425 + '; } if (i variabl2651 - 1) { s1 = s1 + ,; s2 = s2 + ,; } } if (variabl18531 == 0) { JOptionPane.showMessageDialog(null, 请改按当前行存盘按钮!); return; } else { s1 = update + variabl2603 + s2 + s3; } pstmt = con.prepareStatement(s1); pstmt.execute(); rs.close(); con.close(); } catch (Exception e2) { e2.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,2,) = 0)) { variabl1697.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); variabl2613.add(variabl1697); variabl1423 = variabl1423 + variabl2339; } final JButton variabl2599 = new JButton(variabl2405 ); variabl2599.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ((sw .length() 0) (sw .length() 0) (sw .length() 0)) WorkflowDrivek1.means(sw); frame.setVisible(false); frame.dispose(); } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,3,) = 0)) { variabl2599.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); variabl2613.add(variabl2599); variabl1423 = variabl1423 + variabl2339; } frame.setVisible(true); } } 28.源码28,部件程序,单表数据表格式快速维护, 数据直接录入无需存盘按钮。 import java.awt.Color; import java.awt.Component; import java.awt.Dialog; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Iterator; import java.util.TreeSet; import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.plaf.TableHeaderUI; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellEditor; import javax.swing.table.TableColumn; /** * 程序文件名:tableTenance3.java 作者:齐赛 * 用途:适用于单表数据快速维护。数据直接录入无需存盘按钮,但要注意最后一行录入完成后要点击下一行任意位置完成存盘。 * 不能使用代码表、字典表,因此只适应采用中文命名字段名的表的操作。 */ public class tableTenance3 extends JFrame { static tableTenance3 frame; String variabl2603; int variabl2275; String variabl2069 variabl1525; String sw=new String ; static String ) { String ; variabl2851=0; for (int i0=0;i0variabl240501.length;i0++) variabl2405 = variabl240501 ; if (parameter .length()0){ variabl1187=parameter ; variabl1187=variabl1187.replaceAll(;,;); variabl1187=variabl1187.replaceAll(。,;); variabl1187=variabl1187.replaceAll(:,;); variabl1187=variabl1187.replaceAll(:,;); if (variabl1187.indexOf(;)0){ String s601 .indexOf(;)0){ String s602 .split(;); variabl2405 ))]=s602 ; variabl1187=variabl1187+,+s602 ; variabl2851++; } else { variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { String s601 ; else variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { variabl1187=; for (int i1=0;i1variabl2405.length;i1++){ if (i1==0) variabl1187=variabl1187+i1; else variabl1187=variabl1187+,+i1; variabl2851++; } } variabl1187=,+variabl1187+,; variabl2483=main1.variabl2483; variabl2503=main1.variabl2503; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ; m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } variabl2483=m1 ; variabl2503=m2 ; } }catch(Exception e2){} frame = new tableTenance3(); frame.setTitle(表格式数据维护程序 作者:齐赛); frame.initParameter(parameter); frame.initGUI(); } /** * 初始化数据成员 */ private void initParameter(String parameter ; sw =main1.sw1+;sw =main1.sw2;sw =main1.sw3; sw =main1.sw4;sw =main1.sw5;sw =main1.sw6; sw =main1.sw7;sw =main1.sw8;sw =main1.sw9; sw =main1.sw10; main1.sw1=0;main1.sw2=;main1.sw3=; main1.sw4=;main1.sw5=;main1.sw6=; main1.sw7=;main1.sw8=;main1.sw9=;main1.sw10=; con = main1.getConn(); variabl2603 = parameter ; String variabl1633= parameter ; String ==null)||(parameter .length()==0)){ parameter =; for (int i=0;is6.length;i++) if (is6.length-1) parameter =parameter +i+,; else parameter =parameter +i; } if(parameter ==null || parameter .length()==0) { JOptionPane.showConfirmDialog(null, 缺少关键字!, 错误提示, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); System.exit(0); } variabl1525 = parameter .trim().split(,); variabl1055 = new int ; ArrayListInteger variabl1025 = new ArrayListInteger(variabl1525.length); con = main1.getConn(); try { sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1=select * from + variabl2603; if ((sw .length()0)(sw .length()0)) s1=s1+ where +sw + = '+sw +'; rt = sta.executeQuery(s1); rtmd = rt.getMetaData(); int columns = rtmd.getColumnCount(); TreeSetInteger ts = new TreeSetInteger(); for (int i = 1, flag = 0; i = columns flag variabl1525.length; i++) { for (int j = 0; j variabl1525.length; j++) { if (rtmd.getColumnName(i).trim().equals(variabl1525 .trim())) { ts.add(i); variabl1025.add(i); flag++; break; } } } if (parameter == ) { for (int i = 0; i columns; i++) { parameter +=( i == columns - 1 )? i + : i + ,; } } String array .trim().split(,); for (int i = 0; i array.length; i++) { ts.add(Integer.valueOf(array ) + 1); } int i = 0; int k = 0; variabl2275 = new int ; variabl2113 = variabl2275.length; variabl2069 = new String ; variabl2369 = new String ; IteratorInteger it = ts.iterator(); while (it.hasNext()) { variabl2275 = it.next(); if (variabl1025.contains(variabl2275 )) { variabl1055 = variabl2275 - 1; } i++; } for (i = 0; i variabl2113; i++) { variabl2069 = rtmd.getColumnName(variabl2275 ); variabl2369 = ; } rt.last(); variabl2193 = rt.getRow(); variabl2197 = new String ; i = 0; while (i variabl2193) { rt.absolute(i + 1); for (int j = 0; j variabl2113; j++) { variabl2197 = rt.getString(variabl2275 ); } i++; } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rt != null) rt.close(); if (sta != null) sta.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 初始化组件、添加组件的监听器 */ private void initGUI() { dtm = new DefaultTableModel(variabl2197, variabl2069); dtm.addRow(variabl2369); table = new JTable(); table.setModel(dtm); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.getTableHeader().setDefaultRenderer(new DefaultTableCellRenderer(){ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); for(int i=0;ivariabl1055.length;i++) { if(column==variabl1055 ) { cell.setBackground(Color.LIGHT_GRAY); break; } cell.setBackground(new Color(238,238,238)); } return cell; } }); tm = new TableMonitor(); table.addMouseListener(tm); for (int i = 0; i table.getColumnCount(); i++) { table.getColumnModel().getColumn(i).setPreferredWidth(100); } scro = new JScrollPane(); scro.setBounds(30, 30, variabl2483 - 100,variabl2503 - 150); scro.getViewport().add(table); variabl2339=(variabl2483-60)/variabl2851; int variabl2337=30; delete=new JButton(variabl2405 ); delete.setBounds(variabl2337, variabl2503-100, variabl2339, 25); if (variabl1187.indexOf(,0,)=0) variabl2337=variabl2337+variabl2339; delete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int tempCurrentRow=table.getSelectedRow(); if(tempCurrentRow=0 tempCurrentRow=variabl2193-1) { try { deleteSQL(variabl2197 ); table.editCellAt(-1, -1); dtm.removeRow(tempCurrentRow); tm.lastColumn=-1; tm.lastRow=-1; variabl2193--; String tempData=new String ; for(int i=0;itempData.length;i++) { if(i=tempCurrentRow) { tempData =variabl2197 ; } else { tempData =variabl2197 ; } } variabl2197=tempData; System.out.println(----删除记录成功!------); } catch (SQLException e1) { JOptionPane.showConfirmDialog(frame, e1.getMessage(), 数据库出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } finally { if(sta!=null) { try { sta.close(); sta=null; } catch (SQLException e1) { e1.printStackTrace(); } } } } } }); exit=new JButton(variabl2405 ); exit.setBounds(variabl2337, variabl2503-100, variabl2339, 25); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableTenance3.this.dispose(); try { if (con != null) con.close(); System.out.println(数据库已断开连接!); } catch (SQLException e1) { e1.printStackTrace(); System.out.println(数据库连接断开时异常!); } if ((sw .length()0)(sw .length()0)(sw .length()0)) WorkflowDrivek1.means(sw); } }); frame.setLayout(null); frame.getContentPane().add(scro); if (variabl1187.indexOf(,0,)=0) frame.getContentPane().add(delete); if (variabl1187.indexOf(,1,)=0) frame.getContentPane().add(exit); frame.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); frame.addWindowListener(new WindowMonitor()); frame.setVisible(true); } /** * 鼠标点击表格单元格即可进行编辑,当鼠标点击其他行时,之前的行会存盘 */ private class TableMonitor extends MouseAdapter { int lastRow = -1; int lastColumn = -1; int lastHeight=-1; int newHeight=30; JTextField cell; public void mousePressed(MouseEvent e) { int tempRow = table.getSelectedRow(); int tempColumn = table.getSelectedColumn(); int tempHeight = table.getRowHeight(); if (lastRow == -1 || lastRow == tempRow) { table.setRowHeight(tempRow, newHeight); table.editCellAt(tempRow, tempColumn); cell = (JTextField) ((DefaultCellEditor) table.getCellEditor()) .getComponent(); cell.requestFocus(); cell.selectAll(); if(lastRow == -1 tempRow==table.getRowCount()-1) { dtm.addRow(variabl2369); table.scrollRectToVisible(table.getCellRect(table.getRowCount()-1, 0, false)); } lastRow = tempRow; lastColumn = tempColumn; lastHeight=tempHeight; } else { table.setRowSelectionInterval(lastRow, lastRow); if (lastRow =variabl2193) { VectorString v = (VectorString) dtm.getDataVector() .elementAt(lastRow); if (!isKeyExist(v)) { try { insertSQL(v); System.out.println(-----------------); table.setRowSelectionInterval(tempRow, tempRow); if( tempRow==table.getRowCount()-1) { dtm.addRow(variabl2369); table.scrollRectToVisible(table.getCellRect(table.getRowCount()-1, 0, false)); } table.editCellAt(tempRow, tempColumn); cell.requestFocus(); cell.selectAll(); table.setRowHeight(tempRow, newHeight); table.setRowHeight(lastRow, tempHeight); lastRow = tempRow; lastColumn = tempColumn; variabl2193++; String tempArray = new String = v.toArray(new String = variabl2197 ; } } variabl2197 = tempArray; } catch (SQLException e1) { JOptionPane.showConfirmDialog(frame,e1.getMessage(), 数据库插入出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } finally { try { if (sta != null) sta.close(); } catch (SQLException e1) { e1.printStackTrace(); } } } else { JOptionPane.showConfirmDialog(frame, 关键字重复,请检查!, 关键字出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); table.editCellAt(lastRow, variabl1055 ); return; } } else { VectorString v = (VectorString) dtm.getDataVector() .elementAt(lastRow); if(!isKeyExist(v,lastRow)) { try { updateSQL(v,lastRow); variabl2197 =v.toArray(new String ); return; } } } } } /** * 监听窗口关闭时,释放组件资源,断开数据库连接,以便于其他部件再次连接 */ private class WindowMonitor extends WindowAdapter { public void windowClosing(WindowEvent e) { frame.dispose(); try { if (con != null) con.close(); System.out.println(数据库已断开连接!); } catch (SQLException e1) { e1.printStackTrace(); System.out.println(数据库连接断开时异常!); } } } /** * 将要存盘的一行数据 * 如果为true,表示关键字已经存在 */ public boolean isKeyExist(VectorString v) { for (int i = 0; i variabl2193; i++) { int j = 0; for (; j variabl1055.length; j++) { if (v.get(variabl1055 ) != variabl2197 ] !v.get(variabl1055 ).trim().equals(variabl2197 ].trim())) break; } if (j = variabl1055.length) { return true; } } return false; } /** * param lastRow 要更新的行号 * 如果除lastRow有重复的关键字,则返回false */ public boolean isKeyExist(VectorString v, int lastRow) { for (int i = 0; i variabl2193; i++) { if(i==lastRow) continue; int j = 0; for (; j variabl1055.length; j++) { if (v.get(variabl1055 ) != variabl2197 ] !v.get(variabl1055 ).trim().equals(variabl2197 ].trim())) break; } if (j = variabl1055.length) { return true; } } return false; } /** * @param v 改变后的行内容 * @param lastRow 要更新的行号 * @throws SQLException */ public void updateSQL(VectorString v,int lastRow) throws SQLException { String preSQL = update + variabl2603 + set ; String rearSQL = where ; String strSQL = ; for (int i = 0, flag = 0; i variabl2069.length; i++) { if (i != variabl2069.length - 1) { if( v.get(i)==null || v.get(i).length()=0) { preSQL += variabl2069 + =NULL,; } else { preSQL += variabl2069 + =' + v.get(i) + ',; } for (int j = 0; j variabl1055.length flag variabl1055.length; j++) { if (variabl1055 == i) { flag++; if (j != variabl1055.length - 1) rearSQL += variabl2069 + =' + variabl2197 + ' AND ; else rearSQL += variabl2069 + =' + variabl2197 + '; break; } } } else { if( v.get(i)==null || v.get(i).length()=0) { preSQL += variabl2069 + =NULL; } else { preSQL += variabl2069 + =' + v.get(i) + ' ; } } } strSQL = preSQL + rearSQL; updateExecute(strSQL); } private void updateExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } /** * @param v 将要存盘的一行数据 * @throws SQLException * 存盘时候发生异常 */ public void insertSQL(VectorString v) throws SQLException { String rearSQL = values (; String preSQL = insert into + variabl2603 + (; String strSQL = ; for (int i = 0; i variabl2069.length; i++) { if (i != variabl2069.length - 1) { preSQL += variabl2069 + ,; if( v.get(i)==null || v.get(i).length()=0) { rearSQL +=NULL,; } else { rearSQL += ' + v.get(i) + ',; } } else { preSQL += variabl2069 + ); if( v.get(i)==null || v.get(i).length()=0) { rearSQL +=NULL); } else { rearSQL += ' + v.get(i) + '); } } } strSQL = preSQL + rearSQL; insertExecute(strSQL); } private void insertExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } private void deleteSQL(String ]+='+array +' AND ; } else { rearSQL+=variabl2069 ]+='+array +'; } } strSQL = preSQL + rearSQL; deleteExecute(strSQL); } private void deleteExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } } 29.源码29,部件程序,单表数据表格式快速维护。可以使用代码表、字典表,数据直接录入无需存盘按钮。 import java.awt.Color; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeSet; import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; /** * 程序文件名:tableTenance4.java * 作者:齐赛 * 用途:适用于单表数据快速维护。 可以使用代码表、字典表,数据直接录入无需存盘按钮。 * 适用于包括非中文字段名的任意数据表数据维护。 */ public class tableTenance4 extends JFrame { static tableTenance4 frame; String variabl2603; int variabl2275; String variabl2069 variabl1525; String variabl1749; boolean flags variabl2405=null; static String variabl1187; static int variabl2483=0,variabl2503=0,variabl2851=0,variabl2339=0; TableMonitor tm; public static void means(String parameter variabl240501={ 删除,退出}; variabl2405=new String ; variabl2851=0; for (int i0=0;i0variabl240501.length;i0++) variabl2405 = variabl240501 ; if (parameter .length()0){ variabl1187=parameter ; variabl1187=variabl1187.replaceAll(;,;); variabl1187=variabl1187.replaceAll(。,;); variabl1187=variabl1187.replaceAll(:,;); variabl1187=variabl1187.replaceAll(:,;); if (variabl1187.indexOf(;)0){ String s601 .indexOf(;)0){ String s602 .split(;); variabl2405 ))]=s602 ; variabl1187=variabl1187+,+s602 ; variabl2851++; } else { variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { String s601 ; else variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { variabl1187=; for (int i1=0;i1variabl2405.length;i1++){ if (i1==0) variabl1187=variabl1187+i1; else variabl1187=variabl1187+,+i1; variabl2851++; } } variabl1187=,+variabl1187+,; variabl2483=main1.variabl2483; variabl2503=main1.variabl2503; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ; m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } variabl2483=m1 ; variabl2503=m2 ; } }catch(Exception e2){} frame = new tableTenance4(); frame.setTitle(表格式数据维护程序 作者:齐赛); frame.initParameter(parameter); frame.initGUI(); } /** * 初始化数据成员 */ private void initParameter(String parameter ; String variabl1633= parameter ; String ==null)||(parameter .length()==0)){ parameter =; for (int i=0;is6.length;i++) if (is6.length-1) parameter =parameter +i+,; else parameter =parameter +i; } if (parameter == null || parameter .length() == 0) { JOptionPane.showConfirmDialog(null, 缺少关键字!, 错误提示, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); System.exit(0); } variabl1525 = parameter .trim().split(,); variabl1055 = new int ; ArrayListInteger variabl1025 = new ArrayListInteger(variabl1525.length); con = main1.getConn(); ResultSet rs = null; try { sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); DatabaseMetaData dbmd = con.getMetaData(); rs = dbmd.getTables(null, null, %, new String =parameter .split(,); for(int i=0;itemp.length variabl1873==null;i++) { variabl1873=temp .endsWith(字典表)?temp :null; } if (variabl1873 != null variabl1873.length() 0) { try { sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rt = sta.executeQuery(select * from + variabl1873); rt.last(); int count = rt.getRow(); variabl1837 = new String ; rt.absolute(1); while (count = 1) { variabl1837 = rt.getString(1); variabl1837 = rt.getString(2); count--; rt.next(); } } catch (SQLException e1) { e1.printStackTrace(); } finally { try { if (rt != null) { rt.close(); rt = null; } if (sta != null) { sta.close(); sta = null; } } catch (SQLException sqle) { sqle.printStackTrace(); } } } try { sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rt = sta.executeQuery(select * from + variabl2603); rtmd = rt.getMetaData(); int columns = rtmd.getColumnCount(); TreeSetInteger ts = new TreeSetInteger(); for (int i = 1, flag = 0; i = columns flag variabl1525.length; i++) { for (int j = 0; j variabl1525.length; j++) { if (rtmd.getColumnName(i).trim().equals(variabl1525 .trim())) { ts.add(i); variabl1025.add(i); flag++; break; } } } if (parameter == ) { for (int i = 0; i columns; i++) { parameter +=( i == columns - 1 )? i + : i + ,; } } String array .trim().split(,); for (int i = 0; i array.length; i++) { ts.add(Integer.valueOf(array ) + 1); } int i = 0; int k = 0; variabl2275 = new int ; variabl2113 = variabl2275.length; variabl2069 = new String ; variabl2369 = new String ; IteratorInteger it = ts.iterator(); while (it.hasNext()) { variabl2275 = it.next(); if (variabl1025.contains(variabl2275 )) { variabl1055 = variabl2275 - 1; } i++; } variabl1749 = new String ; flags = new boolean ; for (i = 0; i variabl2113; i++) { variabl2069 = rtmd.getColumnName(variabl2275 ); variabl2369 =; if (variabl1837 != null) { int j = 0; for (; j variabl1837.length; j++) { if (variabl1837 .trim().equalsIgnoreCase(variabl2069 .trim())) { variabl1749 = variabl1837 ; break; } } if (j = variabl1837.length) { variabl1749 = variabl2069 ; } } else { variabl1749 = variabl2069 ; } if (!variabl1749 .endsWith(代码) variabl2233.contains(variabl1749 + 代码表)) { ResultSet rs1 = null; Statement sta1 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs1 = sta1.executeQuery(select * from + variabl1749 + 代码表); MapString, String codeTable = new HashMapString, String(); while (rs1.next()) { String label = rs1.getString(variabl1749 .trim()); String code = rs1.getString(variabl1749 .trim() + 代码); codeTable.put(label, code); codeTable.put(code, label); } map.put(variabl1749 + 代码, codeTable); rs1.close(); rs1 = null; sta1.close(); sta1 = null; flags = true; variabl1749 = variabl1749 + 代码; } variabl2369 = ; } rt.last(); variabl2193 = rt.getRow(); variabl2197 = new String ; i = 0; while (i variabl2193) { rt.absolute(i + 1); for (int j = 0; j variabl2113; j++) { if (flags ) { variabl2197 = map.get(variabl1749 ).get(rt.getString(variabl2275 )); } else { variabl2197 = rt.getString(variabl2275 ); } } i++; } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rt != null) { rt.close(); rt = null; } if (sta != null) { sta.close(); sta = null; } } catch (SQLException e) { e.printStackTrace(); } } } /** * 初始化组件、添加组件的监听器 */ private void initGUI() { dtm = new DefaultTableModel(variabl2197, variabl1749); dtm.addRow(variabl2369); table = new JTable(); table.setModel(dtm); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.getTableHeader().setDefaultRenderer( new DefaultTableCellRenderer() { public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JComponent cell = (JComponent)super .getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); for (int i = 0; i variabl1055.length; i++) { if (column == variabl1055 ) { cell.setBackground(Color.LIGHT_GRAY); break; } cell.setBackground(new Color(238, 238, 238)); } cell.setBorder(BorderFactory.createRaisedBevelBorder()); return cell; } }); tm = new TableMonitor(); table.addMouseListener(tm); for (int i = 0; i table.getColumnCount(); i++) { table.getColumnModel().getColumn(i).setPreferredWidth(100); } variabl2339=(variabl2483-60)/variabl2851; int variabl2337=30; delete = new JButton(variabl2405 ); delete.setBounds(variabl2337, variabl2503 - 100, variabl2339, 25); if (variabl1187.indexOf(,0,)=0) variabl2337=variabl2337+variabl2339; delete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int tempCurrentRow = table.getSelectedRow(); if (tempCurrentRow = 0 tempCurrentRow = variabl2193 - 1) { try { deleteSQL(variabl2197 ); table.editCellAt(-1, -1); dtm.removeRow(tempCurrentRow); tm.lastColumn = -1; tm.lastRow = -1; variabl2193--; String tempData = new String = variabl2197 ; } else { tempData = variabl2197 ; } } variabl2197 = tempData; System.out.println(----删除记录成功!------); } catch (SQLException e1) { JOptionPane.showConfirmDialog(frame, e1.getMessage(), 数据库出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } finally { if (sta != null) { try { sta.close(); sta = null; } catch (SQLException e1) { e1.printStackTrace(); } } } } } }); exit = new JButton(variabl2405 ); exit.setBounds(variabl2337, variabl2503 - 100, variabl2339, 25); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableTenance4.this.dispose(); try { if (con != null) con.close(); System.out.println(数据库已断开连接!); } catch (SQLException e1) { e1.printStackTrace(); System.out.println(数据库连接断开时异常!); } } }); scro = new JScrollPane(); scro.setBounds(30, 30, variabl2483 - 100, variabl2503 - 150); scro.getViewport().add(table); frame.setLayout(null); frame.getContentPane().add(scro); frame.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); frame.addWindowListener(new WindowMonitor()); if (variabl1187.indexOf(,0,)=0) frame.add(delete); if (variabl1187.indexOf(,1,)=0) frame.add(exit); frame.setVisible(true); } /** * 鼠标点击表格单元格即可进行编辑,当鼠标点击其他行时,之前的行会存盘 */ private class TableMonitor extends MouseAdapter { int lastRow = -1; int lastColumn = -1; int lastHeight = -1; int newHeight = 30; JTextField cell; public void mousePressed(MouseEvent e) { int tempRow = table.getSelectedRow(); int tempColumn = table.getSelectedColumn(); int tempHeight = table.getRowHeight(); if (lastRow == -1 || lastRow == tempRow) { table.setRowHeight(tempRow, newHeight); table.editCellAt(tempRow, tempColumn); cell = (JTextField) ((DefaultCellEditor) table.getCellEditor()) .getComponent(); cell.requestFocus(); cell.selectAll(); if (lastRow == -1 tempRow == table.getRowCount() - 1) { dtm.addRow(variabl2369); table.scrollRectToVisible(table.getCellRect( table.getRowCount() - 1, 0, false)); } lastRow = tempRow; lastColumn = tempColumn; lastHeight = tempHeight; } else { table.setRowSelectionInterval(lastRow, lastRow); if (lastRow = variabl2193) { VectorString v = (VectorString) dtm.getDataVector() .elementAt(lastRow); VectorString vv = new VectorString(v); for (int i = 0; i vv.size(); i++) { if (flags ) { vv.set(i, map.get(variabl1749 ).get(vv.get(i))); } } if (!isKeyExist(vv)) { try { insertSQL(vv); table.setRowSelectionInterval(tempRow, tempRow); if (tempRow == table.getRowCount() - 1) { dtm.addRow(variabl2369); table.scrollRectToVisible(table.getCellRect( table.getRowCount() - 1, 0, false)); } table.editCellAt(tempRow, tempColumn); cell.requestFocus(); cell.selectAll(); table.setRowHeight(tempRow, newHeight); table.setRowHeight(lastRow, tempHeight); lastRow = tempRow; lastColumn = tempColumn; variabl2193++; String tempArray = new String = v.toArray(new String = variabl2197 ; } } variabl2197 = tempArray; System.out.println(------插入新纪录成功!--------); } catch (SQLException e1) { JOptionPane.showConfirmDialog(frame, e1.getMessage(), 数据库插入出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); } finally { try { if (sta != null) sta.close(); } catch (SQLException e1) { e1.printStackTrace(); } } } else { JOptionPane.showConfirmDialog(frame, 关键字重复,请检查!, 关键字出错, JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); table.editCellAt(lastRow, variabl1055 ); return; } } else { VectorString v = (VectorString) dtm.getDataVector() .elementAt(lastRow); VectorString vv = new VectorString(v); for (int i = 0; i vv.size(); i++) { if (flags ) { vv.set(i, map.get(variabl1749 ).get(vv.get(i))); } } if (!isKeyExist(vv, lastRow)) { try { updateSQL(vv, lastRow); variabl2197 = v.toArray(new String ); return; } } } } } /** * 监听窗口关闭时,释放组件资源,断开数据库连接,以便于其他部件再次连接 */ private class WindowMonitor extends WindowAdapter { public void windowClosing(WindowEvent e) { frame.dispose(); try { if (con != null) con.close(); System.out.println(数据库已断开连接!); } catch (SQLException e1) { e1.printStackTrace(); System.out.println(数据库连接断开时异常!); } } } /** * 存盘的一行数据 * 如果为true,表示关键字已经存在 */ public boolean isKeyExist(VectorString v) { for (int i = 0; i variabl2193; i++) { int j = 0; for (; j variabl1055.length; j++) { if (v.get(variabl1055 ) != variabl2197 ] !v.get(variabl1055 ).trim().equals(variabl2197 ].trim())) break; } if (j = variabl1055.length) { return true; } } return false; } /** * @param lastRow 要更新的行号 * @return 如果除lastRow有重复的关键字,则返回false */ public boolean isKeyExist(VectorString v, int lastRow) { for (int i = 0; i variabl2193; i++) { if (i == lastRow) continue; int j = 0; for (; j variabl1055.length; j++) { if (v.get(variabl1055 ) != variabl2197 ] !v.get(variabl1055 ).trim().equals(variabl2197 ].trim())) break; } if (j = variabl1055.length) { return true; } } return false; } /** * @param v 改变后的行内容 * @param lastRow 要更新的行号 * @throws SQLException */ public void updateSQL(VectorString v, int lastRow) throws SQLException { String preSQL = update + variabl2603 + set ; String rearSQL = where ; String strSQL = ; for (int i = 0, flag = 0; i variabl2069.length; i++) { if (i != variabl2069.length - 1) { if( v.get(i)==null || v.get(i).length()=0) { preSQL += variabl2069 + =NULL,; } else { preSQL += variabl2069 + =' + v.get(i) + ',; } for (int j = 0; j variabl1055.length flag variabl1055.length; j++) { if (variabl1055 == i) { flag++; if (j != variabl1055.length - 1) rearSQL += variabl2069 + =' + variabl2197 + ' AND ; else rearSQL += variabl2069 + =' + variabl2197 + '; break; } } } else { if( v.get(i)==null || v.get(i).length()=0) { preSQL += variabl2069 + =NULL; } else { preSQL += variabl2069 + =' + v.get(i) + ' ; } } } strSQL = preSQL + rearSQL; updateExecute(strSQL); } private void updateExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } /** * @param v 将要存盘的一行数据 * @throws SQLException 存盘时候发生异常 */ public void insertSQL(VectorString v) throws SQLException { String rearSQL = values (; String preSQL = insert into + variabl2603 + (; String strSQL = ; for (int i = 0; i variabl2069.length; i++) { if (i != variabl2069.length - 1) { preSQL += variabl2069 + ,; if( v.get(i)==null || v.get(i).length()=0) { rearSQL +=NULL,; } else { rearSQL += ' + v.get(i) + ',; } } else { preSQL += variabl2069 + ); if( v.get(i)==null || v.get(i).length()=0) { rearSQL +=NULL); } else { rearSQL += ' + v.get(i) + '); } } } strSQL = preSQL + rearSQL; insertExecute(strSQL); } private void insertExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } private void deleteSQL(String ] + =' + array + ' AND ; } else { rearSQL += variabl2069 ] + =' + array + '; } } strSQL = preSQL + rearSQL; deleteExecute(strSQL); } private void deleteExecute(String strSQL) throws SQLException { sta = con.createStatement(); sta.executeUpdate(strSQL); } } 30.源码30,部件程序,数据批录入、批修改、批删除表格式数据维护。 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.util.HashSet; import java.util.Vector; import java.io.*; /** * 程序文件名:tableTenance5.java * 作者:齐赛 * 用途:以表格为界面作数据批录入、批修改、批删除使用。 * 完成日期:2013年2月20日 * 要求提供的参数:数据“表名”、“关键字段名”、 * 可选参数“要求字段号表”、“要求按钮号表”。 * 操作方法与注意事项:以上所有参数均由菜单传入。 * 关键字段名为识别与区分记录的主要标志,不允许重复,不允许为空,可以是单一字段,也可以是多个字段,如果是多字段,以英文逗号分隔。 * 要求字段号表:所操作数据可以是表的全部字段,也可以只涉及部分字段。如果选择全部字段,初始值设为; * 否则写入所有将涉及的字段在表中的顺序后,号与号之间以英文逗号分隔。 * 本部件预设的按钮控件共5个,序号及按钮名:1添加空记录、2本条记录存盘、3全部数据存盘、4删除、5退出 * 在入口处通过“要求按钮号表”选择按钮以实现所需要的功能。 要求按钮号表:如果做录入程序用,一般选择:“1,3,5”(添加空记录、全部数据存盘、退出), * 或1,2,5”(添加空记录、本条记录存盘、退出)。操作时每点击一次 * “添加空记录”按钮,将在表中增加一空行,可以将欲添加的数据填入表内。之后需要按本条记录存盘按钮,将新记录填入表内。 * 也可以继续点击一次“添加空记录”按钮,继续添加下一列及之后记录或修改表格中已经有的数据, * 只到全部数据加入到表格中或全部完成修改后后,最后按全部数据存盘按钮,将所有数据存入数据库。 * 如果做修改程序用,一般选择:“2,5”(本条记录存盘、退出)或3,5”(全部数据存盘、退出)。 * 如果要修改表中数据,要双击表格中数据栏,之后修改表格中数据,可以修改完一条后按本条记录存盘后保存修改结果。 * 也可以逐一修改要修改的数据,最后按“全部数据存盘”按钮,将所有修改数据存入数据库。 * 如果做删除程序用,选择:“4,5”(删除当前记录、退出”。操作时首先用鼠标点击表格中要删除的记录,之后按删除按钮,完成删除。 * 注意本程序适用于由基本数据类型构成的数据表,适用数据类型包括各类整型、各浮点类型、各char数据类型、各text数据类型。 * 本程序新加特点:提供各字段共用列表框,可以利用鼠标选择历史数据录入。 * 全部数据存盘采用修改方式完成,不事先删除全表数据, 更加安全且有利于共享。 * 如果某字段有代码表,列表框中列入内容为代码表中值,否则为历史数据,供鼠标点击录入。 * 如果为某字段设计代码表,要求再当前数据库中建代码表,其名字为字段名加“代码表”,其中字段名,一个与字段名相同,另一个为 * 字段名加“代码”或字段名中去掉“代码”二字。例如,关于性别,设计用0表示男,1表示女 * 那么,设计“性别代码表”,其中有“性别”、“性别代码”二个字段,其中二条记录:男 0;女 1。 * 在数据表中可以有字段“性别代码”,也可以有“性别”,如果前者,在列表框中显示0 1;录入保存的是性别代码。 * 如果数据表中字段名为性别,那么,列表框中显示男 女,录入保存的也是性别内容。 * 操作时特别注意:当修改或填入某数据后不按回车,也不用鼠标点本行的另一字段,直接按二个存盘按钮,新修改或填入的那个字段数据将丢失。 * 也就是说,最后输入一个数据后,要先按回车,再按存盘按钮。 */ public class tableTenance5 extends JFrame implements ItemListener { private static JTable table02; static String variabl1275 = main1.variabl1275; static Connection con; static String variabl1091 = main1.variabl1091; static String url; static String variabl2603 ; static String variabl1873=; static String variabl2517; static String variabl2411; static String variabl1169; static int variabl1119; static int variabl1853, variabl18531; static String variabl2197; static String variabl1701; static String variabl1507; static String variabl1287; static String variabl1633=; static String s1 = , s2 = , s3 = ; static DefaultTableModel tableModel; static int b = 0, c = 0; static String variabl2345; private static String variabl1805=; private static String variabl1213; static int variabl2677=0,variabl2851=0; static void means(String parameter variabl240501={ 添加空记录,删除,当前行存盘,全部表存盘,退出}; variabl2405=new String ; variabl2851=0; for (int i0=0;i0variabl240501.length;i0++) variabl2405 = variabl240501 ; if (parameter .length()0){ variabl1187=parameter ; variabl1187=variabl1187.replaceAll(;,;); variabl1187=variabl1187.replaceAll(。,;); variabl1187=variabl1187.replaceAll(:,;); variabl1187=variabl1187.replaceAll(:,;); if (variabl1187.indexOf(;)0){ String s601 .indexOf(;)0){ String s602 .split(;); variabl2405 ))]=s602 ; variabl1187=variabl1187+,+s602 ; variabl2851++; } else { variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { String s601 ; else variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { variabl1187=; for (int i1=0;i1variabl2405.length;i1++){ if (i1==0) variabl1187=variabl1187+i1; else variabl1187=variabl1187+,+i1; variabl2851++; } } variabl1187=,+variabl1187+,; variabl2483=main1.variabl2483; variabl2503=main1.variabl2503; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ; m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } variabl2483=m1 ; variabl2503=m2 ; } }catch(Exception e2){} variabl2603=parameter ; String .split(,); for (int i=0;is8.length;i++) if (s8 .lastIndexOf(variabl2603+字典表)=0) variabl1873=s8 ; if (parameter .length()=0){ JOptionPane.showMessageDialog( null, 缺少关键字,请说明关键字字段后再运行。); return; } variabl1525=parameter .split(,); variabl1153=parameter ; variabl1805=parameter ; variabl1287=new int ; variabl1213=parameter ; final tableTenance5 frame = new tableTenance5(); frame.setTitle(表格式数据维护程序 作者:齐赛); frame.setBounds(10, 10, variabl2483, variabl2503); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setLayout(null); final JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(0, 0, variabl2483 - 200, variabl2503 - 100); frame.getContentPane().add(scrollPane); JLabel jl = new JLabel(字段可选内容 :); jl.setBounds(variabl2483 - 175, 0, 150, 30); list1 = new List(); list1.addItemListener(frame); list1.setBounds(variabl2483 - 175, 30, 150, variabl2503 - 130); frame.getContentPane().add(list1); frame.getContentPane().add(jl); if (variabl1525.length == 0) { JOptionPane.showMessageDialog(null, 缺少关键字的说明,请选择关键字后重新操作); return; } variabl1377 = new String ; variabl1287 = new int ; for (int i = 0; i variabl1525.length; i++) { variabl1377 = ; variabl1287 = 0; } con = main1.getConn(); try { Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String .split(,); for (int i=0;is6.length;i++){ if (variabl1633.length()0) variabl1633=variabl1633+,+s7 )]; else variabl1633=s7 )]; } s1=select +variabl1633+ from +variabl2603; } else s1=select * from +variabl2603; ResultSet rs = sta.executeQuery(s1); rs.last(); variabl1853 = rs.getRow(); ResultSetMetaData rsmd = rs.getMetaData(); variabl2651 = rsmd.getColumnCount(); variabl2517 = new String ; variabl1501 = new String ; variabl1489 = new int ; for (int i=0;ivariabl2651;i++){ variabl2517 = rsmd.getColumnName(i + 1); variabl1501 = rsmd.getColumnTypeName(i + 1); variabl1489 = rsmd.getColumnDisplaySize(b + 1); if (variabl1489 4) variabl1489 = 4; if (variabl1153.length() 0) { for (int j = 0; j variabl1525.length; j++) { if ((,+variabl1153+,).lastIndexOf(,+i+,)0){ variabl1153=variabl1153+,+(i); } } } for (int j = 0; j variabl1525.length; j++) { if (variabl1525 .trim().equals(variabl2517 .trim())) { variabl1287 = i; break; } } } variabl2345 = new int ; for (int i=0;ivariabl2651;i++) variabl2345 =i; variabl2113 = variabl2651; variabl2411 = new String ; variabl1913 = new String ; variabl1169 = new String ; variabl1119 = new int ; variabl2197 = new String ; variabl1507 = new String ; b = 0; while (b variabl2113) { variabl1913 = variabl2517 ]; variabl1169 = variabl1501 ]; variabl1119 = variabl1489 ]; variabl2411 = variabl2517 ]; variabl1507 = ; b++; } rs.absolute(1); c = 0; b = 0; while (c variabl1853) { rs.absolute(c + 1); while (b variabl2113) { variabl2197 = rs.getString(variabl2345 + 1); b++; } c++; b = 0; } rs.close(); sta.close(); con.close(); con = null; } catch (Exception e) { e.printStackTrace(); } if (variabl1873.length() 0) { con = main1.getConn(); try { Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1 = select * from + variabl1873; ResultSet rs = sta.executeQuery(s1); while (rs.next()) { String variabl2153 = rs.getString(1); String variabl1755 = rs.getString(2); b = 0; while (b variabl2113) { if (variabl2411 .compareTo(variabl2153) == 0) { variabl2411 = variabl1755; break; } b++; } } rs.close(); sta.close(); } catch (Exception e1) { e1.printStackTrace(); } } tableModel = new DefaultTableModel(variabl2197, variabl2411); table02 = new JTable(tableModel); table02.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table02.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); table02.addMouseListener(new MouseAdapter() { int flag = -1; public void mouseClicked(MouseEvent e) { currentRow = table02.getSelectedRow(); currentColumn = table02.getSelectedColumn(); if (flag != currentColumn) { list1.clear(); if (variabl1213.indexOf(variabl1913 ) = 0 || variabl1213.indexOf(variabl2411 ) = 0) { try { con=main1.getConn(); Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1 = select * from + variabl1913 +代码表; ResultSet rs = sta.executeQuery(s1); while(rs.next()) { String variabl2163=rs.getString(1); list1.add(variabl2163); } rs.close(); sta.close(); con.close(); } catch (Exception e2) { e2.printStackTrace(); } } else { HashSetString set = new HashSetString(); for (int i = 0; i variabl1853; i++) { set.add((String) tableModel.getValueAt(i, currentColumn)); } for (String str : set) list1.add(str); } } flag = currentColumn; } }); for (int i = 0; i variabl2113; i++) { TableColumn tc = table02.getColumn(variabl2411 ); JTableHeader header = table02.getTableHeader(); tc.setPreferredWidth(variabl1119 * 8); tc.setMaxWidth(variabl1119 * 8); tc.sizeWidthToFit(); } scrollPane.setViewportView(table02); table02.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int selectedRow = table02.getSelectedRow(); } }); int j = 0; variabl1187 = , + variabl1187 + ,; if (variabl1187.length() 3) j = 5; else for (int i = 0; i 5; i++) if (variabl1187.lastIndexOf(, + i + ,) = 0) j = j + 1; int variabl2339 = (variabl2483 - 20)/variabl2851 ; int variabl1423 = 5; variabl2641 = new JButton(variabl2405 ); variabl2641.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableModel.addRow(variabl1507); variabl1853 = variabl1853 + 1; } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,0,) = 0)) { variabl2641.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl2641); variabl1423 = variabl1423 + variabl2339; } final JButton variabl2633 = new JButton(variabl2405 ); variabl2633.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); if (selectedRow != -1) { s1 = ; for (int i = 0; i variabl1525.length; i++) { if (tableModel.getValueAt(selectedRow, variabl1287 ) == null) { JOptionPane.showMessageDialog(null, 关键字不能缺少!); return; } variabl1377 = tableModel.getValueAt(selectedRow, variabl1287 ) .toString(); if (main1.variabl1545.lastIndexOf(variabl1501 ]) 0) s1 = s1 + variabl1525 + = + variabl1377 ; else s1 = s1 + variabl1525 + =' + variabl1377 + ' ; if (i variabl1525.length - 1) s1 = s1 + and ; } s1 = delete from + variabl2603 + where + s1; try { con = main1.getConn(); pstmt = con.prepareStatement(s1); pstmt.execute(); tableModel.removeRow(selectedRow); variabl1853 = variabl1853 - 1; pstmt.close(); con.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,1,) = 0)) { variabl2633.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl2633); variabl1423 = variabl1423 + variabl2339; } final JButton variabl1855 = new JButton(variabl2405 ); variabl1855.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { con = main1.getConn(); try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (itemCount(currentRow) = 0) { if (variabl18531 == 0) s1 = insertNewItem(currentRow); else { s1 = updateItem(currentRow); } pstmt = con.prepareStatement(s1); pstmt.execute(); sta.close(); con.close(); } else { JOptionPane.showMessageDialog(null, 关键字为空,请重新输入!); return; } } catch (Exception e2) { e2.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,2,) = 0)) { variabl1855.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl1855); variabl1423 = variabl1423 + variabl2339; } final JButton variabl1619 = new JButton(variabl2405 ); variabl1619.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { con = main1.getConn(); try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch (SQLException e2) { e2.printStackTrace(); } for (int i = 0; i variabl1853; i++) { if (itemCount(i) = 0) { if (variabl18531 == 0) s1 = insertNewItem(i); else s1 = updateItem(i); try { pstmt = con.prepareStatement(s1); pstmt.execute(); } catch (SQLException e1) { e1.printStackTrace(); } } else { JOptionPane.showMessageDialog(null, 关键字有的为空,请检查!); return; } } try { sta.close(); con.close(); pstmt.close(); } catch (SQLException e1) { e1.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,3,) = 0)) { variabl1619.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl1619); variabl1423 = variabl1423 + variabl2339; } final JButton variabl2599 = new JButton(variabl2405 ); variabl2599.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.setVisible(false); frame.dispose(); } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,4,) = 0)) { variabl2599.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl2599); variabl1423 = variabl1423 + variabl2339; } frame.setVisible(true); } static String insertNewItem(int row) { String temp11 = 0 + ,; String temp12 = 0; String temp21 = ' + + ' + ,; String temp22 = ' + + '; String ss = new String(); variabl1425 = new String ; for (int i = 0; i variabl2651; i++) { if (main1.variabl1545.indexOf(variabl1501 ) = 0) { variabl1425 = temp11; if (i == variabl2651 - 1) variabl1425 = temp12; } else { variabl1425 = temp21; if (i == variabl2651 - 1) variabl1425 = temp22; } } for (int i = 0; i variabl2113; i++) { String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); if (variabl1425 ].trim().equals(temp21.trim())) variabl1425 ] = ' + temp + ' + ,; else if (variabl1425 ].trim().equals(temp11.trim()) temp != ) variabl1425 ] = temp + ,; else if (variabl1425 ].trim().equals(temp22.trim())) variabl1425 ] = ' + temp + '; else if (variabl1425 ].trim().equals(temp12.trim()) temp != ) variabl1425 ] = temp; } if (variabl1633.length()0) ss=insert into +variabl2603+(+variabl1633+) values (; else ss=insert into +variabl2603+ values (; for (int i = 0; i variabl2651; i++) { ss += variabl1425 ; } ss += ); return ss; } static String updateItem(int row) { String ss = new String(); variabl1425 = new String ; for (int i = 0; i variabl2113; i++) { int k; for (k = 0; k variabl1287.length; k++) { if (i == variabl1287 ) break; } if (k variabl1287.length) continue; String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); if (main1.variabl1545.indexOf(variabl1501 ) = 0) { ss += variabl1913 + = + temp; } else { ss += variabl1913 + =' + temp + '; } if (i variabl2113 - 1) ss += ,; } ss = update + variabl2603 + set + ss + s3; return ss; } static int itemCount(int row) { variabl2677=variabl2677+1; s1 = ; int j = 0; for (int i = 0; i variabl1525.length; i++) { String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); variabl1377 = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); if (variabl1377 .compareTo( ) 0){ j = -1; break; } if (main1.variabl1545.lastIndexOf(variabl1501 ]) 0) s1 = s1 + variabl1525 + = + variabl1377 ; else s1 = s1 + variabl1525 + =' + variabl1377 + ' ; if (i variabl1525.length - 1) s1 = s1 + and ; } if (j = 0) { s3 = where + s1; s1 = select * from + variabl2603 + where + s1; ResultSet rs; try { con = main1.getConn(); sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); rs = sta.executeQuery(s1); rs.last(); variabl18531 = rs.getRow(); s1 = ; rs.close(); sta.close(); } catch (SQLException e) { e.printStackTrace(); } return variabl18531; } else return -1; } public void itemStateChanged(ItemEvent e) { String item = list1.getSelectedItem(); tableModel.setValueAt(item, currentRow, currentColumn); } } 31.源码31,部件程序,数据批录入、批修改、批删除表格式数据维护,可以使用代码表、字典表。 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.util.HashSet; import java.util.Vector; import java.io.*; /** * 程序文件名:tableTenance6.java * 作者:齐赛 * 用途:以表格为界面作数据录入、修改数据库中数据、删除数据库中数据等使用。 * 完成日期:2013年2月20日 * 被调用语句:tableTenance6..means(parameter)。 * 要求提供的参数:数据“表名”、字段序号、“关键字段名”、 * 可选参数:“要求字段号表”、“要求按钮号表”、“字典表名”、所涉及的“代码表名”。 操作方法与注意事项:以上所有参数均为字符串数据类型的全局变量。 * 关键字段名为识别与区分记录的主要标志,不允许重复,不允许为空,可以是单一字段,也可以是多个字段,如果是多字段,以英文逗号分隔。 * 要求字段号表:所操作数据可以是表的全部字段,也可以只涉及部分字段。如果选择全部字段,初始值设为; * 否则写入所有将涉及的字段在表中的顺序后,号与号之间以英文逗号分隔。 * 本部件预设的按钮控件共5个,序号及按钮名:1添加空记录、2本条记录存盘、3全部数据存盘、4删除、5退出 * 通过“要求按钮号表”选择按钮以实现所需要的功能。 要求按钮号表: * 如果做录入程序用,一般选择:“1,3,5”变色选择添加空记录、全部数据存盘、退出等按钮 * 如果选“1,2,5”表示选择添加空记录、本条记录存盘、退出等按钮。 * 操作时每点击一次“添加空记录”按钮,将在表中增加一空行,可以将欲添加的数据填入表内。 * 之后需要按“本条记录存盘”按钮,将新记录填入表内。 * 也可以继续点击一次“添加空记录”按钮,继续添加下一列及之后记录或修改表格中已经有的数据, * 直到全部数据加入到表格中或全部完成修改后后,最后按全部数据存盘按钮,将所有数据存入数据库。 * 如果做修改程序用,一般选择:“2,5”(本条记录存盘、退出)或3,5”(全部数据存盘、退出)。 * 如果要修改表中数据,要双击表格中数据栏,之后修改表格中数据,可以修改完一条后按本条记录存盘后保存修改结果。 * 也可以逐一修改要修改的数据,最后按“全部数据存盘”按钮,将所有修改数据存入数据库。 * 如果做删除程序用,选择:“4,5”(删除当前记录、退出”。操作时首先用鼠标点击表格中要删除的记录,之后按删除按钮,完成删除。 * 注意本程序适用于由基本数据类型构成的数据表,适用数据类型包括各类整型、各浮点类型、 * 各char数据类型、各text数据类型。 * 本程序新加特点:提供各字段共用列表框,可以利用鼠标选择历史数据录入。 * 全部数据存盘采用修改方式完成,不事先删除全表数据, 更加安全且有利于共享。 * 如果某字段有代码表,列表框中列入内容为代码表中值。 * 否则为历史数据,供鼠标点击录入。 * 如果为某字段设计代码表,要求再当前数据库中建代码表,其名字为字段名加“代码表”, * 其中字段名,一个与字段名相同,另一个为字段名加“代码”或字段名中去掉“代码”二字。 * 例如,关于性别,设计用0表示男,1表示女 * 那么,设计“性别代码表”,其中有“性别”、“性别代码”二个字段,其中二条记录:男 0;女 1。 * 在数据表中可以有字段“性别代码”,也可以有“性别”,如果前者,在列表框中显示0 1; * 录入保存的是性别代码。 * 如果数据表中字段名为性别,那么,列表框中显示男 女,录入保存的也是性别内容。 * 操作时特别注意:当修改或填入某数据后不按回车,也不用鼠标点本行的另一字段, * 直接按二个存盘按钮,新修改或填入的那个字段数据将丢失。 * 也就是说,最后输入一个数据后,要先按回车,再按存盘按钮。 */ public class tableTenance6 extends JFrame implements ItemListener { private static JTable table02; static Connection con; static String url; static String variabl2603; static String variabl1873; static String variabl2517; static String variabl2411; static String variabl1169; static int variabl1119; static int variabl1853, variabl18531; static String variabl2197; static String variabl1701; static String variabl1507; static String variabl1287; static String s1 = , s2 = , s3 = ; static DefaultTableModel tableModel; static int b = 0, c = 0; static String variabl2345; static String variabl1175=; static int variabl2677=0,variabl2851=0; public static void means(String ; variabl1153 = parameter ; variabl1525 = parameter .split(,); String ; variabl2851 = 0; for (int i0 = 0; i0 variabl240501.length; i0++) variabl2405 = variabl240501 ; if (parameter .length() 0) { variabl1187 = parameter ; variabl1187 = variabl1187.replaceAll(;, ;); variabl1187 = variabl1187.replaceAll(。, ;); variabl1187 = variabl1187.replaceAll(:, ;); variabl1187 = variabl1187.replaceAll(:, ;); if (variabl1187.indexOf(;) 0) { String s601 .indexOf(;) 0) { String s602 .split(;); variabl2405 ))] = s602 ; variabl1187 = variabl1187 + , + s602 ; variabl2851++; } else { variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { String s601 ; else variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { variabl1187 = ; for (int i1 = 0; i1 variabl2405.length; i1++) { if (i1 == 0) variabl1187 = variabl1187 + i1; else variabl1187 = variabl1187 + , + i1; variabl2851++; } } variabl1187 = , + variabl1187 + ,; variabl2483 = main1.variabl2483; variabl2503 = main1.variabl2503; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter ); m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } final String variabl2429 = parameter ; final tableTenance6 frame = new tableTenance6(); frame.setTitle(表格式数据维护程序 作者:齐赛); frame.setBounds(10, 10, variabl2483, variabl2503); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setLayout(null); final JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(0, 0, variabl2483 - 200, variabl2503 - 100); frame.getContentPane().add(scrollPane); JLabel jl = new JLabel(字段可选内容 :); jl.setBounds(variabl2483 - 175, 0, 150, 30); list1 = new List(); list1.addItemListener(frame); list1.setBounds(variabl2483 - 175, 30, 150, variabl2503 - 130); frame.getContentPane().add(list1); frame.getContentPane().add(jl); if (variabl1525.length == 0) { JOptionPane.showMessageDialog(null, 缺少关键字的说明,请选择关键字后重新操作); return; } variabl1377 = new String ; variabl1287 = new int ; for (int i = 0; i variabl1525.length; i++) { variabl1377 = ; variabl1287 = 0; } con = main1.getConn(); try { Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String .split(,); for (int i = 0; i s6.length; i++) { if (variabl1633.length() 0) variabl1633 = variabl1633 + , + s7 )]; else variabl1633 = s7 )]; } s1 = select + variabl1633 + from + variabl2603; } else s1 = select * from + variabl2603; ResultSet rs = sta.executeQuery(s1); rs.last(); variabl1853 = rs.getRow(); ResultSetMetaData rsmd = rs.getMetaData(); variabl2651 = rsmd.getColumnCount(); variabl2517 = new String ; variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { variabl2517 = rsmd.getColumnName(i + 1); variabl1501 = rsmd.getColumnTypeName(i + 1); variabl1489 = rsmd.getColumnDisplaySize(b + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); else if (variabl1489 50) variabl1489 = 50; if (variabl1153.length() 0) { for (int j = 0; j variabl1525.length; j++) { if ((,+variabl1153+,).lastIndexOf(,+i+,)0){ variabl1153=variabl1153+,+(i); } } } for (int j = 0; j variabl1525.length; j++) { if (variabl1525 .trim().equals(variabl2517 .trim())) { variabl1287 = i; break; } } } variabl1153 = , + variabl1153 + ,; variabl2345 = new int ; int b0 = 0, b = -1; while (b0 variabl2651) { if ((variabl1153.length() 3) || (variabl1153.lastIndexOf(, + (b0 + 1) + ,) = 0)) { b = b + 1; variabl2345 = b0; } b0++; } variabl2113 = b + 1; variabl2411 = new String ; variabl1913 = new String ; variabl1169 = new String ; variabl1119 = new int ; variabl2197 = new String ; variabl1507 = new String ; b = 0; while (b variabl2113) { variabl1913 = variabl2517 ]; variabl1169 = variabl1501 ]; variabl1119 = variabl1489 ]; variabl2411 = variabl2517 ]; variabl1507 = ; b++; } rs.absolute(1); c = 0; b = 0; while (c variabl1853) { rs.absolute(c + 1); while (b variabl2113) { variabl2197 = rs.getString(variabl2345 + 1); b++; } c++; b = 0; } rs.close(); sta.close(); con.close(); con = null; } catch (Exception e) { e.printStackTrace(); } variabl1873 = ; String .lastIndexOf(variabl2603 + 字典表) = 0) variabl1873 = t1 ; } if (variabl1873.length() 0) { con = main1.getConn(); try { Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1 = select * from + variabl1873; ResultSet rs = sta.executeQuery(s1); while (rs.next()) { String variabl2153 = rs.getString(1); String variabl1755 = rs.getString(2); b = 0; while (b variabl2113) { if (variabl2411 .compareTo(variabl2153) == 0) { variabl2411 = variabl1755; break; } b++; } } rs.close(); sta.close(); } catch (Exception e1) { e1.printStackTrace(); } } tableModel = new DefaultTableModel(variabl2197, variabl2411); table02 = new JTable(tableModel); table02.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table02.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); table02.addMouseListener(new MouseAdapter() { int flag = -1; public void mouseClicked(MouseEvent e) { currentRow = table02.getSelectedRow(); currentColumn = table02.getSelectedColumn(); if (flag != currentColumn) { list1.clear(); if (variabl2429.lastIndexOf(variabl1913 ) = 0 || variabl2429.lastIndexOf(variabl2411 ) = 0) { try { con = main1.getConn(); Statement sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String s1 = select * from + variabl1913 + 代码表; ResultSet rs = sta.executeQuery(s1); while (rs.next()) { String variabl2163 = rs.getString(1); list1.add(variabl2163); } } catch (Exception e2) { e2.printStackTrace(); } } else { HashSetString set = new HashSetString(); for (int i = 0; i variabl1853; i++) { set.add((String) tableModel.getValueAt(i, currentColumn)); } for (String str : set) list1.add(str); } } flag = currentColumn; } }); for (int i = 0; i variabl2113; i++) { TableColumn tc = table02.getColumn(variabl2411 ); tc.setPreferredWidth(variabl1119 * 9); tc.sizeWidthToFit(); } scrollPane.setViewportView(table02); table02.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int selectedRow = table02.getSelectedRow(); variabl1175 = ; } }); table02.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent evt) { variabl1175 = variabl1175 + evt.getKeyChar(); } }); int j = 0; variabl1187 = , + variabl1187 + ,; if (variabl1187.length() 3) j = 5; else for (int i = 0; i 5; i++) if (variabl1187.lastIndexOf(, + i + ,) = 0) j = j + 1; int variabl2339 = (variabl2483 - 20) / variabl2851; int variabl1423 = 5; variabl2641 = new JButton(variabl2405 ); variabl2641.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableModel.addRow(variabl1507); variabl1853 = variabl1853 + 1; } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,0,) = 0)) { variabl2641.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl2641); variabl1423 = variabl1423 + variabl2339; } final JButton variabl2633 = new JButton(variabl2405 ); variabl2633.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table02.getSelectedRow(); if (selectedRow != -1) { s1 = ; for (int i = 0; i variabl1525.length; i++) { variabl1377 = (String) tableModel.getValueAt(selectedRow, variabl1287 ); if (main1.variabl1545.lastIndexOf(variabl1501 ]) 0) s1 = s1 + variabl1525 + = + variabl1377 ; else s1 = s1 + variabl1525 + =' + variabl1377 + ' ; if (i variabl1525.length - 1) s1 = s1 + and ; } s1 = delete from + variabl2603 + where + s1; try { con = main1.getConn(); pstmt = con.prepareStatement(s1); pstmt.execute(); tableModel.removeRow(selectedRow); variabl1853 = variabl1853 - 1; con.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,1,) = 0)) { variabl2633.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl2633); variabl1423 = variabl1423 + variabl2339; } final JButton variabl1855 = new JButton(variabl2405 ); variabl1855.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { con = main1.getConn(); try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (itemCount(currentRow) = 0) { if (variabl18531 == 0) s1 = insertNewItem(currentRow); else { s1 = updateItem(currentRow); } pstmt = con.prepareStatement(s1); pstmt.execute(); sta.close(); con.close(); } else { JOptionPane.showMessageDialog(null, 关键字为空,请重新输入!); return; } } catch (Exception e2) { e2.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,2,) = 0)) { variabl1855.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl1855); variabl1423 = variabl1423 + variabl2339; } final JButton variabl1619 = new JButton(variabl2405 ); variabl1619.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { con = main1.getConn(); try { sta = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch (SQLException e2) { e2.printStackTrace(); } for (int i = 0; i variabl1853; i++) { if (itemCount(i) = 0) { if (variabl18531 == 0) s1 = insertNewItem(i); else s1 = updateItem(i); try { pstmt = con.prepareStatement(s1); pstmt.execute(); } catch (SQLException e1) { e1.printStackTrace(); } } else { JOptionPane.showMessageDialog(null, 关键字有的为空,请检查!); return; } } try { sta.close(); con.close(); pstmt.close(); } catch (SQLException e1) { e1.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,3,) = 0)) { variabl1619.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl1619); variabl1423 = variabl1423 + variabl2339; } final JButton variabl2599 = new JButton(variabl2405 ); variabl2599.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.setVisible(false); frame.dispose(); } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,4,) = 0)) { variabl2599.setBounds(variabl1423, variabl2503 - 80, variabl2339 - 10, 20); frame.getContentPane().add(variabl2599); variabl1423 = variabl1423 + variabl2339; } frame.setVisible(true); } static String insertNewItem(int row) { if (table02.getValueAt(row,currentColumn)==null) tableModel.setValueAt(variabl1175, row, currentColumn); else if (! table02.getValueAt(row,currentColumn).toString().trim().equals(variabl1175.trim())) tableModel.setValueAt(table02.getValueAt(row,currentColumn)+variabl1175, row, currentColumn); table02.setModel(tableModel); String temp11 = 0 + ,; String temp12 = 0; String temp21 = ' + + ' + ,; String temp22 = ' + + '; String ss = new String(); variabl1425 = new String ; for (int i = 0; i variabl2651; i++) { if (main1.variabl1545.indexOf(variabl1501 ) = 0) { variabl1425 = temp11; if (i == variabl2651 - 1) variabl1425 = temp12; } else { variabl1425 = temp21; if (i == variabl2651 - 1) variabl1425 = temp22; } } for (int i = 0; i variabl2113; i++) { String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); if (variabl1425 ].trim().equals(temp21.trim())) variabl1425 ] = ' + temp + ' + ,; else if (variabl1425 ].trim().equals(temp11.trim()) temp != ) variabl1425 ] = temp + ,; else if (variabl1425 ].trim().equals(temp22.trim())) variabl1425 ] = ' + temp + '; else if (variabl1425 ].trim().equals(temp12.trim()) temp != ) variabl1425 ] = temp; } if (variabl1633.length()0) ss=insert into +variabl2603+(+variabl1633+) values (; else ss=insert into +variabl2603+ values (; for (int i = 0; i variabl2651; i++) { ss += variabl1425 ; } ss += ); return ss; } static String updateItem(int row) { String ss = new String(); variabl1425 = new String ; if (table02.getValueAt(row,currentColumn)==null) tableModel.setValueAt(variabl1175, row, currentColumn); else if (! table02.getValueAt(row,currentColumn).toString().trim().equals(variabl1175.trim())) tableModel.setValueAt(table02.getValueAt(row,currentColumn)+variabl1175, row, currentColumn); table02.setModel(tableModel); for (int i = 0; i variabl2113; i++) { int k; for (k = 0; k variabl1287.length; k++) { if (i == variabl1287 ) break; } if (k variabl1287.length) continue; String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); if (main1.variabl1545.indexOf(variabl1501 ) = 0) { ss += variabl1913 + = + temp; } else { ss += variabl1913 + =' + temp + '; } if (i variabl2113 - 1) ss += ,; } ss = update + variabl2603 + set + ss + s3; return ss; } static int itemCount(int row) { variabl2677=variabl2677+1; s1 = ; int j = 0; for (int i = 0; i variabl1525.length; i++) { String temp; temp = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); variabl1377 = tableModel.getValueAt(row, i) == null ? : tableModel .getValueAt(row, i).toString(); if (variabl1377 .compareTo( ) 0){ j = -1; break; } if (main1.variabl1545.lastIndexOf(variabl1501 ]) 0) s1 = s1 + variabl1525 + = + variabl1377 ; else s1 = s1 + variabl1525 + =' + variabl1377 + ' ; if (i variabl1525.length - 1) s1 = s1 + and ; } if (j = 0) { s3 = where + s1; s1 = select * from + variabl2603 + where + s1; ResultSet rs; try { rs = sta.executeQuery(s1); rs.last(); variabl18531 = rs.getRow(); s1 = ; rs.close(); } catch (SQLException e) { e.printStackTrace(); } return variabl18531; } else return -1; } public void itemStateChanged(ItemEvent e) { String item = list1.getSelectedItem(); tableModel.setValueAt(item, currentRow, currentColumn); } }
个人分类: 生活点滴|1531 次阅读|0 个评论
管理信息系统软件生产线源码24-26
求新 2018-5-31 00:37
版本1 24.源码24,部件程序,对数据表某一个文本类字段检索查询 /** * 程序文件名:dataQuery15.java * 作者:程学先 * 完成时间:2013年11月17日 * 部件功能:对数据表某一个文本类字段检索查询。 * 被调用语句:datadataQuery15.means(parameter); * 必须提供的参数:“表名”(parameter ), * 如果欲打印,必须提供“打印格式文件名”(parameter ) * 打印格式文件是利用printFormat1.java生成的格式文件。 * 程序中设计了一个下拉组合框和一个文本框,组合框中列出供用户选择的字段名; * 文本框供操作者输入检索字,之后按下“查询按钮”便可组织查询。 * 另外提供表格式显示、打印预览、打印、导出等按钮。 * 导出通过调用dataTransfer0.java实现,需要给出按钮号表()(借按钮号表2传入)。 * 检索字的格式: * 检索字区分大、小写。 * 空格、|、-、( )、#、*均为特殊意义字符(注意均应为英文字符), * 字符两边不要有空格。 * 空格表示要求两边内容均要包含在内。 * “|”表示要求两边内容至少有一个包含在内 * “-”表示后边内容不包含在内。 * “( )”表示其内部分为整体内容,全要满足。 * “#”表示在查找的二个词间可能有若干个任意的字符, * 任意字符的个数不多于#号的个数。 * “*”表示在查找的二个词间可能有任意多个任意字符。 */ import java.awt.*; import java.awt.event.*; import java.awt.print.PrinterException; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.io.*; public class dataQuery15 extends JFrame { static dataQuery15 frame = new dataQuery15(); static String 表名 = ; static Choice choice; static JTextField aTextField; static JButton 浏览显示, 第一条, 下一条, 上一条, 最后一条, 打印预览, 打印, 导出, 退出; static String s1 = , s2 = , s3 = ; static ResultSet rs; static int b = 0, c = 0; static int 列数; static int 字段序号 = 0; static String 列数据类型; static int 按钮集 = null; static String 要求按钮号表; static int 按钮数 = 0, 按钮宽 = 0; public static void means(String = ; 关系表 = 大于; 关系表 = ; 关系表 = 小于; 关系表 = = ; 关系表 = 等于; 关系表 = = ; 关系表 = 大于等于; 关系表 = = ; 关系表 = 小于等于; 关系表 = ; 关系表 = 不等于; 关系表 = like ; 关系表 = 包含; 关系表 = not like ; 关系表 = 不包含; String ; 按钮数 = 0; for (int i0 = 0; i0 按钮集01.length; i0++) 按钮集 = 按钮集01 ; if (parameter .length() 0) { 要求按钮号表 = parameter ;// 需要显示的按钮的顺序号 // 将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表 = 要求按钮号表.replaceAll(;, ;); 要求按钮号表 = 要求按钮号表.replaceAll(。, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); if (要求按钮号表.indexOf(;) 0) { // 如果有按钮更名要求 String s601 .indexOf(;) 0) { String s602 .split(;); 按钮集 ))] = s602 ; 要求按钮号表 = 要求按钮号表 + , + s602 ;// 只留号,去更名 按钮数++; } else { 要求按钮号表 = 要求按钮号表 + , + s601 ;// 只留号,原无更名 按钮数++; } } } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表 = 要求按钮号表 + , + s601 ; 按钮数++; } } } else { 要求按钮号表 = ; // 没输入要求按钮号,定全部按钮号 for (int i1 = 0; i1 按钮集.length; i1++) { if (i1 == 0) 要求按钮号表 = 要求按钮号表 + i1; else 要求按钮号表 = 要求按钮号表 + , + i1; 按钮数++; } } 要求按钮号表 = , + 要求按钮号表 + ,; 窗口宽 = main1.窗口宽; 窗口高 = main1.窗口高; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter );// 宽度参数 m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 表名 = parameter ; // 数据表名 打印格式文件名 = parameter ; 字段号表 = parameter ; 字段名表 = parameter ; if (字段名表.lastIndexOf(,) == 字段名表.length() - 1) 字段名表 = 字段名表.substring(0, 字段名表.length() - 1); 按钮号表2 = parameter ; 列名 = 字段名表.split(,); String l1; if (字段号表.length() 0) { l1 = 字段号表.split(,); int ; for (int i = 0; i l1.length; i++) { l2 = Integer.valueOf(l1 ); } 列数 = l1.length; 列名 = new String ; for (int i = 0; i 列数; i++) { 列名 = l3 ]; } } s1 = ; for (int i = 0; i 列数; i++) { s1 = s1 + 列名 + ,; } s1 = s1.substring(0, s1.length() - 1); try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select + s1 + from + 表名; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i = 0; i 列数; i++) { 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; b++; } int 记录条数 = 0; // 记录条数 rs.last(); 记录条数 = rs.getRow(); 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c 记录条数) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 } catch (SQLException e) { JOptionPane.showMessageDialog(null, 读取数据出错!); } frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20, 窗口宽 - 50, 窗口高 - 20); JLabel label = new JLabel(请选择字段名:); label.setBounds(20, 30, 100, 20); panel.add(label); choice = new Choice(); for (int i = 0; i 列数; i++) { if ((main1.文字数据类型.lastIndexOf(列数据类型 )) = 0) choice.add(列名 ); } choice.setBounds(120, 30, 100, 60); panel.add(choice); aTextField = new JTextField(, 10); aTextField.setBounds(220, 30, 330, 20); panel.add(aTextField); final JButton selectButton = new JButton(文本检索); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String 检索内容0 = aTextField.getText(); int n0 = 检索内容0.length(); 检索内容0 = 检索内容0 + ; int i = 0, j = 0, k1 = 0, k2 = 0; s1 = ; s2 = ; String ; String .trim())) 字段序号 = i1; String s4 = , s5 = ; for (i = 0; i n0; i++) { if (检索内容0.substring(i, i + 1).equals(()) { if (k1 2) { s1 = s1 + (; } else if (k1 == 3) { s1 = s1 + and + (; } else if (k1 == 4) { s1 = s1 + or + (; } else if (k1 == 5) { s1 = s1 + and not + (; } s2 = ; k1 = 1; } else if (检索内容0.substring(i, i + 1).equals())) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'); } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'); } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'); } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'); // not } k1 = 2; s2 = ; } else if (检索内容0.substring(i, i + 1).equals(#)) s2 = s2 + -; else if (检索内容0.substring(i, i + 1).equals(*)) s2 = s2 + %; else if ((检索内容0.substring(i, i + 1).equals( ))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %';// not } k1 = 3; s2 = ; } else if ((检索内容0.substring(i, i + 1).equals(|))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %';// not } k1 = 4; s2 = ; } else if ((检索内容0.substring(i, i + 1).equals(-))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 5; s2 = ; } else { s2 = s2 + 检索内容0.substring(i, i + 1); } } if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %';// not } s1 = select + 字段名表 + from + 表名 + where + s1; ResultSet rs = sta3.executeQuery(s1); ResultSetMetaData rsmdt4 = rs.getMetaData(); 列数 = rsmdt4.getColumnCount(); 记录条数 = 0; rs.last(); 记录条数 = rs.getRow(); if (记录条数 1) { JOptionPane.showMessageDialog(null, 未查到满足条件的记录!); return; } 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 记录条数1 = 0; while (c 记录条数) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } 文本域.setText(表格数据 ); rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(550, 30, 90, 20); panel.add(selectButton); JButton 格式提示 = new JButton(格式提示); 格式提示.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFrame frame1 = new JFrame(); frame1.setTitle(查询部件程序); frame1.setBounds(350, 140, 440, 290); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); String s0 = ; char x1 = 10; s0 = 检索字的格式:检索字区分大、小写。 + x1 + 空格、、|、-、( )、$、#、*、\\\\ 均为特殊意义字符 + x1 + (注意均应为英文字符),字符两边不要有空格。 + x1 + 空格或 表示要求两边内容均要包含在内。 + x1 + “|”表示要求两边内容至少有一个包含在内 + x1 + “-”表示后边内容不包含在内。 + x1 + “( )”表示其内部分为整体内容,全要满足。 + x1 + “$”表示其后的词在标题之首,要放在全文检索词最前面。 + x1 + “#”表示在查找的二个词间可能有若干个任意的字符, + x1 + 任意字符的个数不多于#号的个数。 + x1 + “*”表示在查找的二个词间可能有任意多个任意字符。 + x1 + “\\\\”后边应当是上述字符中任意一个, + x1 + 表示在此处该字符不具有上述特殊意义,只是检索内容中的一个字。; JTextArea 文本域1; 文本域1 = new JTextArea(s0, 10, 10);// 建立文本域 JScrollPane 滚动条1 = new JScrollPane(文本域1); 滚动条1.setBounds(10, 10, 415, 235); frame1.add(滚动条1);// 安装滚动条 frame1.setVisible(true); } }); 格式提示.setBounds(640, 30, 90, 20); panel.add(格式提示); 文本域 = new JTextArea(, 10, 10);// 建立文本域 JScrollPane 滚动条 = new JScrollPane(文本域); 滚动条.setBounds(20, 70, 700, 500); panel.add(滚动条);// 安装滚动条 按钮宽 = (窗口宽 - 60) / 按钮数; int 左边距 = 30; 浏览显示 = new JButton(按钮集 ); 浏览显示.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableTenance.tableModel(800, 600, 列名, 列数据宽度, 表格数据, 列数据类型); } }); 浏览显示.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,0,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(浏览显示); } 第一条 = new JButton(按钮集 ); 第一条.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { 记录条数1 = 0; 文本域.setText(表格数据 ); } }); 第一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,1,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(第一条); } 下一条 = new JButton(按钮集 ); 下一条.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (记录条数1 记录条数 - 1) { 记录条数1++; 文本域.setText(表格数据 ); } } }); 下一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,2,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(下一条); } 上一条 = new JButton(按钮集 ); 上一条.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (记录条数1 0) { 记录条数1--; 文本域.setText(表格数据 ); } } }); 上一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,3,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(上一条); } 最后一条 = new JButton(按钮集 ); 最后一条.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { 记录条数1 = 记录条数 - 1; 文本域.setText(表格数据 ); } }); 最后一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,4,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(最后一条); } 打印预览 = new JButton(按钮集 ); 打印预览.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (打印格式文件名.trim().length() 0) dataPreview1.printView1(表格数据, 打印格式文件名); else dataPreview0.printView1(列名, 表格数据, 列数据宽度, 表名 + 表格预览); } }); 打印预览.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,5,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(打印预览); } 打印 = new JButton(按钮集 ); 打印.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (打印格式文件名.trim().length() 0) dataPrint1.print1(表格数据, 打印格式文件名); else{ final JTable table = null; final DefaultTableModel model; model = new DefaultTableModel(表格数据, 列名); // 建立表格模型 for (int i = 0; i 列名.length; i++) { TableColumn tc = table.getColumn(列名 );// 返回表格的列对象 JTableHeader header = table.getTableHeader(); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); tc.setPreferredWidth(列数据宽度 * 9); tc.setMaxWidth(列数据宽度 * 9); } try { table.print(); } catch (PrinterException e1) { e1.printStackTrace(); } } } }); 打印.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,6,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(打印); } 导出 = new JButton(按钮集 ); 导出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataTransfer0.Trans(列名, 列数据类型, 列数据宽度, 按钮号表2, 表格数据, 表名); } }); 导出.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,7,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(导出); } 退出 = new JButton(按钮集 ); 退出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); 退出.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,8,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(退出); } frame.getContentPane().add(panel, null); // 安装面板 frame.setVisible(true); // 安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 25.源码25,部件程序,对多数据表中某一个文本类字段检索查询 /** * 程序文件名:dataQuery16.java * 作者:程学先 * 完成时间:2013年11月17日 * 部件功能:对多数据表中某一个文本类字段检索查询,可以应用字典表改变标签内容。 * 被调用语句:datadataQuery16.means(parameter); * 要求提供的参数:“表名”(parameter )。 * 如果欲打印,必须提供“打印格式文件名”(parameter ) * “字段号表”(parameter ),按钮号表2(parameter )。 * 打印格式文件是利用printFormat1.java生成的格式文件。 * 程序中设计了一个下拉组合框和一个文本框,组合框中列出供用户选择的字段名; * 文本框供操作者输入检索字,之后按下“查询按钮”便可组织查询。 * 另外提供表格式显示、打印预览、打印、导出等按钮。 * 导出通过调用dataTransfer0.java实现,需要给出按钮号表()(借按钮号表2传入)。 * 检索字的格式: * 检索字区分大、小写。 * 空格、|、-、( )、#、*均为特殊意义字符(注意均应为英文字符), * 字符两边不要有空格。 * 空格表示要求两边内容均要包含在内。 * “|”表示要求两边内容至少有一个包含在内 * “-”表示后边内容不包含在内。 * “( )”表示其内部分为整体内容,全要满足。 * “#”表示在查找的二个词间可能有若干个任意的字符, * 任意字符的个数不多于#号的个数。 * “*”表示在查找的二个词间可能有任意多个任意字符。 * 只是检索内容中的一个字。 * 为辅助学习SQL语句,设计了一个文本域用来存放生成的SQL语句,操作者可以手工修改该语句, * 之后执行,观察SQL语句设计正确性。注意写语句时要用数据库中定义的字段名,不能用字典表 * 处理之后的名字。 */ import java.awt.*; import java.awt.event.*; import java.awt.print.PrinterException; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.io.*; public class dataQuery16 extends JFrame { static dataQuery16 frame = new dataQuery16(); static String 表名 = ; static String 字典表名; static String 表名表; static Choice choice; static JTextField aTextField; static JButton 浏览显示, 第一条, 下一条, 上一条, 最后一条, 打印预览, 打印, 导出, 退出; static String s1 = , s2 = , s3 = , s4 = ; static ResultSet rs; static int b = 0, c = 0; static int 列数; static int 字段序号 = 0; static String 列名, 列名0; static String 打印格式文件名; static String 字段号表; static String 字段名表; static String 连接条件; static String 字段名字串; static String 列数据类型; static int 按钮集 = null; static String 要求按钮号表; static int 按钮数 = 0, 按钮宽 = 0; public static void means(String = ; 关系表 = 大于; 关系表 = ; 关系表 = 小于; 关系表 = = ; 关系表 = 等于; 关系表 = = ; 关系表 = 大于等于; 关系表 = = ; 关系表 = 小于等于; 关系表 = ; 关系表 = 不等于; 关系表 = like ; 关系表 = 包含; 关系表 = not like ; 关系表 = 不包含; 窗口宽 = 800; 窗口高 = 700; String ; 按钮数 = 0; for (int i0 = 0; i0 按钮集01.length; i0++) 按钮集 = 按钮集01 ; if (parameter .length() 0) { 要求按钮号表 = parameter ;// 需要显示的按钮的顺序号 // 将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表 = 要求按钮号表.replaceAll(;, ;); 要求按钮号表 = 要求按钮号表.replaceAll(。, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); if (要求按钮号表.indexOf(;) 0) { // 如果有按钮更名要求 String s601 .indexOf(;) 0) { String s602 .split(;); 按钮集 ))] = s602 ; 要求按钮号表 = 要求按钮号表 + , + s602 ;// 只留号,去更名 按钮数++; } else { 要求按钮号表 = 要求按钮号表 + , + s601 ;// 只留号,原无更名 按钮数++; } } } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表 = 要求按钮号表 + , + s601 ; 按钮数++; } } } else { 要求按钮号表 = ; // 没输入要求按钮号,定全部按钮号 for (int i1 = 0; i1 按钮集.length; i1++) { if (i1 == 0) 要求按钮号表 = 要求按钮号表 + i1; else 要求按钮号表 = 要求按钮号表 + , + i1; 按钮数++; } } 要求按钮号表 = , + 要求按钮号表 + ,; 窗口宽 = main1.窗口宽; 窗口高 = main1.窗口高; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter );// 宽度参数 m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 表名 = parameter ; // 数据表名 打印格式文件名 = parameter ; 连接条件 = parameter ; 字段名字串 = parameter ; 字段号表 = parameter ; 字段名表 = parameter ; if (字段名表.lastIndexOf(,) == 字段名表.length() - 1) 字段名表 = 字段名表.substring(0, 字段名表.length() - 1); String ; String )]; else 字段名表 = 字段名表 + , + 列名2 )]; } String ; 列名 = 字段名表.split(,); 列名 = 字段名表.split(,); 表名表 = parameter ; String l1; 字典表名 = ; String s11 = 表名; String ; } s4 = s11; 字典表名 = ; String .lastIndexOf(s11 + 字典表) = 0) 字典表名 = t1 ; } s1 = ; for (int i = 0; i 列数; i++) { s1 = s1 + 列名 + ,; } s1 = s1.substring(0, s1.length() - 1); int 列数0 = 0; if (字典表名.length() 0) { try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s2 = select * from + 字典表名; rs = sta3.executeQuery(s2); rs.last(); int kl = rs.getRow(); ResultSetMetaData rsmd = rs.getMetaData(); 列数0 = rsmd.getColumnCount(); 列名0 = new String ; int numberOfColumns = rsmd.getColumnCount(); // 记录数 String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1); // 字段名 s15 = rs.getString(2); // 标签名 列名0 = s14; 列名0 = s15; for (int j = 0; j 列名 .length; j++) { if ((列名 .trim().equals(s14.trim())) || (列名 .indexOf(. + s14) 0)) { 列名 = s15; break; } } } rs.close(); // 关闭查询结果集 con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (连接条件.trim().length() 0) s1 = select + s1 + from + 表名 + where + 连接条件; else s1 = select + s1 + from + 表名; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i = 0; i 列数; i++) { 列名 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 列名 = 列名 ; if (列数0 0) for (int j = 0; j 列名0 .length; j++) { if ((列名0 .trim().equals(列名 )) || (列名0 .indexOf(. + 列名 ) 0)) { 列名 = 列名0 ; break; } } 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; b++; } int 记录条数 = 0; // 记录条数 rs.last(); 记录条数 = rs.getRow(); 表格数据 = new String ; rs.absolute(1); c = 0; b = 0; while (c 记录条数) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 读取数据出错!); } frame.setTitle(查询部件程序 作者:程学先); // 窗口标题 frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20, 窗口宽 - 50, 窗口高 - 20); JLabel label = new JLabel(请选择字段名:); label.setBounds(20, 30, 100, 20); panel.add(label); choice = new Choice(); for (int i = 0; i 列数; i++) { if ((main1.文字数据类型.lastIndexOf(列数据类型 )) = 0) choice.add(列名 ); } choice.setBounds(120, 30, 100, 60); panel.add(choice); aTextField = new JTextField(, 10); aTextField.setBounds(220, 30, 330, 20); panel.add(aTextField); final JButton selectButton = new JButton(文本检索); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn();// 连接数据库 sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String 检索内容0 = aTextField.getText(); int n0 = 检索内容0.length(); 检索内容0 = 检索内容0 + ; int i = 0, j = 0, k1 = 0, k2 = 0; s1 = ; s2 = ; String ; // 字段名 for (int i2 = 0; i2 列名 .length; i2++) { if (列名 .equals(s3)) s3 = 列名 ; } if (字段名表.indexOf(s4 + . + s3) = 0) s3 = s4 + . + s3; String .trim())) 字段序号 = i1; for (i = 0; i n0; i++) { if (检索内容0.substring(i, i + 1).equals(()) { if (k1 2) { s1 = s1 + (; } else if (k1 == 3) { s1 = s1 + and + (; } else if (k1 == 4) { s1 = s1 + or + (; } else if (k1 == 5) { s1 = s1 + and not + (; } s2 = ; k1 = 1; } else if (检索内容0.substring(i, i + 1).equals())) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'); } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'); } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'); } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'); } k1 = 2; s2 = ; } else if (检索内容0.substring(i, i + 1).equals(#)) s2 = s2 + -; else if (检索内容0.substring(i, i + 1).equals(*)) s2 = s2 + %; else if ((检索内容0.substring(i, i + 1).equals( ))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 3; s2 = ; } else if ((检索内容0.substring(i, i + 1).equals(|))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 4; s2 = ; } else if ((检索内容0.substring(i, i + 1).equals(-))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 5; s2 = ; } else { s2 = s2 + 检索内容0.substring(i, i + 1); } } if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } if (连接条件.trim().length() 0) s1 = select + 字段名表 + from + 表名 + where + 连接条件 + and + s1; else s1 = select + 字段名表 + from + 表名 + where + s1; 文本域2.setText(s1); ResultSet rs = sta3.executeQuery(s1); 记录条数 = 0; // 记录条数 rs.last(); 记录条数 = rs.getRow(); if (记录条数 1) { JOptionPane.showMessageDialog(null, 未查到满足条件的记录!); return; } 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 记录条数1 = 0; while (c 记录条数) { rs.absolute(c + 1); while (b s6.length) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } 文本域.setText(表格数据 ); rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(550, 30, 90, 20); panel.add(selectButton); JButton 格式提示 = new JButton(格式提示); 格式提示.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFrame frame1 = new JFrame(); frame1.setTitle(查询部件程序); frame1.setBounds(350, 140, 440, 290); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); String s0 = ; char x1 = 10; s0 = 检索字的格式:检索字区分大、小写。 + x1 + 空格、、|、-、( )、$、#、*、\\\\ 均为特殊意义字符 + x1 + (注意均应为英文字符),字符两边不要有空格。 + x1 + 空格或 表示要求两边内容均要包含在内。 + x1 + “|”表示要求两边内容至少有一个包含在内 + x1 + “-”表示后边内容不包含在内。 + x1 + “( )”表示其内部分为整体内容,全要满足。 + x1 + “$”表示其后的词在标题之首,要放在全文检索词最前面。 + x1 + “#”表示在查找的二个词间可能有若干个任意的字符, + x1 + 任意字符的个数不多于#号的个数。 + x1 + “*”表示在查找的二个词间可能有任意多个任意字符。 + x1 + “\\\\”后边应当是上述字符中任意一个, + x1 + 表示在此处该字符不具有上述特殊意义,只是检索内容中的一个字。; JTextArea 文本域1; 文本域1 = new JTextArea(s0, 10, 10);// 建立文本域 JScrollPane 滚动条1 = new JScrollPane(文本域1); 滚动条1.setBounds(10, 10, 415, 235); frame1.add(滚动条1);// 安装滚动条 frame1.setVisible(true); } }); 格式提示.setBounds(640, 30, 90, 20); panel.add(格式提示); 文本域 = new JTextArea(, 10, 10);// 建立文本域 JScrollPane 滚动条 = new JScrollPane(文本域); 滚动条.setBounds(20, 120, 700, 450); panel.add(滚动条);// 安装滚动条 JLabel label2 = new JLabel(SQL查询语句); label2.setBounds(20, 60, 100, 20); panel.add(label2); 文本域2 = new JTextArea(, 10, 10); 文本域2.setLineWrap(true); JScrollPane 滚动条2 = new JScrollPane(文本域2); 滚动条2.setBounds(120, 60, 490, 50); panel.add(滚动条2);// 安装滚动条 JButton 执行 = new JButton(执行SQL语句); 执行.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = 文本域2.getText(); ResultSet rs = sta3.executeQuery(s1); ResultSetMetaData rsmdt4 = rs.getMetaData(); 列数 = rsmdt4.getColumnCount(); 记录条数 = 0; rs.last(); 记录条数 = rs.getRow(); if (记录条数 1) { JOptionPane.showMessageDialog(null, 未查到满足条件的记录!); return; } String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 记录条数1 = 0; while (c 记录条数) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } 文本域.setText(表格数据 ); rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); 执行.setBounds(615, 60, 120, 20); panel.add(执行); 按钮宽 = (窗口宽 - 60) / 按钮数; int 左边距 = 30; 浏览显示 = new JButton(按钮集01 ); 浏览显示.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableTenance.tableModel(800, 600, 列名 , 列数据宽度, 表格数据, 列数据类型); } }); 浏览显示.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,0,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(浏览显示); } 第一条 = new JButton(按钮集 ); 第一条.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { 记录条数1 = 0; 文本域.setText(表格数据 ); } }); 第一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,1,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(第一条); } 下一条 = new JButton(按钮集 ); 下一条.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (记录条数1 记录条数 - 1) { 记录条数1++; 文本域.setText(表格数据 ); } } }); 下一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,2,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(下一条); } 上一条 = new JButton(按钮集 ); 上一条.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (记录条数1 0) { 记录条数1--; 文本域.setText(表格数据 ); } } }); 上一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,3,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(上一条); } 最后一条 = new JButton(按钮集 ); 最后一条.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { 记录条数1 = 记录条数 - 1; 文本域.setText(表格数据 ); } }); 最后一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,4,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(最后一条); } 打印预览 = new JButton(按钮集 ); 打印预览.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (打印格式文件名.trim().length() 0) dataPreview1.printView1(表格数据, 打印格式文件名); else dataPreview0.printView1(列名 , 表格数据, 列数据宽度, 表名 + 表格预览); } }); 打印预览.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,5,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(打印预览); } 打印 = new JButton(按钮集 ); 打印.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (打印格式文件名.trim().length() 0) dataPrint1.print1(表格数据, 打印格式文件名); else{ final JTable table = null; final DefaultTableModel model; model = new DefaultTableModel(表格数据, 列名 ); // 建立表格模型 for (int i = 0; i 列名 .length; i++) { TableColumn tc = table.getColumn(列名 );// 返回表格的列对象 JTableHeader header = table.getTableHeader(); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); tc.setPreferredWidth(列数据宽度 * 9); tc.setMaxWidth(列数据宽度 * 9); } try { table.print(); } catch (PrinterException e1) { e1.printStackTrace(); } } } }); 打印.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,6,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(打印); } 导出 = new JButton(按钮集 ); 导出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataTransfer0.Trans(列名 , 列数据类型, 列数据宽度, 按钮号表2, 表格数据, 表名); } }); 导出.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,7,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(导出); } 退出 = new JButton(按钮集 ); 退出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); 退出.setBounds(左边距, 窗口高 - 100, 按钮宽, 20); if (要求按钮号表.indexOf(,8,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(退出); } frame.getContentPane().add(panel, null); // 安装面板 frame.setVisible(true); // 安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 26.源码26,公共程序,导出数据到txt文件、Excel文件、Word文件、PDF文件与xml文件公共程序 /** * 程序文件名:dataTransfer0.java * 作者:程学先: * 功能:导出数据到txt文件、Excel文件、Word文件、PDF文件与xml文件公共程序。 * 导出到word与excel有覆盖式与添加式两种。 * 完成日期:2013年1月22日 * 被调用语句:dataTransfer0.Trans(String 表列数据类型1, * int 表格列名; // 表格列名 static String 表格数据; static String 表列数据宽度, 表列小数位数; // 存放当前记录各字段数据宽度的数组 static int 记录条数, 记录条数1 = 0; // 记录条数 static String f01; static String 列名1, String 表列数据宽度1, String 要求按钮号表1, String 表格数据1, String 表名1) { 窗口宽 = 1200; 窗口高 = 700;// 窗口宽、窗口高 记录条数1 = 0; // 记录条数 按钮左边距 = 0; 按钮宽 = 0; 导出表名 = ; 导出文件名 = ; excel导出文件名 = ; word导出文件名 = ; xml导出文件名 = ; s1 = ; s2 = ; s3 = ; x1 = 10; x2 = 13; x3 = ''; x4 = ','; File file = new File(.\\\\com\\\\iText-5.0.5.jar); if (!file.exists()) { JOptionPane.showMessageDialog(null, 请将有关jar文件包下载到com文件夹中!); return; } file = new File(.\\\\com\\\\jacob.jar); if (!file.exists()) { JOptionPane.showMessageDialog(null, 请将有关jar文件包下载到com文件夹中!); return; } file = new File(.\\\\com\\\\poi-3.8-20120326.jar); if (!file.exists()) { JOptionPane.showMessageDialog(null, 请将有关jar文件包下载到com文件夹中!); return; } file = new File(.\\\\com\\\\PDFBox-0.7.3.jar); if (!file.exists()) { JOptionPane.showMessageDialog(null, 请将有关jar文件包下载到com文件夹中!); return; } final dataTransfer0 frame = new dataTransfer0(); // 创建窗体 frame.setTitle(数据导出到文件二级部件 作者:程学先); // 设置窗体标题 frame.setBounds(10, 10, 窗口宽, 窗口高); // 设置窗体的位置和大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 表名 = 表名1; 表格列数 = 列名1.length; // 数据表列数 表格列名 = new String ; // 定义列名数组 for (int i = 0; i 表格列数; i++) 表格列名 = 列名1 ; 表列数据类型 = new String ; // 定义列字段类型数组 for (int i = 0; i 表格列数; i++) 表列数据类型 = 表列数据类型1 ; 表列数据宽度 = new int ; // 定义列数据宽度 for (int i = 0; i 表格列数; i++) 表列数据宽度 = 表列数据宽度1 ; 表格数据 = new String ; for (int i = 0; i 表格数据1.length; i++) for (int j = 0; j 表格列数; j++) 表格数据 = 表格数据1 ; 要求按钮号表 = 要求按钮号表1; // 需要显示的按钮的顺序号 记录条数 = 表格数据.length; 要求按钮号表 = , + 要求按钮号表1 + ,; final JScrollPane scrollPane = new JScrollPane(); // 创建滚动面板 scrollPane.setBounds(0, 0, 窗口宽 - 100, 窗口高 - 180); // 定义滚动面板大小位置 frame.setLayout(null); frame.getContentPane().add(scrollPane, BorderLayout.CENTER); // 在窗体中央添加滚动面板 表格模型 = new DefaultTableModel(表格数据, 表格列名); // 创建表格模型 表格1 = new JTable(表格模型);// 创建指定表格模型的表格 表格1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 表格1.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); for (int i = 0; i 表格列数; i++) { // 设置表格每列宽度 TableColumn tc = 表格1.getColumn(表格列名 );// 返回表格的列对象 JTableHeader header = 表格1.getTableHeader(); tc.setPreferredWidth(表列数据宽度 * 14); tc.setMaxWidth(表列数据宽度 * 14); tc.sizeWidthToFit(); } scrollPane.setViewportView(表格1); 表格1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { } }); JLabel fl1 = new JLabel(文件名); fl1.setBounds(100, 窗口高 - 160, 50, 20); frame.add(fl1); fa1 = new JTextField(, 20); fa1.setBounds(150, 窗口高 - 160, 200, 20); frame.add(fa1); // 加入文本框 fa1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (fa1.getText().length() 1) { final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile() != null) fa1.setText(fc.getSelectedFile().toString()); 导出文件名 = fc.getSelectedFile().toString(); excel导出文件名 = 导出文件名; if (excel导出文件名.lastIndexOf(.xls) 0) if (excel导出文件名.lastIndexOf(.) 0) excel导出文件名 = excel导出文件名 + .xls; else excel导出文件名 = excel导出文件名.substring(0, excel导出文件名.lastIndexOf(.)) + .xls; word导出文件名 = 导出文件名; if (word导出文件名.lastIndexOf(.doc) 0) if (word导出文件名.lastIndexOf(.) 0) word导出文件名 = word导出文件名 + .doc; else word导出文件名 = word导出文件名.substring(0, word导出文件名.lastIndexOf(.)) + .doc; xml导出文件名 = 导出文件名; if (xml导出文件名.lastIndexOf(.xml) 0) if (xml导出文件名.lastIndexOf(.) 0) xml导出文件名 = xml导出文件名 + .xml; else xml导出文件名 = xml导出文件名.substring(0, xml导出文件名.lastIndexOf(.)) + .xml; pdf导出文件名 = 导出文件名; if (pdf导出文件名.lastIndexOf(.pdf) 0) if (pdf导出文件名.lastIndexOf(.) 0) pdf导出文件名 = pdf导出文件名 + .pdf; else pdf导出文件名 = pdf导出文件名.substring(0, pdf导出文件名.lastIndexOf(.)) + .pdf; } } }); int j = 10; if (要求按钮号表.length() 3) j = 10; else for (int i = 0; i 10; i++) if (要求按钮号表.lastIndexOf(, + i + ,) = 0) j = j + 1; int 按钮宽 = (窗口宽 - 20) / j; int 按钮左边距 = 5; for (int i = 0; i 100; i++) s3 = s3 + ; JButton 到Word文件 = new JButton(到Word文件); 到Word文件.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (word导出文件名.length() == 0) word导出文件名 = JOptionPane.showInputDialog( 请输入导出文件名名称 例如:F:\\\\java.doc, ); ActiveXComponent word = new ActiveXComponent(Word.Application); Dispatch documents = word.getProperty(Documents).toDispatch(); try { Dispatch doc = Dispatch.call(documents, Add).toDispatch(); Dispatch selection = Dispatch.get(word, Selection) .toDispatch(); Dispatch.call(selection, HomeKey); Dispatch tables = Dispatch.get(doc, Tables).toDispatch(); Dispatch range = Dispatch.get(selection, Range) .toDispatch(); Dispatch newTable = Dispatch.call(tables, Add, range, new Variant(记录条数), new Variant(表格列数)).toDispatch(); for (int i = 0; i 表格数据.length; i++) { for (int j = 0; j 表格列数; j++) { Dispatch table = Dispatch.call(tables, Item, new Variant(1)).toDispatch(); Dispatch cell = Dispatch.call(table, Cell, new Variant(i + 1), new Variant(j + 1)) .toDispatch(); Dispatch.call(cell, Select); Dispatch.put(selection, Text, 表格数据 ); } } Dispatch.call((Dispatch) Dispatch.call(word, WordBasic) .getDispatch(), FileSaveAs, word导出文件名); } catch (Exception e1) { e1.printStackTrace(); } finally { Dispatch.call(word, Quit); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,0,) = 0)) { 到Word文件.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 10, 20); frame.add(到Word文件); 按钮左边距 = 按钮左边距 + 按钮宽; } JButton 加到Word = new JButton(加到Word); 加到Word.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (word导出文件名.length() == 0) word导出文件名 = JOptionPane.showInputDialog( 请输入导出文件名名称 例如:F:\\\\java.doc, ); try { FileInputStream in = new FileInputStream( new File(word导出文件名)); WordExtractor extractor = null; extractor = new WordExtractor(in); String 内容 = extractor.getText(); int k = 0; for (int i = 0; i 内容.length(); i++) { if ((byte) (内容.charAt(i)) == 9) k++; if (内容.charAt(i) == '\\r' || 内容.charAt(i) == '\\n') break; } ArrayListString list1 = new ArrayListString(); String s0 = , 列 = ; String ; int 条数 = 0, 列数0 = 0; ; if (表格列数 != k + 1) { JOptionPane.showMessageDialog(null, 原文件中数据结构与数据表不同,不能作添加式导出!); } else for (int i = 0; i 内容.length(); i++) { if ((byte) (内容.charAt(i)) == 10) { list1.add(s0); 条数++; s0 = ; } else if ((byte) (内容.charAt(i)) != 13) s0 = s0 + 内容.substring(i, i + 1); } for (int i = 0; i 条数; i++) { s0 = list1.get(i); 列 = ; 列数0 = 0; if (s0.length() 1) { for (int j = 0; j s0.length(); j++) { if (((byte) (内容.charAt(j)) 19) || (j == s0.length() - 1)) { if (j == s0.length() - 1) 列 = 列 + s0.substring(j, j + 1); 记录 = 列; 列数0++; 列 = ; } else { 列 = 列 + s0.substring(j, j + 1); } } 表格模型.addRow(记录); 记录条数++; 列数0 = 0; } } File 目标文件名 = new File(word导出文件名); ActiveXComponent word = new ActiveXComponent( Word.Application); Dispatch documents = word.getProperty(Documents) .toDispatch(); try { Dispatch doc = Dispatch.call(documents, Add) .toDispatch(); Dispatch selection = Dispatch.get(word, Selection) .toDispatch(); Dispatch.call(selection, HomeKey); Dispatch tables = Dispatch.get(doc, Tables) .toDispatch(); Dispatch range = Dispatch.get(selection, Range) .toDispatch(); Dispatch newTable = Dispatch.call(tables, Add, range, new Variant(记录条数), new Variant(表格列数)) .toDispatch(); for (int i1 = 0; i1 表格模型.getRowCount(); i1++) { for (int j = 0; j 表格列数; j++) { Dispatch table = Dispatch.call(tables, Item, new Variant(1)).toDispatch(); Dispatch cell = Dispatch .call(table, Cell, new Variant(i1 + 1), new Variant(j + 1)) .toDispatch(); Dispatch.call(cell, Select); Dispatch.put(selection, Text, 表格模型 .getValueAt(i1, j).toString()); } } Dispatch.call( (Dispatch) Dispatch.call(word, WordBasic) .getDispatch(), FileSaveAs, word导出文件名); } catch (Exception e1) { e1.printStackTrace(); } finally { Dispatch.call(word, Quit); } } catch (Exception e1) { e1.printStackTrace(); } return; } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,1,) = 0)) { 加到Word.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20); frame.add(加到Word); 按钮左边距 = 按钮左边距 + 按钮宽; } JButton 到Excel文件 = new JButton(到Excel文件); 到Excel文件.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { HSSFWorkbook book = new HSSFWorkbook(); HSSFSheet sheet = book.createSheet(表名); HSSFRow header = sheet.createRow(0); int colCount = 表格列数; for (int i = 0; i 表格列数; i++) { HSSFCell cell = header.createCell(i); cell.setCellValue(new HSSFRichTextString(表格列名 )); } for (int j = 0; j 记录条数; j++) { HSSFRow row = sheet.createRow(j); for (int i = 0; i colCount; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue(new HSSFRichTextString(表格数据 )); } } try { FileOutputStream fileO = new FileOutputStream(excel导出文件名); book.write(fileO); fileO.close(); } catch (Exception e1) { e1.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,2,) = 0)) { 到Excel文件.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20); frame.add(到Excel文件); 按钮左边距 = 按钮左边距 + 按钮宽; } JButton 加到Excel = new JButton(加到Excel); 加到Excel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (excel导出文件名.length() == 0) excel导出文件名 = JOptionPane.showInputDialog( 请输入导入文件完整路径 例如:F:\\\\java.xls, ); InputStream is = null; HSSFWorkbook wbWorkbook = null; try { is = new FileInputStream(excel导出文件名); wbWorkbook = new HSSFWorkbook(is); } catch (FileNotFoundException e1) { e1.printStackTrace(); JOptionPane.showMessageDialog(null, 读取文件失败,请检查路径是否正确!, 错误, JOptionPane.INFORMATION_MESSAGE); } catch (IOException e2) { e2.printStackTrace(); } HSSFSheet sheet = wbWorkbook.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); int 导入表格行数 = sheet.getPhysicalNumberOfRows(); HSSFRow row = sheet.getRow(1); int 导入表格列数 = row.getPhysicalNumberOfCells(); if (导入表格列数 != 表格列数) JOptionPane.showMessageDialog(null, 原文件中数据结构与数据表不同,不能坐添加式导出!); String )); } for (int j = 0; j 表格模型.getRowCount(); j++) { row = sheet.createRow(j); for (int i = 0; i colCount; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue(new HSSFRichTextString(表格模型 .getValueAt(j, i).toString())); } } try { FileOutputStream fileO = new FileOutputStream(excel导出文件名); book.write(fileO); fileO.close(); } catch (Exception e1) { e1.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,3,) = 0)) { 加到Excel.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20); frame.add(加到Excel); 按钮左边距 = 按钮左边距 + 按钮宽; } JButton 标准格式 = new JButton(标准格式); 标准格式.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { File file = new File(导出文件名); if (!file.exists()) { file.createNewFile(); } FileOutputStream fs = new FileOutputStream(file); for (int j1 = 0; j1 记录条数; j1++) { for (int j2 = 0; j2 表格列数; j2++) { fs.write((表格数据 + s3).substring(0, 表列数据宽度 ).getBytes()); } fs.write(( + x1).getBytes()); } fs.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,4,) = 0)) { 标准格式.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20); frame.add(标准格式); 按钮左边距 = 按钮左边距 + 按钮宽; } JButton 紧凑格式 = new JButton(紧凑格式); 紧凑格式.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String 类型 = ,bit,smallint,integer,int,tinyint,real,money,smallmoney,bigint, + float,double,numeric,; try { File file = new File(导出文件名); if (!file.exists()) { file.createNewFile(); } int length = 0; FileOutputStream fs = new FileOutputStream(file); for (int j1 = 0; j1 记录条数; j1++) { for (int j2 = 0; j2 表格列数; j2++) if (j2 (表格列数 - 1)) if (类型.lastIndexOf(表列数据类型 ) = 0) fs.write((表格数据 + x4).getBytes()); else fs.write((x3 + 表格数据 + x3 + x4) .getBytes()); else fs.write((x3 + 表格数据 + x3).getBytes()); fs.write(( + x1).getBytes()); } fs.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,5,) = 0)) { 紧凑格式.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20); frame.add(紧凑格式); 按钮左边距 = 按钮左边距 + 按钮宽; } JButton 自定义格式 = new JButton(自定义格式); 自定义格式.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { File file = new File(导出文件名); if (!file.exists()) { file.createNewFile(); } int length = 0; String x5 = JOptionPane.showInputDialog(请输入字段与字段间分隔符, ); FileOutputStream fs = new FileOutputStream(file); for (int j1 = 0; j1 记录条数; j1++) { for (int j2 = 0; j2 表格列数; j2++) if (j2 (表格列数 - 1)) fs.write((表格数据 + x5).getBytes()); else fs.write(表格数据 .getBytes()); fs.write(( + x1).getBytes()); } fs.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,6,) = 0)) { 自定义格式.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20); frame.add(自定义格式); 按钮左边距 = 按钮左边距 + 按钮宽; } JButton 到XML文件 = new JButton(到XML文件); 到XML文件.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { File file = new File(xml导出文件名); if (!file.exists()) { file.createNewFile(); } FileOutputStream fs = new FileOutputStream(file); fs.write((?xml version= + x3 + 1.0 + x3 + encoding= + x3 + GB2312 + x3 + ?).getBytes()); fs.write((Title).getBytes()); for (int j1 = 0; j1 记录条数; j1++) { fs.write(( + 表名 + ).getBytes()); for (int j2 = 0; j2 表格列数; j2++) { s2 = + 表格列名 + + 表格数据 + / + 表格列名 + ; fs.write(s2.getBytes()); } fs.write(( / + 表名 + ).getBytes()); } fs.write((/Title).getBytes()); fs.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,7,) = 0)) { 到XML文件.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20); frame.add(到XML文件); 按钮左边距 = 按钮左边距 + 按钮宽; } JButton 到PDF文件 = new JButton(到PDF文件); 到PDF文件.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Document document = new Document(); try { PdfWriter.getInstance(document, new FileOutputStream( pdf导出文件名)); document.open(); BaseFont bfComic = BaseFont.createFont( c:\\\\windows\\\\fonts\\\\SIMFANG.TTF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font font = new Font(bfComic, 14); for (int i = 0; i 记录条数; i++) { String s1 = ; ; for (int j = 0; j 表格数据 .length; j++) s1 = s1 + 表格数据 + ; document.add(new Paragraph(s1, font)); } } catch (DocumentException de) { System.err.println(de.getMessage()); } catch (IOException ioe) { System.err.println(ioe.getMessage()); } document.close(); } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,8,) = 0)) { 到PDF文件.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20); frame.add(到PDF文件); 按钮左边距 = 按钮左边距 + 按钮宽; } JButton exitButton = new JButton(退 出); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.setVisible(false); frame.dispose(); } }); if ((要求按钮号表.length() 3) || (要求按钮号表.lastIndexOf(,9,) = 0)) { exitButton.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20); frame.add(exitButton); 按钮左边距 = 按钮左边距 + 按钮宽; } frame.setVisible(true); // 安装窗口 } } 版本2 24.源码24,部件程序,对数据表某一个文本类字段检索查询 /** * 程序文件名:dataQuery15.java * 作者:程学先 * 完成时间:2013年11月17日 * 部件功能:对数据表某一个文本类字段检索查询。 * 被调用语句:datadataQuery15.means(parameter); * 必须提供的参数:“表名”(parameter ), * 如果欲打印,必须提供“打印格式文件名”(parameter ) * 打印格式文件是利用printFormat1.java生成的格式文件。 */ import java.awt.*; import java.awt.event.*; import java.awt.print.PrinterException; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.io.*; public class dataQuery15 extends JFrame { static dataQuery15 frame = new dataQuery15(); static String variabl2603 = ; static Choice choice; static JTextField aTextField; static JButton variabl1903, variabl2375, variabl2325, variabl2255, variabl1971, variabl2091, variabl2617, variabl2639, variabl2599; static String s1 = , s2 = , s3 = ; static ResultSet rs; static int b = 0, c = 0; static int variabl2651; static int variabl2127 = 0; static String variabl1501; static int variabl2405 = null; static String variabl1187; static int variabl2851 = 0, variabl2339 = 0; public static void means(String = ; variabl2319 = 大于; variabl2319 = ; variabl2319 = 小于; variabl2319 = = ; variabl2319 = 等于; variabl2319 = = ; variabl2319 = 大于等于; variabl2319 = = ; variabl2319 = 小于等于; variabl2319 = ; variabl2319 = 不等于; variabl2319 = like ; variabl2319 = 包含; variabl2319 = not like ; variabl2319 = 不包含; String ; variabl2851 = 0; for (int i0 = 0; i0 variabl240501.length; i0++) variabl2405 = variabl240501 ; if (parameter .length() 0) { variabl1187 = parameter ; variabl1187 = variabl1187.replaceAll(;, ;); variabl1187 = variabl1187.replaceAll(。, ;); variabl1187 = variabl1187.replaceAll(:, ;); variabl1187 = variabl1187.replaceAll(:, ;); if (variabl1187.indexOf(;) 0) { String s601 .indexOf(;) 0) { String s602 .split(;); variabl2405 ))] = s602 ; variabl1187 = variabl1187 + , + s602 ; variabl2851++; } else { variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { String s601 ; else variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { variabl1187 = ; for (int i1 = 0; i1 variabl2405.length; i1++) { if (i1 == 0) variabl1187 = variabl1187 + i1; else variabl1187 = variabl1187 + , + i1; variabl2851++; } } variabl1187 = , + variabl1187 + ,; variabl2483 = main1.variabl2483; variabl2503 = main1.variabl2503; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter ); m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2603 = parameter ; variabl1079 = parameter ; variabl1735 = parameter ; variabl1633 = parameter ; if (variabl1633.lastIndexOf(,) == variabl1633.length() - 1) variabl1633 = variabl1633.substring(0, variabl1633.length() - 1); variabl17792 = parameter ; variabl2517 = variabl1633.split(,); String l1; if (variabl1735.length() 0) { l1 = variabl1735.split(,); int ; for (int i = 0; i l1.length; i++) { l2 = Integer.valueOf(l1 ); } variabl2651 = l1.length; variabl2517 = new String ; for (int i = 0; i variabl2651; i++) { variabl2517 = l3 ]; } } s1 = ; for (int i = 0; i variabl2651; i++) { s1 = s1 + variabl2517 + ,; } s1 = s1.substring(0, s1.length() - 1); try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select + s1 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; b++; } int variabl1853 = 0; rs.last(); variabl1853 = rs.getRow(); variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c variabl1853) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 读取数据出错!); } frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20, variabl2483 - 50, variabl2503 - 20); JLabel label = new JLabel(请选择字段名:); label.setBounds(20, 30, 100, 20); panel.add(label); choice = new Choice(); for (int i = 0; i variabl2651; i++) { if ((main1.variabl1543.lastIndexOf(variabl1501 )) = 0) choice.add(variabl2517 ); } choice.setBounds(120, 30, 100, 60); panel.add(choice); aTextField = new JTextField(, 10); aTextField.setBounds(220, 30, 330, 20); panel.add(aTextField); final JButton selectButton = new JButton(文本检索); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String variabl17650 = aTextField.getText(); int n0 = variabl17650.length(); variabl17650 = variabl17650 + ; int i = 0, j = 0, k1 = 0, k2 = 0; s1 = ; s2 = ; String ; String .trim())) variabl2127 = i1; String s4 = , s5 = ; for (i = 0; i n0; i++) { if (variabl17650.substring(i, i + 1).equals(()) { if (k1 2) { s1 = s1 + (; } else if (k1 == 3) { s1 = s1 + and + (; } else if (k1 == 4) { s1 = s1 + or + (; } else if (k1 == 5) { s1 = s1 + and not + (; } s2 = ; k1 = 1; } else if (variabl17650.substring(i, i + 1).equals())) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'); } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'); } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'); } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'); } k1 = 2; s2 = ; } else if (variabl17650.substring(i, i + 1).equals(#)) s2 = s2 + -; else if (variabl17650.substring(i, i + 1).equals(*)) s2 = s2 + %; else if ((variabl17650.substring(i, i + 1).equals( ))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 3; s2 = ; } else if ((variabl17650.substring(i, i + 1) .equals(|))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 4; s2 = ; } else if ((variabl17650.substring(i, i + 1) .equals(-))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 5; s2 = ; } else { s2 = s2 + variabl17650.substring(i, i + 1); } } if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } s1 = select + variabl1633 + from + variabl2603 + where + s1; ResultSet rs = sta3.executeQuery(s1); ResultSetMetaData rsmdt4 = rs.getMetaData(); variabl2651 = rsmdt4.getColumnCount(); variabl1853 = 0; rs.last(); variabl1853 = rs.getRow(); if (variabl1853 1) { JOptionPane.showMessageDialog(null, 未查到满足条件的记录!); return; } variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; variabl18531 = 0; while (c variabl1853) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } variabl2463.setText(variabl2197 ); rs.close(); sta3.close(); con.close(); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(550, 30, 90, 20); panel.add(selectButton); JButton variabl1657 = new JButton(格式提示); variabl1657.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFrame frame1 = new JFrame(); frame1.setTitle(查询部件程序); frame1.setBounds(350, 140, 440, 290); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); String s0 = ; char x1 = 10; s0 = 检索字的格式:检索字区分大、小写。 + x1 + 空格、、|、-、( )、$、#、*、\\\\ 均为特殊意义字符 + x1 + (注意均应为英文字符),字符两边不要有空格。 + x1 + 空格或 表示要求两边内容均要包含在内。 + x1 + “|”表示要求两边内容至少有一个包含在内 + x1 + “-”表示后边内容不包含在内。 + x1 + “( )”表示其内部分为整体内容,全要满足。 + x1 + “$”表示其后的词在标题之首,要放在全文检索词最前面。 + x1 + “#”表示在查找的二个词间可能有若干个任意的字符, + x1 + 任意字符的个数不多于#号的个数。 + x1 + “*”表示在查找的二个词间可能有任意多个任意字符。 + x1 + “\\\\”后边应当是上述字符中任意一个, + x1 + 表示在此处该字符不具有上述特殊意义,只是检索内容中的一个字。; JTextArea variabl24631; variabl24631 = new JTextArea(s0, 10, 10); JScrollPane variabl25091 = new JScrollPane(variabl24631); variabl25091.setBounds(10, 10, 415, 235); frame1.add(variabl25091); frame1.setVisible(true); } }); variabl1657.setBounds(640, 30, 90, 20); panel.add(variabl1657); variabl2463 = new JTextArea(, 10, 10); JScrollPane variabl2509 = new JScrollPane(variabl2463); variabl2509.setBounds(20, 70, 700, 500); panel.add(variabl2509); variabl2339 = (variabl2483 - 60) / variabl2851; int variabl2337 = 30; variabl1903 = new JButton(variabl2405 ); variabl1903.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableTenance.tableModel(800, 600, variabl2517, variabl1489, variabl2197, variabl1501); } }); variabl1903.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,0,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl1903); } variabl2375 = new JButton(variabl2405 ); variabl2375.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { variabl18531 = 0; variabl2463.setText(variabl2197 ); } }); variabl2375.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,1,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2375); } variabl2325 = new JButton(variabl2405 ); variabl2325.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl18531 variabl1853 - 1) { variabl18531++; variabl2463.setText(variabl2197 ); } } }); variabl2325.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,2,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2325); } variabl2255 = new JButton(variabl2405 ); variabl2255.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl18531 0) { variabl18531--; variabl2463.setText(variabl2197 ); } } }); variabl2255.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,3,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2255); } variabl1971 = new JButton(variabl2405 ); variabl1971.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { variabl18531 = variabl1853 - 1; variabl2463.setText(variabl2197 ); } }); variabl1971.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,4,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl1971); } variabl2091 = new JButton(variabl2405 ); variabl2091.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1079.trim().length() 0) dataPreview1.printView1(variabl2197, variabl1079); else dataPreview0.printView1(variabl2517, variabl2197, variabl1489, variabl2603 + 表格预览); } }); variabl2091.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,5,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2091); } variabl2617 = new JButton(variabl2405 ); variabl2617.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1079.trim().length() 0) dataPrint1.print1(variabl2197, variabl1079); else { final JTable table = null; final DefaultTableModel model; model = new DefaultTableModel(variabl2197, variabl2517); for (int i = 0; i variabl2517.length; i++) { TableColumn tc = table.getColumn(variabl2517 ); JTableHeader header = table.getTableHeader(); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); tc.setPreferredWidth(variabl1489 * 9); tc.setMaxWidth(variabl1489 * 9); } try { table.print(); } catch (PrinterException e1) { e1.printStackTrace(); } } } }); variabl2617.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,6,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2617); } variabl2639 = new JButton(variabl2405 ); variabl2639.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataTransfer0.Trans(variabl2517, variabl1501, variabl1489, variabl17792, variabl2197, variabl2603); } }); variabl2639.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,7,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2639); } variabl2599 = new JButton(variabl2405 ); variabl2599.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); variabl2599.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,8,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2599); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 25.源码25,部件程序,对多数据表中某一个文本类字段检索查询 /** * 程序文件名:dataQuery16.java * 作者:程学先 * 完成时间:2013年11月17日 * 部件功能:对多数据表中某一个文本类字段检索查询,可以应用字典表改变标签内容。 * 被调用语句:datadataQuery16.means(parameter); * 要求提供的参数:“表名”(parameter )。 * 如果欲打印,必须提供“打印格式文件名”(parameter ) */ import java.awt.*; import java.awt.event.*; import java.awt.print.PrinterException; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.io.*; public class dataQuery16 extends JFrame { static dataQuery16 frame = new dataQuery16(); static String variabl2603 = ; static String variabl1873; static String variabl2429; static Choice choice; static JTextField aTextField; static JButton variabl1903, variabl2375, variabl2325, variabl2255, variabl1971, variabl2091, variabl2617, variabl2639, variabl2599; static String s1 = , s2 = , s3 = , s4 = ; static ResultSet rs; static int b = 0, c = 0; static int variabl2651; static int variabl2127 = 0; static String variabl2517, variabl25170; static String variabl1079; static String variabl1735; static String variabl1633; static String variabl2049; static String variabl1325; static String variabl1501; static int variabl2405 = null; static String variabl1187; static int variabl2851 = 0, variabl2339 = 0; public static void means(String = ; variabl2319 = 大于; variabl2319 = ; variabl2319 = 小于; variabl2319 = = ; variabl2319 = 等于; variabl2319 = = ; variabl2319 = 大于等于; variabl2319 = = ; variabl2319 = 小于等于; variabl2319 = ; variabl2319 = 不等于; variabl2319 = like ; variabl2319 = 包含; variabl2319 = not like ; variabl2319 = 不包含; variabl2483 = 800; variabl2503 = 700; String ; variabl2851 = 0; for (int i0 = 0; i0 variabl240501.length; i0++) variabl2405 = variabl240501 ; if (parameter .length() 0) { variabl1187 = parameter ; variabl1187 = variabl1187.replaceAll(;, ;); variabl1187 = variabl1187.replaceAll(。, ;); variabl1187 = variabl1187.replaceAll(:, ;); variabl1187 = variabl1187.replaceAll(:, ;); if (variabl1187.indexOf(;) 0) { String s601 .indexOf(;) 0) { String s602 .split(;); variabl2405 ))] = s602 ; variabl1187 = variabl1187 + , + s602 ; variabl2851++; } else { variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { String s601 ; else variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { variabl1187 = ; for (int i1 = 0; i1 variabl2405.length; i1++) { if (i1 == 0) variabl1187 = variabl1187 + i1; else variabl1187 = variabl1187 + , + i1; variabl2851++; } } variabl1187 = , + variabl1187 + ,; variabl2483 = main1.variabl2483; variabl2503 = main1.variabl2503; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter ); m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2603 = parameter ; variabl1079 = parameter ; variabl2049 = parameter ; variabl1325 = parameter ; variabl1735 = parameter ; variabl1633 = parameter ; if (variabl1633.lastIndexOf(,) == variabl1633.length() - 1) variabl1633 = variabl1633.substring(0, variabl1633.length() - 1); String ; String )]; else variabl1633 = variabl1633 + , + variabl25172 )]; } String ; variabl2517 = variabl1633.split(,); variabl2517 = variabl1633.split(,); variabl2429 = parameter ; String l1; variabl1873 = ; String s11 = variabl2603; String ; } s4 = s11; variabl1873 = ; String .lastIndexOf(s11 + 字典表) = 0) variabl1873 = t1 ; } s1 = ; for (int i = 0; i variabl2651; i++) { s1 = s1 + variabl2517 + ,; } s1 = s1.substring(0, s1.length() - 1); int variabl26510 = 0; if (variabl1873.length() 0) { try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s2 = select * from + variabl1873; rs = sta3.executeQuery(s2); rs.last(); int kl = rs.getRow(); ResultSetMetaData rsmd = rs.getMetaData(); variabl26510 = rsmd.getColumnCount(); variabl25170 = new String ; int numberOfColumns = rsmd.getColumnCount(); String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1); s15 = rs.getString(2); variabl25170 = s14; variabl25170 = s15; for (int j = 0; j variabl2517 .length; j++) { if ((variabl2517 .trim().equals(s14.trim())) || (variabl2517 .indexOf(. + s14) 0)) { variabl2517 = s15; break; } } } rs.close(); con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2049.trim().length() 0) s1 = select + s1 + from + variabl2603 + where + variabl2049; else s1 = select + s1 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { variabl2517 = rsmd3.getColumnName(i + 1); variabl2517 = variabl2517 ; if (variabl26510 0) for (int j = 0; j variabl25170 .length; j++) { if ((variabl25170 .trim() .equals(variabl2517 )) || (variabl25170 .indexOf(. + variabl2517 ) 0)) { variabl2517 = variabl25170 ; break; } } variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; b++; } int variabl1853 = 0; rs.last(); variabl1853 = rs.getRow(); variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c variabl1853) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 读取数据出错!); } frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20, variabl2483 - 50, variabl2503 - 20); JLabel label = new JLabel(请选择字段名:); label.setBounds(20, 30, 100, 20); panel.add(label); choice = new Choice(); for (int i = 0; i variabl2651; i++) { if ((main1.variabl1543.lastIndexOf(variabl1501 )) = 0) choice.add(variabl2517 ); } choice.setBounds(120, 30, 100, 60); panel.add(choice); aTextField = new JTextField(, 10); aTextField.setBounds(220, 30, 330, 20); panel.add(aTextField); final JButton selectButton = new JButton(文本检索); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String variabl17650 = aTextField.getText(); int n0 = variabl17650.length(); variabl17650 = variabl17650 + ; int i = 0, j = 0, k1 = 0, k2 = 0; s1 = ; s2 = ; String ; for (int i2 = 0; i2 variabl2517 .length; i2++) { if (variabl2517 .equals(s3)) s3 = variabl2517 ; } if (variabl1633.indexOf(s4 + . + s3) = 0) s3 = s4 + . + s3; String .trim())) variabl2127 = i1; for (i = 0; i n0; i++) { if (variabl17650.substring(i, i + 1).equals(()) { if (k1 2) { s1 = s1 + (; } else if (k1 == 3) { s1 = s1 + and + (; } else if (k1 == 4) { s1 = s1 + or + (; } else if (k1 == 5) { s1 = s1 + and not + (; } s2 = ; k1 = 1; } else if (variabl17650.substring(i, i + 1).equals())) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'); } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'); } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'); } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'); } k1 = 2; s2 = ; } else if (variabl17650.substring(i, i + 1).equals(#)) s2 = s2 + -; else if (variabl17650.substring(i, i + 1).equals(*)) s2 = s2 + %; else if ((variabl17650.substring(i, i + 1).equals( ))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 3; s2 = ; } else if ((variabl17650.substring(i, i + 1) .equals(|))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 4; s2 = ; } else if ((variabl17650.substring(i, i + 1) .equals(-))) { if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } k1 = 5; s2 = ; } else { s2 = s2 + variabl17650.substring(i, i + 1); } } if (k1 2) { s1 = s1 + s3 + like + '% + s2 + %'; } else if (k1 == 3) { s1 = s1 + and + s3 + like + '% + s2 + %'; } else if (k1 == 4) { s1 = s1 + or + s3 + like + '% + s2 + %'; } else if (k1 == 5) { s1 = s1 + and + s3 + not like + '% + s2 + %'; } if (variabl2049.trim().length() 0) s1 = select + variabl1633 + from + variabl2603 + where + variabl2049 + and + s1; else s1 = select + variabl1633 + from + variabl2603 + where + s1; variabl24632.setText(s1); ResultSet rs = sta3.executeQuery(s1); variabl1853 = 0; rs.last(); variabl1853 = rs.getRow(); if (variabl1853 1) { JOptionPane.showMessageDialog(null, 未查到满足条件的记录!); return; } variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; variabl18531 = 0; while (c variabl1853) { rs.absolute(c + 1); while (b s6.length) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } variabl2463.setText(variabl2197 ); rs.close(); sta3.close(); con.close(); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(550, 30, 90, 20); panel.add(selectButton); JButton variabl1657 = new JButton(格式提示); variabl1657.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFrame frame1 = new JFrame(); frame1.setTitle(查询部件程序); frame1.setBounds(350, 140, 440, 290); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); String s0 = ; char x1 = 10; s0 = 检索字的格式:检索字区分大、小写。 + x1 + 空格、、|、-、( )、$、#、*、\\\\ 均为特殊意义字符 + x1 + (注意均应为英文字符),字符两边不要有空格。 + x1 + 空格或 表示要求两边内容均要包含在内。 + x1 + “|”表示要求两边内容至少有一个包含在内 + x1 + “-”表示后边内容不包含在内。 + x1 + “( )”表示其内部分为整体内容,全要满足。 + x1 + “$”表示其后的词在标题之首,要放在全文检索词最前面。 + x1 + “#”表示在查找的二个词间可能有若干个任意的字符, + x1 + 任意字符的个数不多于#号的个数。 + x1 + “*”表示在查找的二个词间可能有任意多个任意字符。 + x1 + “\\\\”后边应当是上述字符中任意一个, + x1 + 表示在此处该字符不具有上述特殊意义,只是检索内容中的一个字。; JTextArea variabl24631; variabl24631 = new JTextArea(s0, 10, 10); JScrollPane variabl25091 = new JScrollPane(variabl24631); variabl25091.setBounds(10, 10, 415, 235); frame1.add(variabl25091); frame1.setVisible(true); } }); variabl1657.setBounds(640, 30, 90, 20); panel.add(variabl1657); variabl2463 = new JTextArea(, 10, 10); JScrollPane variabl2509 = new JScrollPane(variabl2463); variabl2509.setBounds(20, 120, 700, 450); panel.add(variabl2509); JLabel label2 = new JLabel(SQL查询语句); label2.setBounds(20, 60, 100, 20); panel.add(label2); variabl24632 = new JTextArea(, 10, 10); variabl24632.setLineWrap(true); JScrollPane variabl25092 = new JScrollPane(variabl24632); variabl25092.setBounds(120, 60, 490, 50); panel.add(variabl25092); JButton variabl2621 = new JButton(执行SQL语句); variabl2621.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = variabl24632.getText(); ResultSet rs = sta3.executeQuery(s1); ResultSetMetaData rsmdt4 = rs.getMetaData(); variabl2651 = rsmdt4.getColumnCount(); variabl1853 = 0; rs.last(); variabl1853 = rs.getRow(); if (variabl1853 1) { JOptionPane.showMessageDialog(null, 未查到满足条件的记录!); return; } String ; rs.absolute(1); c = 0; b = 0; variabl18531 = 0; while (c variabl1853) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } variabl2463.setText(variabl2197 ); rs.close(); sta3.close(); con.close(); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); variabl2621.setBounds(615, 60, 120, 20); panel.add(variabl2621); variabl2339 = (variabl2483 - 60) / variabl2851; int variabl2337 = 30; variabl1903 = new JButton(variabl240501 ); variabl1903.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableTenance.tableModel(800, 600, variabl2517 , variabl1489, variabl2197, variabl1501); } }); variabl1903.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,0,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl1903); } variabl2375 = new JButton(variabl2405 ); variabl2375.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { variabl18531 = 0; variabl2463.setText(variabl2197 ); } }); variabl2375.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,1,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2375); } variabl2325 = new JButton(variabl2405 ); variabl2325.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl18531 variabl1853 - 1) { variabl18531++; variabl2463.setText(variabl2197 ); } } }); variabl2325.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,2,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2325); } variabl2255 = new JButton(variabl2405 ); variabl2255.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl18531 0) { variabl18531--; variabl2463.setText(variabl2197 ); } } }); variabl2255.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,3,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2255); } variabl1971 = new JButton(variabl2405 ); variabl1971.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { variabl18531 = variabl1853 - 1; variabl2463.setText(variabl2197 ); } }); variabl1971.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,4,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl1971); } variabl2091 = new JButton(variabl2405 ); variabl2091.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1079.trim().length() 0) dataPreview1.printView1(variabl2197, variabl1079); else dataPreview0.printView1(variabl2517 , variabl2197, variabl1489, variabl2603 + 表格预览); } }); variabl2091.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,5,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2091); } variabl2617 = new JButton(variabl2405 ); variabl2617.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1079.trim().length() 0) dataPrint1.print1(variabl2197, variabl1079); else { final JTable table = null; final DefaultTableModel model; model = new DefaultTableModel(variabl2197, variabl2517 ); for (int i = 0; i variabl2517 .length; i++) { TableColumn tc = table.getColumn(variabl2517 ); JTableHeader header = table.getTableHeader(); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); tc.setPreferredWidth(variabl1489 * 9); tc.setMaxWidth(variabl1489 * 9); } try { table.print(); } catch (PrinterException e1) { e1.printStackTrace(); } } } }); variabl2617.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,6,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2617); } variabl2639 = new JButton(variabl2405 ); variabl2639.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataTransfer0.Trans(variabl2517 , variabl1501, variabl1489, variabl17792, variabl2197, variabl2603); } }); variabl2639.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,7,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2639); } variabl2599 = new JButton(variabl2405 ); variabl2599.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); variabl2599.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20); if (variabl1187.indexOf(,8,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(variabl2599); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 26.源码26,公共程序,导出数据到txt文件、Excel文件、Word文件、PDF文件与xml文件公共程序 /** * 程序文件名:dataTransfer0.java * 作者:程学先: * 功能:导出数据到txt文件、Excel文件、Word文件、PDF文件与xml文件公共程序。 * 导出到word与excel有覆盖式与添加式两种。 * 完成日期:2013年1月22日 * 被调用语句:dataTransfer0.Trans(String variabl11691, * int variabl1913; static String variabl2197; static String variabl1119, variabl1125; static int variabl1853, variabl18531 = 0; static String f01; static String variabl25171, String variabl11191, String variabl11871, String variabl21971, String variabl26031) { variabl2483 = 1200; variabl2503 = 700; variabl18531 = 0; variabl1423 = 0; variabl2339 = 0; variabl1679 = ; variabl1463 = ; variabl1003 = ; variabl1015 = ; variabl1033 = ; s1 = ; s2 = ; s3 = ; x1 = 10; x2 = 13; x3 = ''; x4 = ','; File file = new File(.\\\\com\\\\iText-5.0.5.jar); if (!file.exists()) { JOptionPane.showMessageDialog(null, 请将有关jar文件包下载到com文件夹中!); return; } file = new File(.\\\\com\\\\jacob.jar); if (!file.exists()) { JOptionPane.showMessageDialog(null, 请将有关jar文件包下载到com文件夹中!); return; } file = new File(.\\\\com\\\\poi-3.8-20120326.jar); if (!file.exists()) { JOptionPane.showMessageDialog(null, 请将有关jar文件包下载到com文件夹中!); return; } file = new File(.\\\\com\\\\PDFBox-0.7.3.jar); if (!file.exists()) { JOptionPane.showMessageDialog(null, 请将有关jar文件包下载到com文件夹中!); return; } final dataTransfer0 frame = new dataTransfer0(); frame.setTitle(数据导出到文件二级部件 作者:程学先); frame.setBounds(10, 10, variabl2483, variabl2503); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); variabl2603 = variabl26031; variabl2113 = variabl25171.length; variabl1913 = new String ; for (int i = 0; i variabl2113; i++) variabl1913 = variabl25171 ; variabl1169 = new String ; for (int i = 0; i variabl2113; i++) variabl1169 = variabl11691 ; variabl1119 = new int ; for (int i = 0; i variabl2113; i++) variabl1119 = variabl11191 ; variabl2197 = new String ; for (int i = 0; i variabl21971.length; i++) for (int j = 0; j variabl2113; j++) variabl2197 = variabl21971 ; variabl1187 = variabl11871; variabl1853 = variabl2197.length; variabl1187 = , + variabl11871 + ,; final JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(0, 0, variabl2483 - 100, variabl2503 - 180); frame.setLayout(null); frame.getContentPane().add(scrollPane, BorderLayout.CENTER); variabl1965 = new DefaultTableModel(variabl2197, variabl1913); variabl26551 = new JTable(variabl1965); variabl26551.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); variabl26551 .setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); for (int i = 0; i variabl2113; i++) { TableColumn tc = variabl26551.getColumn(variabl1913 ); JTableHeader header = variabl26551.getTableHeader(); tc.setPreferredWidth(variabl1119 * 14); tc.setMaxWidth(variabl1119 * 14); tc.sizeWidthToFit(); } scrollPane.setViewportView(variabl26551); variabl26551.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { } }); JLabel fl1 = new JLabel(文件名); fl1.setBounds(100, variabl2503 - 160, 50, 20); frame.add(fl1); fa1 = new JTextField(, 20); fa1.setBounds(150, variabl2503 - 160, 200, 20); frame.add(fa1); fa1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (fa1.getText().length() 1) { final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile() != null) fa1.setText(fc.getSelectedFile().toString()); variabl1463 = fc.getSelectedFile().toString(); variabl1003 = variabl1463; if (variabl1003.lastIndexOf(.xls) 0) if (variabl1003.lastIndexOf(.) 0) variabl1003 = variabl1003 + .xls; else variabl1003 = variabl1003.substring(0, variabl1003.lastIndexOf(.)) + .xls; variabl1015 = variabl1463; if (variabl1015.lastIndexOf(.doc) 0) if (variabl1015.lastIndexOf(.) 0) variabl1015 = variabl1015 + .doc; else variabl1015 = variabl1015.substring(0, variabl1015.lastIndexOf(.)) + .doc; variabl1033 = variabl1463; if (variabl1033.lastIndexOf(.xml) 0) if (variabl1033.lastIndexOf(.) 0) variabl1033 = variabl1033 + .xml; else variabl1033 = variabl1033.substring(0, variabl1033.lastIndexOf(.)) + .xml; variabl1031 = variabl1463; if (variabl1031.lastIndexOf(.pdf) 0) if (variabl1031.lastIndexOf(.) 0) variabl1031 = variabl1031 + .pdf; else variabl1031 = variabl1031.substring(0, variabl1031.lastIndexOf(.)) + .pdf; } } }); int j = 10; if (variabl1187.length() 3) j = 10; else for (int i = 0; i 10; i++) if (variabl1187.lastIndexOf(, + i + ,) = 0) j = j + 1; int variabl2339 = (variabl2483 - 20) / j; int variabl1423 = 5; for (int i = 0; i 100; i++) s3 = s3 + ; JButton variabl1067 = new JButton(到Word文件); variabl1067.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1015.length() == 0) variabl1015 = JOptionPane.showInputDialog( 请输入导出文件名名称 例如:F:\\\\java.doc, ); ActiveXComponent word = new ActiveXComponent(Word.Application); Dispatch documents = word.getProperty(Documents).toDispatch(); try { Dispatch doc = Dispatch.call(documents, Add).toDispatch(); Dispatch selection = Dispatch.get(word, Selection) .toDispatch(); Dispatch.call(selection, HomeKey); Dispatch tables = Dispatch.get(doc, Tables).toDispatch(); Dispatch range = Dispatch.get(selection, Range) .toDispatch(); Dispatch newTable = Dispatch.call(tables, Add, range, new Variant(variabl1853), new Variant(variabl2113)) .toDispatch(); for (int i = 0; i variabl2197.length; i++) { for (int j = 0; j variabl2113; j++) { Dispatch table = Dispatch.call(tables, Item, new Variant(1)).toDispatch(); Dispatch cell = Dispatch.call(table, Cell, new Variant(i + 1), new Variant(j + 1)) .toDispatch(); Dispatch.call(cell, Select); Dispatch.put(selection, Text, variabl2197 ); } } Dispatch.call((Dispatch) Dispatch.call(word, WordBasic) .getDispatch(), FileSaveAs, variabl1015); } catch (Exception e1) { e1.printStackTrace(); } finally { Dispatch.call(word, Quit); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,0,) = 0)) { variabl1067.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 10, 20); frame.add(variabl1067); variabl1423 = variabl1423 + variabl2339; } JButton variabl1149 = new JButton(加到Word); variabl1149.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1015.length() == 0) variabl1015 = JOptionPane.showInputDialog( 请输入导出文件名名称 例如:F:\\\\java.doc, ); try { FileInputStream in = new FileInputStream(new File( variabl1015)); WordExtractor extractor = null; extractor = new WordExtractor(in); String variabl2581 = extractor.getText(); int k = 0; for (int i = 0; i variabl2581.length(); i++) { if ((byte) (variabl2581.charAt(i)) == 9) k++; if (variabl2581.charAt(i) == '\\r' || variabl2581.charAt(i) == '\\n') break; } ArrayListString list1 = new ArrayListString(); String s0 = , variabl2703 = ; String ; int variabl2569 = 0, variabl26510 = 0; ; if (variabl2113 != k + 1) { JOptionPane.showMessageDialog(null, 原文件中数据结构与数据表不同,不能作添加式导出!); } else for (int i = 0; i variabl2581.length(); i++) { if ((byte) (variabl2581.charAt(i)) == 10) { list1.add(s0); variabl2569++; s0 = ; } else if ((byte) (variabl2581.charAt(i)) != 13) s0 = s0 + variabl2581.substring(i, i + 1); } for (int i = 0; i variabl2569; i++) { s0 = list1.get(i); variabl2703 = ; variabl26510 = 0; if (s0.length() 1) { for (int j = 0; j s0.length(); j++) { if (((byte) (variabl2581.charAt(j)) 19) || (j == s0.length() - 1)) { if (j == s0.length() - 1) variabl2703 = variabl2703 + s0.substring(j, j + 1); variabl2615 = variabl2703; variabl26510++; variabl2703 = ; } else { variabl2703 = variabl2703 + s0.substring(j, j + 1); } } variabl1965.addRow(variabl2615); variabl1853++; variabl26510 = 0; } } File variabl1493 = new File(variabl1015); ActiveXComponent word = new ActiveXComponent( Word.Application); Dispatch documents = word.getProperty(Documents) .toDispatch(); try { Dispatch doc = Dispatch.call(documents, Add) .toDispatch(); Dispatch selection = Dispatch.get(word, Selection) .toDispatch(); Dispatch.call(selection, HomeKey); Dispatch tables = Dispatch.get(doc, Tables) .toDispatch(); Dispatch range = Dispatch.get(selection, Range) .toDispatch(); Dispatch newTable = Dispatch.call(tables, Add, range, new Variant(variabl1853), new Variant(variabl2113)).toDispatch(); for (int i1 = 0; i1 variabl1965.getRowCount(); i1++) { for (int j = 0; j variabl2113; j++) { Dispatch table = Dispatch.call(tables, Item, new Variant(1)).toDispatch(); Dispatch cell = Dispatch .call(table, Cell, new Variant(i1 + 1), new Variant(j + 1)) .toDispatch(); Dispatch.call(cell, Select); Dispatch.put(selection, Text, variabl1965 .getValueAt(i1, j).toString()); } } Dispatch.call( (Dispatch) Dispatch.call(word, WordBasic) .getDispatch(), FileSaveAs, variabl1015); } catch (Exception e1) { e1.printStackTrace(); } finally { Dispatch.call(word, Quit); } } catch (Exception e1) { e1.printStackTrace(); } return; } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,1,) = 0)) { variabl1149.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 5, 20); frame.add(variabl1149); variabl1423 = variabl1423 + variabl2339; } JButton variabl1017 = new JButton(到Excel文件); variabl1017.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { HSSFWorkbook book = new HSSFWorkbook(); HSSFSheet sheet = book.createSheet(variabl2603); HSSFRow header = sheet.createRow(0); int colCount = variabl2113; for (int i = 0; i variabl2113; i++) { HSSFCell cell = header.createCell(i); cell.setCellValue(new HSSFRichTextString(variabl1913 )); } for (int j = 0; j variabl1853; j++) { HSSFRow row = sheet.createRow(j); for (int i = 0; i colCount; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue(new HSSFRichTextString( variabl2197 )); } } try { FileOutputStream fileO = new FileOutputStream(variabl1003); book.write(fileO); fileO.close(); } catch (Exception e1) { e1.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,2,) = 0)) { variabl1017.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 5, 20); frame.add(variabl1017); variabl1423 = variabl1423 + variabl2339; } JButton variabl1061 = new JButton(加到Excel); variabl1061.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1003.length() == 0) variabl1003 = JOptionPane.showInputDialog( 请输入导入文件完整路径 例如:F:\\\\java.xls, ); InputStream is = null; HSSFWorkbook wbWorkbook = null; try { is = new FileInputStream(variabl1003); wbWorkbook = new HSSFWorkbook(is); } catch (FileNotFoundException e1) { e1.printStackTrace(); JOptionPane.showMessageDialog(null, 读取文件失败,请检查路径是否正确!, 错误, JOptionPane.INFORMATION_MESSAGE); } catch (IOException e2) { e2.printStackTrace(); } HSSFSheet sheet = wbWorkbook.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); int variabl1157 = sheet.getPhysicalNumberOfRows(); HSSFRow row = sheet.getRow(1); int variabl1185 = row.getPhysicalNumberOfCells(); if (variabl1185 != variabl2113) JOptionPane.showMessageDialog(null, 原文件中数据结构与数据表不同,不能坐添加式导出!); String )); } for (int j = 0; j variabl1965.getRowCount(); j++) { row = sheet.createRow(j); for (int i = 0; i colCount; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue(new HSSFRichTextString(variabl1965 .getValueAt(j, i).toString())); } } try { FileOutputStream fileO = new FileOutputStream(variabl1003); book.write(fileO); fileO.close(); } catch (Exception e1) { e1.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,3,) = 0)) { variabl1061.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 5, 20); frame.add(variabl1061); variabl1423 = variabl1423 + variabl2339; } JButton variabl2225 = new JButton(标准格式); variabl2225.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { File file = new File(variabl1463); if (!file.exists()) { file.createNewFile(); } FileOutputStream fs = new FileOutputStream(file); for (int j1 = 0; j1 variabl1853; j1++) { for (int j2 = 0; j2 variabl2113; j2++) { fs.write((variabl2197 + s3).substring(0, variabl1119 ).getBytes()); } fs.write(( + x1).getBytes()); } fs.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,4,) = 0)) { variabl2225.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 5, 20); frame.add(variabl2225); variabl1423 = variabl1423 + variabl2339; } JButton variabl1847 = new JButton(紧凑格式); variabl1847.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String variabl2511 = ,bit,smallint,integer,int,tinyint,real,money,smallmoney,bigint, + float,double,numeric,; try { File file = new File(variabl1463); if (!file.exists()) { file.createNewFile(); } int length = 0; FileOutputStream fs = new FileOutputStream(file); for (int j1 = 0; j1 variabl1853; j1++) { for (int j2 = 0; j2 variabl2113; j2++) if (j2 (variabl2113 - 1)) if (variabl2511.lastIndexOf(variabl1169 ) = 0) fs.write((variabl2197 + x4) .getBytes()); else fs.write((x3 + variabl2197 + x3 + x4) .getBytes()); else fs.write((x3 + variabl2197 + x3) .getBytes()); fs.write(( + x1).getBytes()); } fs.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,5,) = 0)) { variabl1847.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 5, 20); frame.add(variabl1847); variabl1423 = variabl1423 + variabl2339; } JButton variabl1403 = new JButton(自定义格式); variabl1403.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { File file = new File(variabl1463); if (!file.exists()) { file.createNewFile(); } int length = 0; String x5 = JOptionPane.showInputDialog(请输入字段与字段间分隔符, ); FileOutputStream fs = new FileOutputStream(file); for (int j1 = 0; j1 variabl1853; j1++) { for (int j2 = 0; j2 variabl2113; j2++) if (j2 (variabl2113 - 1)) fs.write((variabl2197 + x5).getBytes()); else fs.write(variabl2197 .getBytes()); fs.write(( + x1).getBytes()); } fs.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,6,) = 0)) { variabl1403.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 5, 20); frame.add(variabl1403); variabl1423 = variabl1423 + variabl2339; } JButton variabl1163 = new JButton(到XML文件); variabl1163.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { File file = new File(variabl1033); if (!file.exists()) { file.createNewFile(); } FileOutputStream fs = new FileOutputStream(file); fs.write((?xml version= + x3 + 1.0 + x3 + encoding= + x3 + GB2312 + x3 + ?).getBytes()); fs.write((Title).getBytes()); for (int j1 = 0; j1 variabl1853; j1++) { fs.write(( + variabl2603 + ).getBytes()); for (int j2 = 0; j2 variabl2113; j2++) { s2 = + variabl1913 + + variabl2197 + / + variabl1913 + ; fs.write(s2.getBytes()); } fs.write(( / + variabl2603 + ).getBytes()); } fs.write((/Title).getBytes()); fs.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,7,) = 0)) { variabl1163.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 5, 20); frame.add(variabl1163); variabl1423 = variabl1423 + variabl2339; } JButton variabl1245 = new JButton(到PDF文件); variabl1245.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Document document = new Document(); try { PdfWriter.getInstance(document, new FileOutputStream( variabl1031)); document.open(); BaseFont bfComic = BaseFont.createFont( c:\\\\windows\\\\fonts\\\\SIMFANG.TTF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font font = new Font(bfComic, 14); for (int i = 0; i variabl1853; i++) { String s1 = ; ; for (int j = 0; j variabl2197 .length; j++) s1 = s1 + variabl2197 + ; document.add(new Paragraph(s1, font)); } } catch (DocumentException de) { System.err.println(de.getMessage()); } catch (IOException ioe) { System.err.println(ioe.getMessage()); } document.close(); } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,8,) = 0)) { variabl1245.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 5, 20); frame.add(variabl1245); variabl1423 = variabl1423 + variabl2339; } JButton exitButton = new JButton(退 出); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.setVisible(false); frame.dispose(); } }); if ((variabl1187.length() 3) || (variabl1187.lastIndexOf(,9,) = 0)) { exitButton.setBounds(variabl1423, variabl2503 - 120, variabl2339 - 5, 20); frame.add(exitButton); variabl1423 = variabl1423 + variabl2339; } frame.setVisible(true); } }
个人分类: 生活点滴|1767 次阅读|0 个评论
管理信息系统软件生产线源码19-23
求新 2018-5-29 21:03
版本1 19.源码19,部件程序,单数据表组合查询程序 /* * 程序文件名:dataQuery10.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:单数据表组合查询程序。 * 必须输入的参数:一个或多个数据表名,如果是多个表,从前到后每二二间必须有同名字段。 * 引导用户拼写出正确的SQL查询语句,以查到用户想要的数据,并且以表格的形式显示出来。 * 在拼写SQL查询语句的窗口中,用户先在选择字段名组合框中选中一项, * 在选择关系符中选择一项,然后在文本行中输入数据, * 点击添加条件按钮,在下面的文本域中将显示出一个条件表达式,如果有多个条件表达式, * 中间必须通过AND或者OR连接起来。 * 如果不选择输出字段要求,则显示满足条件的全部记录,否则按字段要求输出。 * 上述操作全部完成后,点击“浏览查询结果”就会将查询的结果以表格的形式显示出来。 * 可以对多字段排序后显示结果,还可以做打印预览或打印操作,按字段宽度打印报表。 * 打印预览调用dataPreview0.java程序实现,打印通过调用JAVA自身表格类的打印程序实现。 * 这些打印功能比较简单,只用于打印要求不高的场合。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery10 extends JFrame { static dataQuery10 frame1 = new dataQuery10(); static String 关系符 = { { , 大于 }, { , 小于 }, { =, 等于 }, { =, 大于等于 }, { =, 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static JPanel 面板 = new JPanel(false); private static int 窗口宽 = 570, 窗口高 = 570; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String 表名; static int i = 0, j = 0; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static String s1 = , s2 = ; static int b = 0, c = 0; static int 列数; static String 列数据类型; static int 字段名串; static JComboBox 选数据值 = new JComboBox(); static JButton 加入条件按钮 = new JButton();// 加入条件按钮 static JComboBox 组合框5 = new JComboBox();// 组合框5 static JComboBox 关系符框 = new JComboBox();// 关系符组合框 static JTextArea 文本域 = new JTextArea();// 文本域 public static void means(String = ; 关系符 = 大于; 关系符 = ; 关系符 = 小于; 关系符 = = ; 关系符 = 等于; 关系符 = = ; 关系符 = 大于等于; 关系符 = = ; 关系符 = 小于等于; 关系符 = ; 关系符 = 不等于; 关系符 = like ; 关系符 = 包含; 关系符 = not like ; 关系符 = 不包含; try { int m1 = Integer.parseInt(parameter ); int m2 = Integer.parseInt(parameter ); if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 表名 = parameter ; 字段名串 = parameter .split(,); String 字段名字串 = parameter ; if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); String .length() 0) { String .split(,); 列名 = new String ; for (int i = 0; i 字段号表.length; i++) { 列名 = s6 )]; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; } else { 列名 = new String ; for (int i = 0; i s6.length; i++) { 列名 = s6 ; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; s2 = * ; } try { dbConn = main1.getConn();// 连接数据库 sta3 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select + 字段名字串 + from + 表名; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列数据类型 = new String ; // 定义列数据类型数组 for (int i = 0; i 列数; i++) { 列数据类型 = rsmd3.getColumnTypeName(i + 1); } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 dbConn.close(); } catch (Exception e) { e.printStackTrace(); } final JList 列表框3 = new JList(); final JList 列表框4 = new JList(); JLabel 选择字段名 = new JLabel(); JLabel 选操作符 = new JLabel(); JScrollPane 列表框滚动条 = new JScrollPane(列表框3);// 滚动条 JButton 移出按钮 = new JButton();// 移出按钮 JButton 全部移出 = new JButton();// 全部移出 JButton 移进按钮 = new JButton();// 移进按钮 JButton 全部移入 = new JButton();// 全部移入 JScrollPane 列表框4滚动条 = new JScrollPane(列表框4);// 滚动条4 Border border1; JLabel 请输入数据 = new JLabel();// 输入值标签 JButton 清空按钮 = new JButton();// 清空按钮 JButton 左括号按钮 = new JButton();// 左括号按钮 JButton AND按钮 = new JButton();// AND按钮 JButton OR按钮 = new JButton();// OR按钮 JButton 右括号按钮 = new JButton();// 右括号按钮 JScrollPane 文本域滚动条 = new JScrollPane(文本域);// 文本域滚动条 JLabel 字段列表 = new JLabel();// 字段列表标签 JButton 查询按钮 = new JButton(); JButton 退出按钮 = new JButton(); JButton NOT按钮 = new JButton(); JPanel 子面板 = new JPanel();// 子面板 Border border2; TitledBorder titledBorder1; JPanel 子面板2 = new JPanel();// 子面板2 Border border3; TitledBorder titledBorder2; border1 = BorderFactory.createEtchedBorder( UIManager.getColor(InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); 选择字段名.setFont(new java.awt.Font(Dialog, 0, 12)); 选择字段名.setPreferredSize(new Dimension(57, 16)); 选择字段名.setRequestFocusEnabled(true); 选择字段名.setText(选择字段名); 选择字段名.setBounds(new Rectangle(16, 13, 82, 16)); 面板.setLayout(null); 面板.setLayout(null); // 关闭面板布局管理器 面板.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); 组合框5.setFont(new java.awt.Font(Dialog, 0, 12)); 组合框5.setBorder(BorderFactory.createLineBorder(Color.black)); 组合框5.setBounds(new Rectangle(14, 29, 118, 22)); 关系符框.setFont(new java.awt.Font(Dialog, 0, 12)); 关系符框.setBorder(BorderFactory.createLineBorder(Color.black)); 关系符框.setBounds(new Rectangle(162, 29, 149, 22)); 选操作符.setFont(new java.awt.Font(Dialog, 0, 12)); 选操作符.setText(选择关系符); 选操作符.setBounds(new Rectangle(164, 13, 81, 16)); 列表框滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框滚动条.setBorder(border1); 列表框滚动条.setBounds(new Rectangle(13, 240, 138, 189)); 列表框3.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框3.setBorder(border1); 列表框3.setBounds(new Rectangle(13, 240, 138, 189)); 移出按钮.setBounds(new Rectangle(160, 330, 114, 25)); 移出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移出按钮.setBorder(border1); 移出按钮.setText(《移出字段); 全部移出.setBounds(new Rectangle(159, 360, 116, 25)); 全部移出.setFont(new java.awt.Font(Dialog, 0, 12)); 全部移出.setBorder(border1); 全部移出.setText(《全部移出); 移进按钮.setBounds(new Rectangle(159, 270, 114, 25)); 移进按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移进按钮.setBorder(border1); 移进按钮.setText(移进字段》); 全部移入.setBounds(new Rectangle(159, 300, 114, 25)); 全部移入.setFont(new java.awt.Font(Dialog, 0, 12)); 全部移入.setBorder(border1); 全部移入.setText(全部移入》); 列表框4滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框4滚动条.setBorder(border1); 列表框4滚动条.setBounds(new Rectangle(280, 240, 253, 189)); 列表框4.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setText(输入值); 请输入数据.setBounds(new Rectangle(338, 35, 42, 16)); 加入条件按钮.setBounds(new Rectangle(8, 25, 85, 28)); 加入条件按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 加入条件按钮.setBorder(border1); 加入条件按钮.setBorderPainted(true); 加入条件按钮.setText(添加条件); 清空按钮.setBounds(new Rectangle(98, 26, 79, 28)); 清空按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮.setBorder(border1); 清空按钮.setBorderPainted(true); 清空按钮.setText(清空条件); 左括号按钮.setBounds(new Rectangle(7, 27, 60, 25)); 左括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 左括号按钮.setBorder(border1); 左括号按钮.setBorderPainted(true); 左括号按钮.setText((); AND按钮.setText(AND); AND按钮.setBounds(new Rectangle(73, 27, 62, 25)); AND按钮.setFont(new java.awt.Font(Dialog, 0, 12)); AND按钮.setBorder(border1); AND按钮.setBorderPainted(true); OR按钮.setText(OR); OR按钮.setBounds(new Rectangle(141, 27, 59, 25)); OR按钮.setFont(new java.awt.Font(Dialog, 0, 12)); OR按钮.setBorder(border1); OR按钮.setBorderPainted(true); OR按钮.setRolloverEnabled(true); OR按钮.setSelected(false); 右括号按钮.setText()); 右括号按钮.setBounds(new Rectangle(266, 26, 52, 25)); 右括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 右括号按钮.setBorder(border1); 右括号按钮.setBorderPainted(true); 文本域滚动条.setBorder(border1); 文本域滚动条.setBounds(new Rectangle(13, 126, 520, 86)); 文本域.setFont(new java.awt.Font(Dialog, 0, 12)); 文本域.setText(); 字段列表.setFont(new java.awt.Font(Dialog, 0, 12)); 字段列表.setText(字段列表); 字段列表.setBounds(new Rectangle(16, 217, 77, 16)); 查询按钮.setBounds(new Rectangle(281, 460, 119, 25)); 查询按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 查询按钮.setBorder(border1); 查询按钮.setText(浏览查询结果); 退出按钮.setBounds(new Rectangle(409, 460, 118, 25)); 退出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 退出按钮.setBorder(border1); 退出按钮.setText(退出); NOT按钮.setBorderPainted(true); NOT按钮.setBorder(border1); NOT按钮.setFont(new java.awt.Font(Dialog, 0, 12)); NOT按钮.setBounds(new Rectangle(204, 27, 58, 25)); NOT按钮.setText(NOT); 子面板.setFont(new java.awt.Font(Dialog, 0, 13)); 子面板.setBorder(titledBorder1); 子面板.setBounds(new Rectangle(12, 56, 184, 64)); 子面板.setLayout(null); 子面板2.setBorder(titledBorder2); 子面板2.setBounds(new Rectangle(208, 56, 325, 64)); 子面板2.setLayout(null); 面板.setBackground(Color.lightGray); 选数据值.setFont(new java.awt.Font(Dialog, 0, 12)); 选数据值.setAlignmentY((float) 0.5); 选数据值.setBorder(BorderFactory.createLineBorder(Color.black)); 选数据值.setDoubleBuffered(false); 选数据值.setActionCommand(comboBoxChanged); 选数据值.setEditable(true); 选数据值.setBounds(new Rectangle(384, 28, 147, 22)); 面板.add(查询按钮, null); 面板.add(列表框滚动条, null); 面板.add(移出按钮, null); 面板.add(全部移出, null); 面板.add(全部移入, null); 面板.add(列表框4滚动条, null); 面板.add(退出按钮, null); 面板.add(文本域滚动条, null); 子面板.add(加入条件按钮, null); 子面板.add(清空按钮, null); 面板.add(子面板2, null); 面板.add(子面板, null); 子面板2.add(左括号按钮, null); 子面板2.add(右括号按钮, null); 子面板2.add(AND按钮, null); 子面板2.add(OR按钮, null); 子面板2.add(NOT按钮, null); 面板.add(组合框5, null); 面板.add(关系符框, null); 面板.add(移进按钮, null); 面板.add(选操作符, null); 面板.add(选择字段名, null); 面板.add(字段列表, null); 面板.add(选数据值, null); 面板.add(请输入数据, null); for (int i = 0; i 关系符.length; i++) { 关系符框.addItem(关系符 ); } if (关系符框.getItemCount() 0) { 关系符框.setSelectedIndex(0); } for (int i = 0; i 列名.length; i++) { 组合框5.addItem(列名 ); } if (组合框5.getItemCount() 0) { 组合框5.setSelectedIndex(0); } 列表框3.setModel(fModel); 列表框4.setModel(dModel); DefaultListModel dlm = (DefaultListModel) 列表框3.getModel(); for (int i = 0; i 列名.length; i++) { dlm.addElement(列名 ); } 列表框3.setModel(dlm); 加入条件按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String) 组合框5.getSelectedItem(); // 字段名 String s2 = (String) 关系符框.getSelectedItem(); // 关系符 String s3 = (String) 选数据值.getEditor().getItem(); // 数据值 String s4 = 列数据类型 ; // 数据类型 for (int i = 0; i 关系符.length; i++) { if (s2 == 关系符 ) { s2 = 关系符 ; } } if (main1.图形数据类型.lastIndexOf(s4) = 0) { JOptionPane.showMessageDialog(面板, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); } else if (main1.数字数据类型.lastIndexOf(, + s4 + ,) = 0) { if (关系符框.getSelectedItem().equals(包含) || 关系符框.getSelectedItem().equals(不包含)) { JOptionPane.showMessageDialog(面板, 数字类数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); } else { String s = s1 + s2 + s3; 文本域.append(s); } } else if (main1.文本数据类型.lastIndexOf(s4) = 0) { if (关系符框.getSelectedItem().equals(包含) || 关系符框.getSelectedItem().equals(不包含)) { s3 = '% + (String) 选数据值.getEditor().getItem() + %'; String s = s1 + s2 + s3; 文本域.append(s); } else { JOptionPane.showMessageDialog(面板, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); } } else { if (关系符框.getSelectedItem().equals(包含) || 关系符框.getSelectedItem().equals(不包含)) { s3 = '% + (String) 选数据值.getEditor().getItem() + %'; String s = s1 + s2 + s3; 文本域.append(s); } else { s3 = ' + (String) 选数据值.getEditor().getItem() + '; String s = s1 + s2 + s3; 文本域.append(s); } } } }); 清空按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; 文本域.setText(s); } }); 左括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; 文本域.append(s); } }); AND按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; 文本域.append(s); } }); OR按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; 文本域.append(s); } }); NOT按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; 文本域.append(s); } }); 右括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); 文本域.append(s); } }); 移进按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(列表框3.getSelectedValue()); 列表框4.setModel(dlm); } }); 移出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.removeElement(列表框4.getSelectedValue()); 列表框4.setModel(dlm); } }); 全部移出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; int m1 = 列表框4.getLastVisibleIndex(); for (int k = 0; k m1; k++) { 列表框4.setSelectedIndex(k); z0 = 列表框4.getSelectedValue() + ; } 列表框4.setModel(fModel); DefaultListModel dlm1 = (DefaultListModel) 列表框4.getModel(); dlm1.clear(); // 清空 列表框4.setModel(dlm1); 列表框3.setModel(dModel); DefaultListModel dlm = (DefaultListModel) 列表框3.getModel(); for (int i = 0; i m1; i++) { dlm.addElement(z0 ); } 列表框3.setModel(dlm); } }); 全部移入.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; int m1 = 列表框3.getLastVisibleIndex(); for (int k = 0; k m1; k++) { 列表框3.setSelectedIndex(k); z0 = 列表框3.getSelectedValue() + ; } 列表框3.setModel(fModel); DefaultListModel dlm = (DefaultListModel) 列表框3.getModel(); dlm.clear(); // 清空 列表框3.setModel(dlm); 列表框4.setModel(dModel); DefaultListModel dlm1 = (DefaultListModel) 列表框4.getModel(); for (int i = 0; i m1; i++) { dlm1.addElement(z0 ); } 列表框4.setModel(dlm1); } }); 查询按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; int kl = 0; DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); int m = dlm.getSize(); for (int i = 0; i m; i++) { s1 = s1 + dlm.elementAt(i) + ,; } if (s1.length() 1) s1 = *,; s1 = s1.substring(0, s1.length() - 1); s1 = SELECT + s1; s2 = FROM + 表名; s3 = 文本域.getText(); s = s1 + s2; if (s3.length() 0) s = s + WHERE + s3; try { dbConn = main1.getConn();// 连接数据库 sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列名 = new String ; // 定义列名数组 列数据类型 = new String ; // 定义列数据类型数组 列数据宽度 = new int ; // 定义列数据宽度数组 /* * 参考: * 某些SQL Server数据类型在JAVA程序时无对应类型,表现的类型变换表: * date nvarchar * datetime2 nvarchar * datetimeoffset nvarchar * geography image * geometry image * hierarchyid varbinary * time(7) nvarchar * varbinary(max) image * xml ntext */ for (int i = 0; i 列数; i++) { 列名 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 for (int j = 0; j 字段名串.length; j++) if (列名 .lastIndexOf(.) 0) 列名 = 列名 .substring(列名 .lastIndexOf(.), 列名 .length()); //显示表格中去掉表名 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(列数据类型 ) = 0) //过大数据不适宜用表格显示 列数据宽度 = 30; else if (列数据宽度 30) //过大数据不适宜用表格显示 列数据宽度 = 30; if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); b++; } int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800, 600, 列名, 列数据宽度, 表格数据, 列数据类型); } }); 退出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); // 窗口标题 frame1.setBounds(0, 0, 窗口宽, 窗口高); // 主程序窗口位置大小 frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); // 关闭布局管理器 frame1.getContentPane().add(面板, null); // 安装面板 frame1.setVisible(true); // 安装窗口 } } 20.源码20,部件程序,多数据表组合查询 /* * 程序文件名:dataQuery11.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:多数据表组合查询。 * 引导用户拼写出正确的SQL查询语句,以查到用户想要的数据, * 必须输入的参数:一个或多个数据表名,如果是多个表,从前到后每二二间必须有同名字段。 * 在拼写SQL查询语句的窗口中,用户先在选择字段名组合框中选中一项, * 在选择关系符中选择一项,然后在文本行中输入数据, * 点击添加条件按钮,在下面的文本域中将显示出一个条件表达式,如果有多个条件表达式, * 中间必须通过AND或者OR连接。 * 如果不选择输出字段要求,则显示满足条件的全部记录,否则按字段要求输出。 * 上述操作全部完成后,点击“浏览查询结果”就会将查询的结果以表格的形式显示出来。 * 本程序必须在菜单生成程序生成的菜单中调用才能正常运行。而且,在生成菜单时必须从列表框中选择表名。 * 为辅助学习SQL语句,用户拼写出的SQL语句直接放在所设计的一个文本域中,操作者可以手工修改该语句, * 之后执行,同时观察SQL语句设计正确性。 * 本程序为部件程序,由系统控制程序调用执行。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery11 extends JFrame { static dataQuery11 frame1 = new dataQuery11(); static String 关系符={{,大于},{,小于},{=,等于},{=,大于等于},{=,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; private static JPanel 面板 = new JPanel(false); //定义面板 private static int 窗口宽=570,窗口高=570; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String 表名; static int i=0, j=0; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static String s1 = , s2 = ; static int b=0,c=0; static int 列数; static String 列数据类型; static int 字段名串; static JComboBox 选数据值 = new JComboBox(); static JComboBox 组合框5 = new JComboBox(); static JComboBox 关系符框 = new JComboBox();//关系符组合框 static JTextArea 文本域 = new JTextArea(); public static void means(String = ; 关系符 =大于; 关系符 = ; 关系符 =小于; 关系符 = = ; 关系符 =等于; 关系符 = = ; 关系符 =大于等于; 关系符 = = ; 关系符 =小于等于; 关系符 = ; 关系符 =不等于; 关系符 = like ; 关系符 =包含; 关系符 = not like ; 关系符 =不包含; try{ int m1=Integer.parseInt(parameter ) ; int m2=Integer.parseInt(parameter ) ; if (m10){ if (m280){ m1=m1*10; m2=m2*10; } 窗口宽=m1 ; 窗口高=m2 ; } }catch(Exception e2){} 表名=parameter ; 连接条件=parameter ; 字段名字串=parameter ; 字段名串=parameter .split(,); String .length()0){ String .split(,); 列名=new String ; for (int i=0;i字段号表.length;i++){ 列名 =s6 )]; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; } else { 列名=new String ; for (int i=0;is6.length;i++){ 列名 =s6 ; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; s2= * ; } try { dbConn=main1.getConn();// 连接数据库 sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (连接条件.trim().length()0) s1=select +字段名字串+ from +表名+ where +连接条件; else s1=select +字段名字串+ from +表名; ResultSet rs=sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数=rsmd3.getColumnCount(); //获取列数 列数据类型 = new String ; //定义列数据类型数组 for(int i=0; i列数; i++) { 列数据类型 = rsmd3.getColumnTypeName(i+1); } rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 dbConn.close(); } catch(Exception e) { e.printStackTrace(); } final JList 列表框3 = new JList(); final JList 列表框4 = new JList(); JLabel 选择字段名 = new JLabel(); JLabel 选操作符 = new JLabel();//操作符号标签 JScrollPane 列表框滚动条 = new JScrollPane(列表框3);//滚动条 JButton 移出按钮 = new JButton();//移出按钮 JButton 全部移出 = new JButton();//全部移出 JButton 移进按钮 = new JButton();//移进按钮 JButton 全部移入 = new JButton();//全部移入 JScrollPane 列表框4滚动条 = new JScrollPane(列表框4);//滚动条4 Border border1;//矩形线框 JLabel 请输入数据 = new JLabel();//输入值标签 JButton 加入条件按钮 = new JButton();//加入条件按钮 JButton 清空按钮 = new JButton();//清空按钮 JButton 左括号按钮 = new JButton();//左括号按钮 JButton AND按钮 = new JButton();//AND按钮 JButton OR按钮 = new JButton();//OR按钮 JButton 右括号按钮 = new JButton();//右括号按钮 JScrollPane 文本域滚动条 = new JScrollPane(文本域);//文本域滚动条 JLabel 字段列表 = new JLabel();//字段列表标签 JButton 查询按钮 = new JButton();//浏览查询结果按钮 JButton 退出按钮 = new JButton();//退出按钮 ButtonGroup 按钮组 = new ButtonGroup();//按钮组 JButton NOT按钮 = new JButton();//NOT按钮 final DefaultListModel fModel = new DefaultListModel(); final DefaultListModel dModel = new DefaultListModel(); JPanel 子面板 = new JPanel();//子面板 Border border2; TitledBorder titledBorder1; JPanel 子面板2 = new JPanel();//子面板2 Border border3; TitledBorder titledBorder2; JButton 清空按钮2 = new JButton();//清空按钮2 border1 = BorderFactory.createEtchedBorder(UIManager.getColor( InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); 选择字段名.setFont(new java.awt.Font(Dialog, 0, 12)); 选择字段名.setPreferredSize(new Dimension(57, 16)); 选择字段名.setRequestFocusEnabled(true); 选择字段名.setText(选择字段名); 选择字段名.setBounds(new Rectangle(16, 13, 82, 16)); 面板.setLayout(null); //关闭面板布局管理器 面板.setBounds(10, 10,窗口宽-10,窗口高-10); 组合框5.setFont(new java.awt.Font(Dialog, 0, 12)); 组合框5.setBorder(BorderFactory.createLineBorder(Color.black)); 组合框5.setBounds(new Rectangle(14, 29, 118, 22)); 关系符框.setFont(new java.awt.Font(Dialog, 0, 12)); 关系符框.setBorder(BorderFactory.createLineBorder(Color.black)); 关系符框.setBounds(new Rectangle(162, 29, 149, 22)); 选操作符.setFont(new java.awt.Font(Dialog, 0, 12)); 选操作符.setText(选择关系符); 选操作符.setBounds(new Rectangle(164, 13, 81, 16)); 列表框滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框滚动条.setBorder(border1); 列表框滚动条.setBounds(new Rectangle(13, 240, 138, 189)); 列表框3.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框3.setBorder(border1); 列表框3.setBounds(new Rectangle(13, 240, 138, 189)); 移出按钮.setBounds(new Rectangle(160, 330, 114, 25)); 移出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移出按钮.setBorder(border1); 移出按钮.setText(《移出字段); 全部移出.setBounds(new Rectangle(159, 360, 116, 25)); 全部移出.setFont(new java.awt.Font(Dialog, 0, 12)); 全部移出.setBorder(border1); 全部移出.setText(《全部移出); 移进按钮.setBounds(new Rectangle(159, 270, 114, 25)); 移进按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移进按钮.setBorder(border1); 移进按钮.setText(移进字段》); 全部移入.setBounds(new Rectangle(159, 300, 114, 25)); 全部移入.setFont(new java.awt.Font(Dialog, 0, 12)); 全部移入.setBorder(border1); 全部移入.setText(全部移入》); 列表框4滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框4滚动条.setBorder(border1); 列表框4滚动条.setBounds(new Rectangle(280, 240, 253, 189)); 列表框4.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setText(输入值); 请输入数据.setBounds(new Rectangle(338, 35, 42, 16)); 加入条件按钮.setBounds(new Rectangle(8, 26,85, 28)); 加入条件按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 加入条件按钮.setBorder(border1); 加入条件按钮.setBorderPainted(true); 加入条件按钮.setText(添加条件); 清空按钮.setBounds(new Rectangle(98, 26, 79, 28)); 清空按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮.setBorder(border1); 清空按钮.setBorderPainted(true); 清空按钮.setText(清空条件); 左括号按钮.setBounds(new Rectangle(7, 27, 60, 25)); 左括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 左括号按钮.setBorder(border1); 左括号按钮.setBorderPainted(true); 左括号按钮.setText((); AND按钮.setText(AND); AND按钮.setBounds(new Rectangle(73, 27, 62, 25)); AND按钮.setFont(new java.awt.Font(Dialog, 0, 12)); AND按钮.setBorder(border1); AND按钮.setBorderPainted(true); OR按钮.setText(OR); OR按钮.setBounds(new Rectangle(141, 27, 59, 25)); OR按钮.setFont(new java.awt.Font(Dialog, 0, 12)); OR按钮.setBorder(border1); OR按钮.setBorderPainted(true); OR按钮.setRolloverEnabled(true); OR按钮.setSelected(false); 右括号按钮.setText()); 右括号按钮.setBounds(new Rectangle(266, 26, 52, 25)); 右括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 右括号按钮.setBorder(border1); 右括号按钮.setBorderPainted(true); 文本域滚动条.setBorder(border1); 文本域滚动条.setBounds(new Rectangle(13, 126, 520, 86)); 文本域.setFont(new java.awt.Font(Dialog, 0, 12)); 文本域.setText(); 字段列表.setFont(new java.awt.Font(Dialog, 0, 12)); 字段列表.setText(字段列表); 字段列表.setBounds(new Rectangle(16, 217, 77, 16)); 查询按钮.setBounds(new Rectangle(281, 460, 119, 25)); 查询按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 查询按钮.setBorder(border1); 查询按钮.setText(浏览查询结果); 退出按钮.setBounds(new Rectangle(409, 460, 118, 25)); 退出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 退出按钮.setBorder(border1); 退出按钮.setText(退出); NOT按钮.setBorderPainted(true); NOT按钮.setBorder(border1); NOT按钮.setFont(new java.awt.Font(Dialog, 0, 12)); NOT按钮.setBounds(new Rectangle(204, 27, 58, 25)); NOT按钮.setText(NOT); 子面板.setFont(new java.awt.Font(Dialog, 0, 13)); 子面板.setBorder(titledBorder1); 子面板.setBounds(new Rectangle(12, 56, 184, 64)); 子面板.setLayout(null); 子面板2.setBorder(titledBorder2); 子面板2.setBounds(new Rectangle(208, 56, 325, 64)); 子面板2.setLayout(null); 面板.setBackground(Color.lightGray); 选数据值.setFont(new java.awt.Font(Dialog, 0, 12)); 选数据值.setAlignmentY( (float) 0.5); 选数据值.setBorder(BorderFactory.createLineBorder(Color.black)); 选数据值.setDoubleBuffered(false); 选数据值.setActionCommand(comboBoxChanged); 选数据值.setEditable(true); 选数据值.setBounds(new Rectangle(384, 28, 147, 22)); 面板.add(查询按钮, null); 面板.add(列表框滚动条, null); 面板.add(移出按钮, null); 面板.add(全部移出, null); 面板.add(全部移入, null); 面板.add(列表框4滚动条, null); 面板.add(退出按钮, null); 面板.add(文本域滚动条, null); 子面板.add(加入条件按钮, null); 子面板.add(清空按钮, null); 面板.add(子面板2, null); 面板.add(子面板, null); 子面板2.add(左括号按钮, null); 子面板2.add(右括号按钮, null); 子面板2.add(AND按钮, null); 子面板2.add(OR按钮, null); 子面板2.add(NOT按钮, null); 面板.add(组合框5, null); 面板.add(关系符框, null); 面板.add(移进按钮, null); 面板.add(选操作符, null); 面板.add(选择字段名, null); 面板.add(字段列表, null); 面板.add(选数据值, null); 面板.add(请输入数据, null); for (int i = 0; i 关系符.length; i++) { 关系符框.addItem(关系符 ); } if (关系符框.getItemCount() 0) { 关系符框.setSelectedIndex(0); } for(int i=0; i列名.length; i++) { 组合框5.addItem(列名 ); } if(组合框5.getItemCount()0) { 组合框5.setSelectedIndex(0); } 列表框3.setModel(fModel); 列表框4.setModel(dModel); DefaultListModel dlm=(DefaultListModel)列表框3.getModel(); for(int i=0; i列名.length; i++) { dlm.addElement(列名 ); } 列表框3.setModel(dlm); 加入条件按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String)组合框5.getSelectedItem(); String .lastIndexOf(.)0)(s7 .lastIndexOf(.+s1)=0)){ s1=s7 ; break; } else if (s7 .lastIndexOf(s1)=0){ s1=s7 ; break; } } String s2 = (String)关系符框.getSelectedItem(); for(int i=0; i关系符.length; i++) { if(s2==关系符 ) { s2=关系符 ; } } String s3 = ; if ((main1.图形数据类型.lastIndexOf(列数据类型 ))=0){ JOptionPane.showMessageDialog(面板,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); } else if(main1.数字数据类型.lastIndexOf(,+列数据类型 +,)=0){ if(关系符框.getSelectedItem().equals(包含)||关系符框.getSelectedItem().equals(不包含)){ JOptionPane.showMessageDialog(面板,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); }else{ s3 = (String)选数据值.getEditor().getItem(); String s=s1+s2+s3; 文本域.append(s); } } else if(main1.文本数据类型.lastIndexOf(列数据类型 )=0){ //判断如果是大数据类型 if(关系符框.getSelectedItem().equals(包含)||关系符框.getSelectedItem().equals(不包含)){ s3='%+(String)选数据值.getEditor().getItem()+%'; String s=s1+s2+s3; 文本域.append(s); }else{ JOptionPane.showMessageDialog(面板,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); } }else{ if(关系符框.getSelectedItem().equals(包含)||关系符框.getSelectedItem().equals(不包含)){ s3='%+(String)选数据值.getEditor().getItem()+%'; String s=s1+s2+s3; 文本域.append(s); }else{ s3='+(String)选数据值.getEditor().getItem()+'; String s=s1+s2+s3; 文本域.append(s); } } } }); 清空按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; 文本域.setText(s); } }); 左括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; 文本域.append(s); } }); AND按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; 文本域.append(s); } }); OR按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; 文本域.append(s); } }); NOT按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; 文本域.append(s); } }); 右括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); 文本域.append(s); } }); 移进按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm1 = (DefaultListModel)列表框4.getModel(); dlm1.addElement(列表框3.getSelectedValue()); 列表框4.setModel(dlm1); } }); 移出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm1 = (DefaultListModel)列表框4.getModel(); dlm1.removeElement(列表框4.getSelectedValue()); 列表框4.setModel(dlm1); } }); 全部移出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; int m1=列表框4.getLastVisibleIndex(); for (int k=0;km1;k++){ 列表框4.setSelectedIndex(k); z0 =列表框4.getSelectedValue()+; } DefaultListModel dlm1=(DefaultListModel)列表框4.getModel(); dlm1.clear();//清空 列表框4.setModel(dlm1); DefaultListModel dlm=(DefaultListModel)列表框3.getModel(); for(int i=0; im1; i++) { dlm.addElement(z0 ); } 列表框3.setModel(dlm); } }); 全部移入.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; int m1=列表框3.getLastVisibleIndex()+1; for (int k=0;km1;k++){ 列表框3.setSelectedIndex(k); z0 =列表框3.getSelectedValue()+; } DefaultListModel dlm=(DefaultListModel)列表框3.getModel(); dlm.clear();//清空 列表框3.setModel(dlm); DefaultListModel dlm1=(DefaultListModel)列表框4.getModel(); for(int i=0; im1; i++) { dlm1.addElement(z0 ); } 列表框4.setModel(dlm1); } }); 查询按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + dlm1.elementAt(i)) = 0)) { s1 = s1 + s7 + ,; break; } else if (s7 .lastIndexOf(dlm1.elementAt(i) + ) = 0) { s1 = s1 + s7 + ,; break; } } } if (s1.length() 1) s1 = *,; s1 = s1.substring(0, s1.length() - 1); s1 = SELECT + s1; s2 = s1 + FROM + 表名; s3 = s2; if (连接条件.trim().length() 0) { s3 = s3 + WHERE + 连接条件; kl = 1; } if ((文本域.getText().length() 0) (kl == 1)) s3 = s3 + AND + 文本域.getText(); else if (文本域.getText().length() 0) { s3 = s3 + WHERE + 文本域.getText(); kl = 1; } try { dbConn = main1.getConn();// 连接数据库 sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s3); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列名 = new String ; // 定义列名数组 for (int i = 0; i 列数; i++) 列名 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 for (int j = 0; j 字段名串.length; j++) if (列名 .lastIndexOf(.) 0) 列名 = 列名 .substring(列名 .lastIndexOf(.), 列名 .length()); // 显示表格中去掉表名 列数据类型 = new String ; // 定义列数据类型数组 列数据宽度 = new int ; // 定义列数据宽度数组 for (int i = 0; i 列数; i++) { 列名 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(列数据类型 ) = 0) // 过大数据不适宜用表格显示 列数据宽度 = 30; else if (列数据宽度 30) // 过大数据不适宜用表格显示 列数据宽度 = 30; if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); b++; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800, 600, 列名, 列数据宽度, 表格数据, 列数据类型); } }); 退出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); //窗口标题 frame1.setBounds(0, 0,窗口宽, 窗口高); //主程序窗口位置大小 frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); //关闭布局管理器 frame1.getContentPane().add(面板, null); //安装面板 frame1.setVisible(true); //安装窗口 } } 21.源码21,部件程序,多数据表可变换标签、可输出聚集函数数据的组合查询 /* * 程序文件名:dataQuery12.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:多数据表可变换标签、可输出聚集函数数据的组合查询。 * 在拼写SQL查询语句的窗口中,用户先在选择字段名组合框中选中一项,在选择关系符中选择一项, * 在文本行中输入数据,点击添加条件按钮,在下面的文本域中将显示出一个条件表达式, * 如果有多个条件表达式,中间必须通过AND或者OR连接。 * 如果不选择输出字段要求,则显示满足条件的全部记录,否则按字段要求输出。 * 上述操作全部完成后,点击“浏览查询结果”就会将查询的结果以表格的形式显示出来。 * 为辅助学习SQL语句,用户拼写出的SQL语句直接放在所设计的一个文本域中, * 操作者可以手工修改该语句之后执行,同时观察SQL语句设计正确性。 * 注意写语句时要用数据库中定义的字段名,不能用字典表变换标签。 * 本程序为部件程序,由系统控制程序调用执行。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery12 extends JFrame { static dataQuery12 frame1 = new dataQuery12(); static String 关系符 = { { , 大于 }, { , 小于 }, { =, 等于 }, { =, 大于等于 }, { =, 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static String curTableName = ; private static JPanel 面板 = new JPanel(false); private static int 窗口宽 = 570, 窗口高 = 700; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String 表名; static String 字典表名; static String 表名表; static String 列数据类型; static int 字段名串; static JComboBox 选数据值 = new JComboBox(); static JButton 加入条件按钮 = new JButton(); static JComboBox 组合框5 = new JComboBox(); static JComboBox 关系符框 = new JComboBox(); static JTextArea 文本域 = new JTextArea(); static JTextField 分组条件字段 = new JTextField();// 分组条件文本框 static JTextField 分组字段 = new JTextField(100);// 分组字段文本框 static JTextField 排序条件 = new JTextField();// 排序条件 static JCheckBox 全选字段 = new JCheckBox();// 全选字段 static JCheckBox 允许分组 = new JCheckBox();// 允许分组 static JCheckBox 允许排序 = new JCheckBox();// 允许排序 static JCheckBox 重复选项框 = new JCheckBox();// 永许重复选项框 static JButton 分组按钮 = new JButton();// 分组按钮 static JButton 增排序按钮 = new JButton();// 排序按钮 static JButton 降排序按钮 = new JButton();// 排序按钮 static JButton 分组条件按钮 = new JButton();// 分组条件按钮 static JRadioButton 递增 = new JRadioButton();// 递增 static JRadioButton 降序 = new JRadioButton();// 降序 public static void means(String = ; 关系符 = 大于; 关系符 = ; 关系符 = 小于; 关系符 = = ; 关系符 = 等于; 关系符 = = ; 关系符 = 大于等于; 关系符 = = ; 关系符 = 小于等于; 关系符 = ; 关系符 = 不等于; 关系符 = like ; 关系符 = 包含; 关系符 = not like ; 关系符 = 不包含; try { int m1 = Integer.parseInt(parameter ); int m2 = Integer.parseInt(parameter ); if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 表名 = parameter ; 连接条件 = parameter ; 字段名字串 = parameter ; // 字段名字串包括相连接各表全部字段,重复字段带表名 if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); String .length() 0) { // 如果选了字段号 String .split(,); 列名 = new String ; 列名0 = new String ; // 201505修改 for (int i = 0; i 字段号表.length; i++) { 列名 = s6 )]; 列名 = 列名 ; 列名0 = 列名 ; // 201505修改 列名0 = 列名 ; // 201505修改 if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; } else { // 如果没选字段号 列名 = new String ; 列名0 = new String ; // 201505修改 for (int i = 0; i s6.length; i++) { 列名 = s6 ; 列名 = 列名 ; 列名0 = 列名 ; // 201505修改 列名0 = 列名 ; // 201505修改 if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; // 这一句无意义,前面已经得到字段名字串,由调用程序带入 s2 = * ; } 表名表 = parameter ; 字段名串 = 字段名字串.split(,); String s11 = 表名; if (表名.indexOf(,) 0) { String ; } 字典表名 = ; String .lastIndexOf(s11 + 字典表) = 0) 字典表名 = t1 ; } if (字典表名.length() 0) { try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + 字典表名; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int 列数0 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); // 记录数 String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); // 字段名,字典表中定义 s15 = rs.getString(2).trim(); // 标签名 for (int j = 0; j 列名 .length; j++) { if (列名 .trim().equalsIgnoreCase(s14.trim())) { 列名 = s15; break; } else if ((列名 .trim() + ,).indexOf(. + s14 + ,) 0) { 列名 = 列名 .replace(s14, s15); break; } } } rs.close(); // 关闭查询结果集 dbConn.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } try { dbConn = main1.getConn();// 连接数据库 sta3 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (连接条件.trim().length() 0) s1 = select + 字段名字串 + from + 表名 + where + 连接条件; else s1 = select + 字段名字串 + from + 表名; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列数据类型 = new String ; // 定义列数据类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i = 0; i 列数; i++) { 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 dbConn.close(); } catch (Exception e) { e.printStackTrace(); } final JList 列表框3 = new JList(); final JList 列表框4 = new JList(); JLabel 选择字段名 = new JLabel(); JLabel 选操作符 = new JLabel(); JScrollPane 列表框滚动条 = new JScrollPane(列表框3);// 滚动条 JButton 移出按钮 = new JButton();// 移出按钮 JButton 求平均按钮 = new JButton();// 求平均按钮 JButton 移进按钮 = new JButton();// 移进按钮 JButton 全部移进 = new JButton();// 全部移进按钮 JButton 求和按钮 = new JButton();// 求和按钮 JButton 求最小按钮 = new JButton();// 求最小按钮 JButton 求最大按钮 = new JButton();// 求最大按钮 JScrollPane 列表框4滚动条 = new JScrollPane(列表框4);// 滚动条4 Border border1; JLabel 请输入数据 = new JLabel();// 输入值标签 JButton 清空按钮 = new JButton();// 清空按钮 JButton 左括号按钮 = new JButton();// 左括号按钮 JButton AND按钮 = new JButton();// AND按钮 JButton OR按钮 = new JButton();// OR按钮 JButton 右括号按钮 = new JButton();// 右括号按钮 JScrollPane 文本域滚动条 = new JScrollPane(文本域);// 文本域滚动条 JLabel 字段列表 = new JLabel();// 字段列表标签 JButton 求记录条数 = new JButton();// 加入求记录条数 JButton 查询按钮 = new JButton();// 浏览查询结果按钮 JButton 退出按钮 = new JButton();// 退出按钮 ButtonGroup 按钮组 = new ButtonGroup();// 按钮组 JButton NOT按钮 = new JButton();// NOT按钮 JPanel 子面板 = new JPanel();// 子面板 Border border2; TitledBorder titledBorder1; JPanel 子面板2 = new JPanel();// 子面板2 Border border3; TitledBorder titledBorder2; JButton 清空按钮2 = new JButton();// 清空按钮2 border1 = BorderFactory.createEtchedBorder( UIManager.getColor(InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); 选择字段名.setFont(new java.awt.Font(Dialog, 0, 12)); 选择字段名.setPreferredSize(new Dimension(57, 16)); 选择字段名.setRequestFocusEnabled(true); 选择字段名.setText(选择字段名); 选择字段名.setBounds(new Rectangle(16, 13, 82, 16)); 面板.setLayout(null); 面板.setLayout(null); // 关闭面板布局管理器 面板.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); 组合框5.setFont(new java.awt.Font(Dialog, 0, 12)); 组合框5.setBorder(BorderFactory.createLineBorder(Color.black)); 组合框5.setBounds(new Rectangle(14, 29, 118, 22)); 关系符框.setFont(new java.awt.Font(Dialog, 0, 12)); 关系符框.setBorder(BorderFactory.createLineBorder(Color.black)); 关系符框.setBounds(new Rectangle(162, 29, 149, 22)); 选操作符.setFont(new java.awt.Font(Dialog, 0, 12)); 选操作符.setText(选择关系符); 选操作符.setBounds(new Rectangle(164, 13, 81, 16)); 列表框滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框滚动条.setBorder(border1); 列表框滚动条.setBounds(new Rectangle(13, 238, 138, 320)); 列表框3.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框3.setBorder(border1); 列表框3.setBounds(new Rectangle(13, 238, 138, 310)); 移进按钮.setBounds(new Rectangle(160, 220, 114, 25)); 移进按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移进按钮.setBorder(border1); 移进按钮.setText(移进字段》); 全部移进.setBounds(new Rectangle(160, 247, 114, 25)); 全部移进.setFont(new java.awt.Font(Dialog, 0, 12)); 全部移进.setBorder(border1); 全部移进.setText(全部移进》); 移出按钮.setBounds(new Rectangle(159, 276, 114, 25)); 移出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移出按钮.setBorder(border1); 移出按钮.setText(《移出字段); 求平均按钮.setBounds(new Rectangle(159, 304, 114, 25)); 求平均按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求平均按钮.setBorder(border1); 求平均按钮.setText(加入求平均值字段); 求最大按钮.setBounds(new Rectangle(159, 332, 115, 25)); 求最大按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求最大按钮.setBorder(border1); 求最大按钮.setText(加入求最大值字段); 求最小按钮.setBounds(new Rectangle(159, 360, 115, 25)); 求最小按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求最小按钮.setBorder(border1); 求最小按钮.setText(加入求最小值字段); 求和按钮.setBounds(new Rectangle(159, 388, 116, 25)); 求和按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求和按钮.setBorder(border1); 求和按钮.setText(加入求和字段); 求记录条数.setText(加入求记录条数); 求记录条数.setBorder(border1); 求记录条数.setBounds(new Rectangle(159, 416, 116, 25)); 求记录条数.setFont(new java.awt.Font(Dialog, 0, 12)); 分组按钮.setBounds(new Rectangle(159, 444, 116, 25)); 分组按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 分组按钮.setBorder(border1); 分组按钮.setText(加入分组字段); 增排序按钮.setText(加入升序排序字段); 增排序按钮.setBorder(border1); 增排序按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 增排序按钮.setBounds(new Rectangle(159, 472, 115, 25)); 降排序按钮.setText(加入降序排序字段); 降排序按钮.setBorder(border1); 降排序按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 降排序按钮.setBounds(new Rectangle(159, 500, 115, 25)); 分组条件按钮.setText(加入分组条件); 分组条件按钮.setBorder(border1); 分组条件按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 分组条件按钮.setBounds(new Rectangle(159, 528, 115, 25)); 分组字段.setBorder(border1); 分组字段.setText(); 分组字段.setBounds(new Rectangle(281, 445, 252, 22)); 分组条件字段.setBorder(border1); 分组条件字段.setText(); 分组条件字段.setBounds(new Rectangle(281, 520, 253, 22)); 排序条件.setBorder(border1); 排序条件.setText(); 排序条件.setBounds(new Rectangle(281, 480, 253, 22)); 列表框4滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框4滚动条.setBorder(border1); 列表框4滚动条.setBounds(new Rectangle(280, 240, 253, 189)); 列表框4.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setText(输入值); 请输入数据.setBounds(new Rectangle(338, 35, 42, 16)); 加入条件按钮.setBounds(new Rectangle(8, 25, 85, 28)); 加入条件按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 加入条件按钮.setBorder(border1); 加入条件按钮.setBorderPainted(true); 加入条件按钮.setText(添加条件); 清空按钮.setBounds(new Rectangle(100, 25, 85, 28)); 清空按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮.setBorder(border1); 清空按钮.setBorderPainted(true); 清空按钮.setText(清空条件); 左括号按钮.setBounds(new Rectangle(7, 27, 60, 25)); 左括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 左括号按钮.setBorder(border1); 左括号按钮.setBorderPainted(true); 左括号按钮.setText((); AND按钮.setText(AND); AND按钮.setBounds(new Rectangle(73, 27, 62, 25)); AND按钮.setFont(new java.awt.Font(Dialog, 0, 12)); AND按钮.setBorder(border1); AND按钮.setBorderPainted(true); OR按钮.setText(OR); OR按钮.setBounds(new Rectangle(141, 27, 59, 25)); OR按钮.setFont(new java.awt.Font(Dialog, 0, 12)); OR按钮.setBorder(border1); OR按钮.setBorderPainted(true); OR按钮.setRolloverEnabled(true); OR按钮.setSelected(false); 右括号按钮.setText()); 右括号按钮.setBounds(new Rectangle(266, 26, 52, 25)); 右括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 右括号按钮.setBorder(border1); 右括号按钮.setBorderPainted(true); 文本域滚动条.setBorder(border1); 文本域滚动条.setBounds(new Rectangle(13, 126, 520, 86)); 文本域.setFont(new java.awt.Font(Dialog, 0, 12)); 文本域.setText(); 字段列表.setFont(new java.awt.Font(Dialog, 0, 12)); 字段列表.setText(字段列表); 字段列表.setBounds(new Rectangle(16, 217, 77, 16)); 清空按钮2.setBounds(new Rectangle(161, 560, 119, 25)); 清空按钮2.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮2.setBorder(border1); 清空按钮2.setText(清空); 查询按钮.setBounds(new Rectangle(281, 560, 119, 25)); 查询按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 查询按钮.setBorder(border1); 查询按钮.setText(浏览查询结果); 退出按钮.setBounds(new Rectangle(409, 560, 118, 25)); 退出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 退出按钮.setBorder(border1); 退出按钮.setText(退出); NOT按钮.setBorderPainted(true); NOT按钮.setBorder(border1); NOT按钮.setFont(new java.awt.Font(Dialog, 0, 12)); NOT按钮.setBounds(new Rectangle(204, 27, 58, 25)); NOT按钮.setText(NOT); 子面板.setFont(new java.awt.Font(Dialog, 0, 13)); 子面板.setBorder(titledBorder1); 子面板.setBounds(new Rectangle(12, 56, 184, 64)); 子面板.setLayout(null); 子面板2.setBorder(titledBorder2); 子面板2.setBounds(new Rectangle(208, 56, 325, 64)); 子面板2.setLayout(null); 面板.setBackground(Color.lightGray); 选数据值.setFont(new java.awt.Font(Dialog, 0, 12)); 选数据值.setAlignmentY((float) 0.5); 选数据值.setBorder(BorderFactory.createLineBorder(Color.black)); 选数据值.setDoubleBuffered(false); 选数据值.setActionCommand(comboBoxChanged); 选数据值.setEditable(true); 选数据值.setBounds(new Rectangle(384, 28, 147, 22)); 面板.add(查询按钮, null); 面板.add(列表框滚动条, null); 面板.add(移出按钮, null); 面板.add(求平均按钮, null); 面板.add(求最大按钮, null); 面板.add(求最小按钮, null); 面板.add(求和按钮, null); 面板.add(求记录条数, null); 面板.add(分组按钮, null); 面板.add(增排序按钮, null); 面板.add(降排序按钮, null); 面板.add(列表框4滚动条, null); 面板.add(重复选项框, null); 面板.add(分组字段, null); 面板.add(排序条件, null); 面板.add(退出按钮, null); 面板.add(文本域滚动条, null); 面板.add(分组条件按钮, null); 面板.add(分组条件字段, null); 子面板.add(加入条件按钮, null); 子面板.add(清空按钮, null); 面板.add(子面板2, null); 面板.add(子面板, null); 子面板2.add(左括号按钮, null); 子面板2.add(右括号按钮, null); 子面板2.add(AND按钮, null); 子面板2.add(OR按钮, null); 子面板2.add(NOT按钮, null); 面板.add(组合框5, null); 面板.add(关系符框, null); 面板.add(全选字段, null); 面板.add(清空按钮2, null); 面板.add(移进按钮, null); 面板.add(全部移进, null); 面板.add(选操作符, null); 面板.add(选择字段名, null); 面板.add(字段列表, null); 面板.add(选数据值, null); 面板.add(请输入数据, null); for (int i = 0; i 关系符.length; i++) { 关系符框.addItem(关系符 ); } if (关系符框.getItemCount() 0) { 关系符框.setSelectedIndex(0); } for (int i = 0; i 列名 .length; i++) { 组合框5.addItem(列名 ); } if (组合框5.getItemCount() 0) { 组合框5.setSelectedIndex(0); } 列表框3.setModel(fModel); 列表框4.setModel(dModel); DefaultListModel dlm = (DefaultListModel) 列表框3.getModel(); for (int i = 0; i 列名 .length; i++) { dlm.addElement(列名 ); } 列表框3.setModel(dlm); 加入条件按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String) 组合框5.getSelectedItem(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + s1) = 0)) { s1 = 列名 ; break; } else if (s7 .lastIndexOf(s1) = 0) { s1 = 列名 ; break; } else if ((列名 .lastIndexOf(.) 0) (列名 .lastIndexOf(. + s1) = 0)) { s1 = 列名 ; break; } else if (列名 .lastIndexOf(s1) = 0) { s1 = 列名 ; break; } } String s2 = (String) 关系符框.getSelectedItem(); for (int i = 0; i 关系符.length; i++) { if (s2 == 关系符 ) { s2 = 关系符 ; } } String s3 = ; if ((main1.图形数据类型.lastIndexOf(列数据类型 )) = 0) { JOptionPane.showMessageDialog(面板, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); } else if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) { if (关系符框.getSelectedItem().toString() .equalsIgnoreCase(包含) || 关系符框.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { JOptionPane.showMessageDialog(面板, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); } else { s3 = (String) 选数据值.getEditor().getItem(); String s = s1 + s2 + s3; 文本域.append(s); } } else if (main1.文本数据类型.lastIndexOf(列数据类型 ) = 0) { if (关系符框.getSelectedItem().toString() .equalsIgnoreCase(包含) || 关系符框.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { s3 = '% + (String) 选数据值.getEditor().getItem() + %'; String s = s1 + s2 + s3; 文本域.append(s); } else { JOptionPane.showMessageDialog(面板, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); } } else { if (关系符框.getSelectedItem().toString() .equalsIgnoreCase(包含) || 关系符框.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { s3 = '% + (String) 选数据值.getEditor().getItem() + %'; String s = s1 + s2 + s3; 文本域.append(s); } else { s3 = ' + (String) 选数据值.getEditor().getItem() + '; String s = s1 + s2 + s3; 文本域.append(s); } } } }); 清空按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; 文本域.setText(s); } }); 左括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; 文本域.append(s); } }); AND按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; 文本域.append(s); } }); OR按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; 文本域.append(s); } }); NOT按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; 文本域.append(s); } }); 右括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); 文本域.append(s); } }); 移进按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s0 = ; s0 = 列表框3.getSelectedValue() + ; for (int i = 0; i 列数; i++) { if (列名 .trim().equalsIgnoreCase(s0.trim())) { s0 = 列名 ; break; } } DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(s0); 列表框4.setModel(dlm); } }); 移出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.removeElement(列表框4.getSelectedValue()); 列表框4.setModel(dlm); } }); 求平均按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = 列表框3.getSelectedIndex(); String ; if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0) || (列数据类型 .indexOf(money) = 0)) { DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(AVG( + s8 + ) + AS + ' + 平均 + 列表框3.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(AVG( + s8 + )); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板, 非数值型列不能求平均值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求最大按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = 列表框3.getSelectedIndex(); String ; if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.文字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.时间数据类型.indexOf(, + 列数据类型 + ,) = 0)){ DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(MAX( + s8 + ) + AS + ' + 最大 + 列表框3.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(MAX( + s8 + )); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板, 非数值型列不能求最大值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求最小按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = 列表框3.getSelectedIndex(); String ; if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.文字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.时间数据类型.indexOf(, + 列数据类型 + ,) = 0)){ DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(MIN( + s8 + ) + AS + ' + 最小 + 列表框3.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(MIN( + s8 + )); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板, 非数值型列不能求最小值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求和按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = 列表框3.getSelectedIndex(); String ; if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0) || (列数据类型 .indexOf(money) = 0)) { DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(SUM( + s8 + ) + AS + ' + 列表框3.getSelectedValue() + 总和 + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(SUM( + s8 + )); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板, 非数值型列不能求总和!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求记录条数.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == 列表框3.getSelectedValue()) { 列名0 = 列名 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + 列名0) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(列名0 + ) = 0) { s8 = s7 ; break; } } DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(COUNT( + s8 + ) + AS + ' + 记录条数 + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(COUNT( + s8 + )); 列表框4.setModel(dlm); } }); 分组按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == 列表框3.getSelectedValue()) { 列名0 = 列名 ; break; } } s8 = 列名0; if ((分组字段.getText().length() 0) (分组字段.getText().lastIndexOf( + s8) 0)) 分组字段.setText(分组字段.getText() + , + s8 + ); else if (分组字段.getText().length() 1) 分组字段.setText(GROUP BY + s8 + ); } }); 增排序按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == 列表框3.getSelectedValue()) { 列名0 = 列名 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + 列名0) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(列名0 + ) = 0) { s8 = s7 ; break; } } if ((排序条件.getText().length() 0) (排序条件.getText().lastIndexOf( + s8) 0)) 排序条件.setText(排序条件.getText() + , + s8); else if (排序条件.getText().length() 1) 排序条件.setText(ORDER BY + s8); } }); 降排序按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == 列表框3.getSelectedValue()) { 列名0 = 列名 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + 列名0) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(列名0 + ) = 0) { s8 = s7 ; break; } } if ((排序条件.getText().length() 0) (排序条件.getText().lastIndexOf( + s8) 0)) 排序条件.setText(排序条件.getText() + , + s8 + desc ); else if (排序条件.getText().length() 1) 排序条件.setText(ORDER BY + s8 + desc ); } }); 分组条件按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s7 = 字段名字串.split(,); for (int j = 0; j s7.length; j++) { dlm.addElement(s7 ); } 列表框4.setModel(dlm); } }); 清空按钮2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.removeAllElements(); 列表框4.setModel(dlm); 分组字段.setText(); 排序条件.setText(); 分组条件字段.setText(); 文本域.setText(); } }); 查询按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; int kl = 0; DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); int m = dlm.getSize(); for (int i = 0; i m; i++) { s1 = s1 + dlm.elementAt(i) + ,; } if (s1.length() 1) s1 = 字段名字串 + ,; s1 = s1.substring(0, s1.length() - 1); s1 = SELECT + s1; s2 = FROM + 表名; s3 = ; if (连接条件.trim().length() 0) { s3 = WHERE + 连接条件; kl = 1; } if ((文本域.getText().length() 0) (kl == 1)) s3 = s3 + AND + 文本域.getText(); else if (文本域.getText().length() 0) { s3 = WHERE + 文本域.getText(); kl = 1; } s4 = 分组字段.getText(); if (s4.length() == 0) { s4 = ; } else { s4 = + s4.substring(0, s4.length() - 1); } s5 = + 分组条件字段.getText(); s6 = + 排序条件.getText(); s = s1 + s2; if (s3.length() 0) s = s + s3; if (s4.length() 0) s = s + s4; if (s5.length() 0) s = s + s5; if (s6.length() 0) s = s + s6; String 表格数据0 ; String 列数据宽度0; try { dbConn = main1.getConn();// 连接数据库 sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s); int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); int 列数0 = rsmd3.getColumnCount(); // 获取列数 列名0 = new String ; // 定义列名数组 列数据类型0 = new String ; // 定义列数据类型数组 列数据宽度0 = new int ; // 定义列数据宽度数组 for (int i = 0; i 列数0; i++) { 列名0 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 列名0 = 列名0 ; 列数据类型0 = rsmd3.getColumnTypeName(i + 1); 列数据宽度0 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(列数据类型0 ) = 0) // 过大数据不适宜用表格显示 列数据宽度0 = 30; else if (列数据宽度0 30) // 过大数据不适宜用表格显示 列数据宽度0 = 30; if (列数据宽度0 列名0 .length()) 列数据宽度0 = 列名0 .length(); b++; } 表格数据0 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数0) { 表格数据0 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } for (int j = 0; j 列数; j++) { for (int i = 0; i 列名0 .length; i++) { if ((列名 .lastIndexOf(.) 0) (列名 .lastIndexOf(. + 列名0 ) = 0)) { 列名0 = 列名0 ; if (列名0 .indexOf(.) 0) 列名0 = 列名0 .substring(列名0 .lastIndexOf(.) + 1); break; } else if (列名 .trim().equalsIgnoreCase( 列名0 .trim())) { 列名0 = 列名 ; break; } } } tableTenance .tableModel(800, 600, 列名0 , 列数据宽度0, 表格数据0, 列数据类型0); } }); 退出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); // 窗口标题 frame1.setBounds(0, 0, 窗口宽, 窗口高); // 主程序窗口位置大小 frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); // 关闭布局管理器 frame1.getContentPane().add(面板, null); // 安装面板 frame1.setVisible(true); // 安装窗口 } } 22.源码22,部件程序,多数据表不可变换标签、可输出聚集函数数据的组合查询。 /* * 程序文件名:dataQuery13.java * 作者:程学先 * 程序功能:多数据表不可变换标签、可输出聚集函数数据的组合查询。 * 1、若进行单表查询 * 需要用户在“请输入部件名称”、“请输入数据表名”处给定相应的参数。 * 2、可进行多表查询 * 3、在拼写SQL查询语句的窗口中,用户先在选择字段名组合框中选中一项,在选择关系符中选择一项,然后在文本行中输入文本,点击添加条件按钮就会在下面的文本域中显示出一个条件表达式,如果有多个条件表达式,中间必须通过AND、OR或者NOT连接起来。 * 4、在字段列表中用户可以选择查询结果中出现的列,还可以对数值型数据类型的列进行求平均值,求最大值,求最小值和求和,如果用户选择了非数值型的列则会弹出一个对话框提示用户非数值型的列不能进行上述运算。 * 5、分组字段、排序字段和分组条件这些是可选项,需要使用的时候要选中“允许分组”和“允许排序”复选框,若果有分组字段,那么点击“加入分组字段”按钮时,列表框中除了聚合函数外的所有项都会自动被添加到文本行中,排序字段需要根据需要选择,分组条件需要用户自己完成,使之成为一个正确的表达式。 * 6、“全选字段”和“允许重复”根据需要进行选择。 * 7、上述操作全部完成后,点击“浏览查询结果”就会将查询的结果以表格的形式显示出来。 * 本程序为部件程序,由系统控制程序调用执行。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery13 extends JFrame { static dataQuery13 frame1 = new dataQuery13(); static String 关系符={{,大于},{,小于},{=,等于},{=,大于等于},{=,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static String curTableName = ; private static JPanel 面板 = new JPanel(false); //定义面板 private static int 窗口宽=570,窗口高=640; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String 表名; static String 列名; static String 列数据宽度; static String 表格数据;// 存放表格数据的数组 static String 连接条件; static String 字段名字串; static String parameter) { frame1 = new dataQuery13(); fModel = new DefaultListModel(); dModel = new DefaultListModel(); curTableName = ;面板 = new JPanel(false); 窗口宽=570;窗口高=640;dbConn = null; i=0; j=0; scrollPane = new JScrollPane(); s1 = ; s2 = ; b=0;c=0; 选数据值 = new JComboBox(); 加入条件按钮 = new JButton(); 组合框5 = new JComboBox(); 关系符框 = new JComboBox(); 文本域 = new JTextArea(); 分组条件字段 = new JTextField(); 分组字段 = new JTextField(100); 排序条件 = new JTextField(); 全选字段 = new JCheckBox(); 允许分组 = new JCheckBox(); 允许排序 = new JCheckBox(); 重复选项框 = new JCheckBox(); 分组按钮 = new JButton(); 排序按钮 = new JButton(); 分组条件按钮 = new JButton(); 递增 = new JRadioButton(); 降序 = new JRadioButton();//降序 关系符 = ; 关系符 =大于; 关系符 = ; 关系符 =小于; 关系符 = = ; 关系符 =等于; 关系符 = = ; 关系符 =大于等于; 关系符 = = ; 关系符 =小于等于; 关系符 = ; 关系符 =不等于; 关系符 = like ; 关系符 =包含; 关系符 = not like ; 关系符 =不包含; try{ int m1=Integer.parseInt(parameter ) ; int m2=Integer.parseInt(parameter ) ; if (m10){ if (m280){ m1=m1*10; m2=m2*10; } 窗口宽=m1 ; 窗口高=m2 ; } }catch(Exception e2){} 表名=parameter ; 连接条件=parameter ; 字段名字串=parameter ; String .length()0){ String .split(,); 列名=new String ; for (int i=0;i字段号表.length;i++){ 列名 =s6 )]; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; } else { 列名=new String ; for (int i=0;is6.length;i++){ 列名 =s6 ; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; s2= * ; } 字段名串=字段名字串.split(,); try { dbConn=main1.getConn();// 连接数据库 sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (连接条件.trim().length()0) s1=select +字段名字串+ from +表名+ where +连接条件; else s1=select +字段名字串+ from +表名; ResultSet rs=sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数=rsmd3.getColumnCount(); //获取列数 列数据类型 = new String ; //定义列数据类型数组 for(int i=0; i列数; i++) { for (int j=0;j字段名串.length;j++) 列数据类型 = rsmd3.getColumnTypeName(i+1); } rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 dbConn.close(); } catch(Exception e) { e.printStackTrace(); } final JList 列表框3 = new JList(); final JList 列表框4 = new JList(); JLabel 选择字段名 = new JLabel(); JLabel 选操作符 = new JLabel();//操作符号标签 JScrollPane 列表框滚动条 = new JScrollPane(列表框3);//滚动条 JButton 移出按钮 = new JButton();//移出按钮 JButton 求平均按钮 = new JButton();//求平均按钮 JButton 移进按钮 = new JButton();//移进按钮 JButton 求和按钮 = new JButton();//求和按钮 JButton 求最小按钮 = new JButton();//求最小按钮 JButton 求最大按钮 = new JButton();//求最大按钮 JScrollPane 列表框4滚动条 = new JScrollPane(列表框4);//滚动条4 Border border1;//矩形线框 JLabel 请输入数据 = new JLabel();//输入值标签 JButton 清空按钮 = new JButton();//清空按钮 JButton 左括号按钮 = new JButton();//左括号按钮 JButton AND按钮 = new JButton();//AND按钮 JButton OR按钮 = new JButton();//OR按钮 JButton 右括号按钮 = new JButton();//右括号按钮 JScrollPane 文本域滚动条 = new JScrollPane(文本域);//文本域滚动条 JLabel 字段列表 = new JLabel();//字段列表标签 JButton 求记录条数 = new JButton();//加入求记录条数 JButton 查询按钮 = new JButton();//浏览查询结果按钮 JButton 退出按钮 = new JButton();//退出按钮 ButtonGroup 按钮组 = new ButtonGroup();//按钮组 JButton NOT按钮 = new JButton();//NOT按钮 JPanel 子面板 = new JPanel();//子面板 Border border2; TitledBorder titledBorder1; JPanel 子面板2 = new JPanel();//子面板2 Border border3; TitledBorder titledBorder2; JButton 清空按钮2 = new JButton();//清空按钮2 border1 = BorderFactory.createEtchedBorder(UIManager.getColor( InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); 选择字段名.setFont(new java.awt.Font(Dialog, 0, 12)); 选择字段名.setPreferredSize(new Dimension(57, 16)); 选择字段名.setRequestFocusEnabled(true); 选择字段名.setText(选择字段名); 选择字段名.setBounds(new Rectangle(16, 13, 82, 16)); 面板.setLayout(null); 面板.setLayout(null); //关闭面板布局管理器 面板.setBounds(10, 10,窗口宽-10,窗口高-10); 组合框5.setFont(new java.awt.Font(Dialog, 0, 12)); 组合框5.setBorder(BorderFactory.createLineBorder(Color.black)); 组合框5.setBounds(new Rectangle(14, 29, 118, 22)); 关系符框.setFont(new java.awt.Font(Dialog, 0, 12)); 关系符框.setBorder(BorderFactory.createLineBorder(Color.black)); 关系符框.setBounds(new Rectangle(162, 29, 149, 22)); 选操作符.setFont(new java.awt.Font(Dialog, 0, 12)); 选操作符.setText(选择关系符); 选操作符.setBounds(new Rectangle(164, 13, 81, 16)); 列表框滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框滚动条.setBorder(border1); 列表框滚动条.setBounds(new Rectangle(13, 238, 138, 280)); 列表框3.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框3.setBorder(border1); 列表框3.setBounds(new Rectangle(13, 238, 138, 250)); 移出按钮.setBounds(new Rectangle(159, 266, 114, 25)); 移出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移出按钮.setBorder(border1); 移出按钮.setText(《移出字段); 求平均按钮.setBounds(new Rectangle(159, 293, 114, 25)); 求平均按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求平均按钮.setBorder(border1); 求平均按钮.setText(加入求平均值字段); 分组按钮.setBounds(new Rectangle(159, 433, 116, 25)); 分组按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 分组按钮.setBorder(border1); 分组按钮.setText(加入分组字段); 分组按钮.setEnabled(false); 移进按钮.setBounds(new Rectangle(160, 239, 114, 25)); 移进按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移进按钮.setBorder(border1); 移进按钮.setText(移进字段》); 求和按钮.setBounds(new Rectangle(159, 375, 116, 25)); 求和按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求和按钮.setBorder(border1); 求和按钮.setText(加入求和字段); 求最小按钮.setBounds(new Rectangle(159, 347, 115, 25)); 求最小按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求最小按钮.setBorder(border1); 求最小按钮.setText(加入求最小值字段); 求最大按钮.setBounds(new Rectangle(159, 320, 115, 25)); 求最大按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求最大按钮.setBorder(border1); 求最大按钮.setText(加入求最大值字段); 列表框4滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框4滚动条.setBorder(border1); 列表框4滚动条.setBounds(new Rectangle(280, 240, 253, 189)); 列表框4.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setText(输入值); 请输入数据.setBounds(new Rectangle(338, 35, 42, 16)); 加入条件按钮.setBounds(new Rectangle(8, 25, 85, 28)); 加入条件按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 加入条件按钮.setBorder(border1); 加入条件按钮.setBorderPainted(true); 加入条件按钮.setText(添加条件); 清空按钮.setBounds(new Rectangle(98, 26, 79, 28)); 清空按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮.setBorder(border1); 清空按钮.setBorderPainted(true); 清空按钮.setText(清空条件); 左括号按钮.setBounds(new Rectangle(7, 27, 60, 25)); 左括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 左括号按钮.setBorder(border1); 左括号按钮.setBorderPainted(true); 左括号按钮.setText((); AND按钮.setText(AND); AND按钮.setBounds(new Rectangle(73, 27, 62, 25)); AND按钮.setFont(new java.awt.Font(Dialog, 0, 12)); AND按钮.setBorder(border1); AND按钮.setBorderPainted(true); OR按钮.setText(OR); OR按钮.setBounds(new Rectangle(141, 27, 59, 25)); OR按钮.setFont(new java.awt.Font(Dialog, 0, 12)); OR按钮.setBorder(border1); OR按钮.setBorderPainted(true); OR按钮.setRolloverEnabled(true); OR按钮.setSelected(false); 右括号按钮.setText()); 右括号按钮.setBounds(new Rectangle(266, 26, 52, 25)); 右括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 右括号按钮.setBorder(border1); 右括号按钮.setBorderPainted(true); 文本域滚动条.setBorder(border1); 文本域滚动条.setBounds(new Rectangle(13, 126, 520, 86)); 文本域.setFont(new java.awt.Font(Dialog, 0, 12)); 文本域.setText(); 字段列表.setFont(new java.awt.Font(Dialog, 0, 12)); 字段列表.setText(字段列表); 字段列表.setBounds(new Rectangle(16, 217, 77, 16)); 求记录条数.setText(加入求记录条数); 求记录条数.setBorder(border1); 求记录条数.setBounds(new Rectangle(159, 404, 116, 25)); 求记录条数.setFont(new java.awt.Font(Dialog, 0, 12)); 重复选项框.setFont(new java.awt.Font(Dialog, 0, 12)); 重复选项框.setText(允许重复); 重复选项框.setBounds(new Rectangle(280, 215, 83, 25)); 查询按钮.setBounds(new Rectangle(281, 533, 119, 25)); 查询按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 查询按钮.setBorder(border1); 查询按钮.setText(浏览查询结果); 退出按钮.setBounds(new Rectangle(409, 532, 118, 25)); 退出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 退出按钮.setBorder(border1); 退出按钮.setText(退出); NOT按钮.setBorderPainted(true); NOT按钮.setBorder(border1); NOT按钮.setFont(new java.awt.Font(Dialog, 0, 12)); NOT按钮.setBounds(new Rectangle(204, 27, 58, 25)); NOT按钮.setText(NOT); 排序按钮.setText(加入排序字段); 排序按钮.setBorder(border1); 排序按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 排序按钮.setBounds(new Rectangle(159, 462, 115, 25)); 排序按钮.setEnabled(false); 分组条件按钮.setText(加入分组条件); 分组条件按钮.setBorder(border1); 分组条件按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 分组条件按钮.setBounds(new Rectangle(159, 490, 115, 25)); 分组条件按钮.setEnabled(false); 分组字段.setBorder(border1); 分组字段.setText(); 分组字段.setEditable(false); 分组字段.setBounds(new Rectangle(281, 434, 252, 22)); 分组条件字段.setBorder(border1); 分组条件字段.setText(); 分组条件字段.setEditable(false); 分组条件字段.setBounds(new Rectangle(281, 490, 253, 22)); 排序条件.setBorder(border1); 排序条件.setText(); 排序条件.setEditable(false); 排序条件.setBounds(new Rectangle(281, 462, 253, 22)); 子面板.setFont(new java.awt.Font(Dialog, 0, 13)); 子面板.setBorder(titledBorder1); 子面板.setBounds(new Rectangle(12, 56, 184, 64)); 子面板.setLayout(null); 子面板2.setBorder(titledBorder2); 子面板2.setBounds(new Rectangle(208, 56, 325, 64)); 子面板2.setLayout(null); 递增.setFont(new java.awt.Font(Dialog, 0, 12)); 递增.setText(升序); 递增.setBounds(new Rectangle(359, 215, 52, 25)); 降序.setFont(new java.awt.Font(Dialog, 0, 12)); 降序.setText(降序); 降序.setBounds(new Rectangle(412, 215, 52, 25)); 全选字段.setFont(new java.awt.Font(Dialog, 0, 12)); 全选字段.setText(全选字段); 全选字段.setBounds(new Rectangle(13, 533, 79, 25)); 允许分组.setFont(new java.awt.Font(Dialog, 0, 12)); 允许分组.setText(允许分组); 允许分组.setBounds(new Rectangle(89, 532, 77, 25)); 允许排序.setFont(new java.awt.Font(Dialog, 0, 12)); 允许排序.setText(允许排序); 允许排序.setBounds(new Rectangle(166, 531, 83, 25)); 清空按钮2.setBounds(new Rectangle(464, 214, 68, 24)); 清空按钮2.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮2.setBorder(border1); 清空按钮2.setText(清空); 面板.setBackground(Color.lightGray); 选数据值.setFont(new java.awt.Font(Dialog, 0, 12)); 选数据值.setAlignmentY( (float) 0.5); 选数据值.setBorder(BorderFactory.createLineBorder(Color.black)); 选数据值.setDoubleBuffered(false); 选数据值.setActionCommand(comboBoxChanged); 选数据值.setEditable(true); 选数据值.setBounds(new Rectangle(384, 28, 147, 22)); 面板.add(查询按钮, null); 面板.add(列表框滚动条, null); 面板.add(移出按钮, null); 面板.add(求平均按钮, null); 面板.add(求最大按钮, null); 面板.add(求最小按钮, null); 面板.add(求和按钮, null); 面板.add(求记录条数, null); 面板.add(分组按钮, null); 面板.add(排序按钮, null); 面板.add(列表框4滚动条, null); 面板.add(重复选项框, null); 面板.add(分组字段, null); 面板.add(排序条件, null); 面板.add(退出按钮, null); 面板.add(文本域滚动条, null); 面板.add(分组条件按钮, null); 面板.add(分组条件字段, null); 子面板.add(加入条件按钮, null); 子面板.add(清空按钮, null); 面板.add(子面板2, null); 面板.add(子面板, null); 子面板2.add(左括号按钮, null); 子面板2.add(右括号按钮, null); 子面板2.add(AND按钮, null); 子面板2.add(OR按钮, null); 子面板2.add(NOT按钮, null); 面板.add(组合框5, null); 面板.add(关系符框, null); 面板.add(递增, null); 面板.add(全选字段, null); 面板.add(降序, null); 面板.add(允许分组, null); 面板.add(允许排序, null); 面板.add(清空按钮2, null); 面板.add(移进按钮, null); 面板.add(选操作符, null); 面板.add(选择字段名, null); 面板.add(字段列表, null); 面板.add(选数据值, null); 面板.add(请输入数据, null); for (int i = 0; i 关系符.length; i++) { 关系符框.addItem(关系符 ); } if (关系符框.getItemCount() 0) { 关系符框.setSelectedIndex(0); } for(int i=0; i列名.length; i++) { 组合框5.addItem(列名 ); } if(组合框5.getItemCount()0) { 组合框5.setSelectedIndex(0); } 列表框3.setModel(fModel); 列表框4.setModel(dModel); DefaultListModel dlm=(DefaultListModel)列表框3.getModel(); for(int i=0; i列名.length; i++) { dlm.addElement(列名 ); } 列表框3.setModel(dlm); 按钮组.add(递增); 按钮组.add(降序); 加入条件按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String)组合框5.getSelectedItem(); String .lastIndexOf(.)0)(s7 .lastIndexOf(.+s1)=0)){ s1=s7 ; break; } else if (s7 .lastIndexOf(s1)=0){ s1=s7 ; break; } } String s2 = (String)关系符框.getSelectedItem(); for(int i=0; i关系符.length; i++) { if(s2==关系符 ) { s2=关系符 ; } } String s3 = ; if ((main1.图形数据类型.lastIndexOf(列数据类型 ))=0){ JOptionPane.showMessageDialog(面板,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); } else if(main1.数字数据类型.lastIndexOf(,+列数据类型 +,)=0){ if(关系符框.getSelectedItem().equals(包含)||关系符框.getSelectedItem().equals(不包含)){ JOptionPane.showMessageDialog(面板,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); }else{ s3 = (String)选数据值.getEditor().getItem(); String s=s1+s2+s3; 文本域.append(s); } } else if(main1.文本数据类型.lastIndexOf(列数据类型 )=0){ if(关系符框.getSelectedItem().equals(包含)||关系符框.getSelectedItem().equals(不包含)){ s3='%+(String)选数据值.getEditor().getItem()+%'; String s=s1+s2+s3; 文本域.append(s); }else{ JOptionPane.showMessageDialog(面板,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); } }else{ if(关系符框.getSelectedItem().equals(包含)||关系符框.getSelectedItem().equals(不包含)){ s3='%+(String)选数据值.getEditor().getItem()+%'; String s=s1+s2+s3; 文本域.append(s); }else{ s3='+(String)选数据值.getEditor().getItem()+'; String s=s1+s2+s3; 文本域.append(s); } } } }); 清空按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; 文本域.setText(s); } }); 左括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; 文本域.append(s); } }); AND按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; 文本域.append(s); } }); OR按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; 文本域.append(s); } }); NOT按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; 文本域.append(s); } }); 右括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); 文本域.append(s); } }); 移进按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel)列表框4.getModel(); dlm.addElement(列表框3.getSelectedValue()); 列表框4.setModel(dlm); } }); 移出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel)列表框4.getModel(); dlm.removeElement(列表框4.getSelectedValue()); 列表框4.setModel(dlm); } }); 求平均按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m=列表框3.getSelectedIndex(); String .lastIndexOf(.)0)(s7 .lastIndexOf(.+列表框3.getSelectedValue())=0)){ s8=s7 ; break; } else if (s7 .lastIndexOf(列表框3.getSelectedValue()+)=0){ s8=s7 ; break; } } if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (列数据类型 .indexOf(money)=0)){ DefaultListModel dlm = (DefaultListModel)列表框4.getModel(); dlm.addElement(AVG(+s8+)+ AS +'+平均+列表框3.getSelectedValue()+'); DefaultListModel dlm1=(DefaultListModel)列表框3.getModel(); dlm1.addElement(AVG(+s8+)); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板,非数值型列不能求平均值!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求最大按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m=列表框3.getSelectedIndex(); String .lastIndexOf(.)0)(s7 .lastIndexOf(.+列表框3.getSelectedValue())=0)){ s8=s7 ; break; } else if (s7 .lastIndexOf(列表框3.getSelectedValue()+)=0){ s8=s7 ; break; } } if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.文字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.时间数据类型.indexOf(, + 列数据类型 + ,) = 0)){ DefaultListModel dlm = (DefaultListModel)列表框4.getModel(); dlm.addElement(MAX(+s8+)+ AS +'+最大+列表框3.getSelectedValue()+'); DefaultListModel dlm1=(DefaultListModel)列表框3.getModel(); dlm1.addElement(MAX(+s8+)); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板,非数值型列不能求最大值!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求最小按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m=列表框3.getSelectedIndex(); String .lastIndexOf(.)0)(s7 .lastIndexOf(.+列表框3.getSelectedValue())=0)){ s8=s7 ; break; } else if (s7 .lastIndexOf(列表框3.getSelectedValue()+)=0){ s8=s7 ; break; } } if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.文字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.时间数据类型.indexOf(, + 列数据类型 + ,) = 0)){ DefaultListModel dlm = (DefaultListModel)列表框4.getModel(); dlm.addElement(MIN(+s8+)+ AS +'+最小+列表框3.getSelectedValue()+'); DefaultListModel dlm1=(DefaultListModel)列表框3.getModel(); dlm1.addElement(MIN(+s8+)); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板,非数值型列不能求最小值!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求和按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m=列表框3.getSelectedIndex(); String .lastIndexOf(.)0)(s7 .lastIndexOf(.+列表框3.getSelectedValue())=0)){ s8=s7 ; break; } else if (s7 .lastIndexOf(列表框3.getSelectedValue()+)=0){ s8=s7 ; break; } } if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (列数据类型 .indexOf(money)=0)){ DefaultListModel dlm = (DefaultListModel)列表框4.getModel(); dlm.addElement(SUM(+s8+)+ AS +'+列表框3.getSelectedValue()+总和+'); DefaultListModel dlm1=(DefaultListModel)列表框3.getModel(); dlm1.addElement(SUM(+s8+)); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板,非数值型列不能求总和!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求记录条数.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String .lastIndexOf(.)0)(s7 .lastIndexOf(.+列表框3.getSelectedValue())=0)){ s8=s7 ; break; } else if (s7 .lastIndexOf(列表框3.getSelectedValue()+)=0){ s8=s7 ; break; } } DefaultListModel dlm = (DefaultListModel)列表框4.getModel(); dlm.addElement(COUNT(+s8+)+ AS +'+记录条数+'); DefaultListModel dlm1=(DefaultListModel)列表框3.getModel(); dlm1.addElement(COUNT(+s8+)); 列表框4.setModel(dlm); } }); 分组按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String .lastIndexOf(.)0)(s7 .lastIndexOf(.+列表框3.getSelectedValue())=0)){ s8=s7 ; break; } else if (s7 .lastIndexOf(列表框3.getSelectedValue()+)=0){ s8=s7 ; break; } } if ((分组字段.getText().length()0)(分组字段.getText().lastIndexOf(+s8)0)) 分组字段.setText(分组字段.getText()+,+s8+ ); else if (分组字段.getText().length()1) 分组字段.setText(GROUP BY +s8+ ); } }); 排序按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String .lastIndexOf(.)0)(s7 .lastIndexOf(.+列表框3.getSelectedValue())=0)){ s8=s7 ; break; } else if (s7 .lastIndexOf(列表框3.getSelectedValue()+)=0){ s8=s7 ; break; } } if ((排序条件.getText().length()0)(排序条件.getText().lastIndexOf(+s8)0)) 排序条件.setText(排序条件.getText()+,+s8); else if (排序条件.getText().length()1) 排序条件.setText(ORDER BY +s8); } }); 分组条件按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String .lastIndexOf(.)0)(s7 .lastIndexOf(.+列表框3.getSelectedValue())=0)){ s8=s7 ; break; } else if (s7 .lastIndexOf(列表框3.getSelectedValue()+)=0){ s8=s7 ; break; } } if ((分组条件字段.getText().length()0)(分组条件字段.getText().lastIndexOf(s8)0)) 分组条件字段.setText(分组条件字段.getText()+,+s8); else if (分组条件字段.getText().length()1) 分组条件字段.setText(HAVING +s8); } }); 全选字段.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(全选字段.isSelected()) { DefaultListModel dlm = (DefaultListModel)列表框4.getModel(); dlm.removeAllElements(); String .lastIndexOf(.)0)(s7 .lastIndexOf(.+列名 )=0)){ dlm.addElement(s7 ); break; } else if (s7 .lastIndexOf(列名 +)=0){ dlm.addElement(s7 ); break; } } } 列表框4.setModel(dlm); } } }); 允许分组.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(允许分组.isSelected()) { 分组按钮.setEnabled(true); 分组条件按钮.setEnabled(true); 分组条件字段.setEditable(true); 分组字段.setEditable(true); 分组条件字段.setEditable(true); } else { 分组按钮.setEnabled(false); 分组条件按钮.setEnabled(false); 分组条件字段.setEditable(false); 分组字段.setText(); 分组条件字段.setText(); } } }); 允许排序.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(允许排序.isSelected()) { 排序按钮.setEnabled(true); 排序条件.setEnabled(true); 排序条件.setEditable(true); } else { 排序按钮.setEnabled(false); 排序条件.setText(); } } }); 清空按钮2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel)列表框4.getModel(); dlm.removeAllElements(); 列表框4.setModel(dlm); 分组字段.setText(); 排序条件.setText(); 分组条件字段.setText(); } }); 递增.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { String s = 排序条件.getText(); if(s.indexOf( ASC )!=-1) { }else if(s.indexOf( DESC )!=-1) { s = s.substring(0, s.indexOf( DESC )) + ASC ; }else { s = s + ASC ; } 排序条件.setText(s); } }); 降序.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { String s = 排序条件.getText(); if(s.indexOf( DESC )!=-1) { //排序条件.setText(s); }else if(s.indexOf( ASC )!=-1) { s = s.substring(0, s.indexOf( ASC )) + DESC ; }else { s = s + DESC ; } 排序条件.setText(s); } }); 查询按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; String 列名1; // 为了不在查询一次后再次查询时列名的值改变,需要建立一个新的列名的字段 try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列名1 = new String ; // 定义列名数组 列数据类型 = new String ; // 定义列数据类型数组 列数据宽度 = new int ; // 定义列数据宽度数组 for (int i = 0; i 列数; i++) { 列名1 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(列数据类型 ) = 0) // 过大数据不适宜用表格显示 列数据宽度 = 30; else if (列数据宽度 30) // 过大数据不适宜用表格显示 列数据宽度 = 30; if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); b++; } int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800, 600, 列名1, 列数据宽度, 表格数据, 列数据类型); } }); 退出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); //窗口标题 frame1.setBounds(0, 0,窗口宽, 窗口高); //主程序窗口位置大小 frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); //关闭布局管理器 frame1.getContentPane().add(面板, null); //安装面板 frame1.setVisible(true); //安装窗口 } } 23.源码23,部件程序,多数据表可变换标签、可输出聚集函数数据的组合查询。 /* * 程序文件名:dataQuery14.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:多数据表可变换标签、可输出聚集函数数据的组合查询。 * 本程序为部件程序,由系统控制程序调用执行。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery14 extends JFrame { static dataQuery14 frame1 = new dataQuery14(); static String 关系符 = { { , 大于 }, { , 小于 }, { =, 等于 }, { =, 大于等于 }, { =, 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static String curTableName = ; private static JPanel 面板 = new JPanel(false); // 定义面板 private static int 窗口宽 = 570, 窗口高 = 640; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String 表名; static String 字典表名; static String 表名表; static String 列数据类型; static int 列数据类型0; static int 字段名串; static JComboBox 选数据值 = new JComboBox(); static JButton 加入条件按钮 = new JButton(); static JComboBox 组合框5 = new JComboBox(); static JComboBox 关系符框 = new JComboBox(); static JTextArea 文本域 = new JTextArea(); static JTextField 分组条件字段 = new JTextField();// 分组条件文本框 static JTextField 分组字段 = new JTextField(100);// 分组字段文本框 static JTextField 排序条件 = new JTextField();// 排序条件 static JCheckBox 全选字段 = new JCheckBox();// 全选字段 static JCheckBox 允许分组 = new JCheckBox();// 允许分组 static JCheckBox 允许排序 = new JCheckBox();// 允许排序 static JCheckBox 重复选项框 = new JCheckBox();// 永许重复选项框 static JButton 分组按钮 = new JButton();// 分组按钮 static JButton 排序按钮 = new JButton();// 排序按钮 static JButton 分组条件按钮 = new JButton();// 分组条件按钮 static JRadioButton 递增 = new JRadioButton();// 递增 static JRadioButton 降序 = new JRadioButton();// 降序 public static void means(String = ; 关系符 = 大于; 关系符 = ; 关系符 = 小于; 关系符 = = ; 关系符 = 等于; 关系符 = = ; 关系符 = 大于等于; 关系符 = = ; 关系符 = 小于等于; 关系符 = ; 关系符 = 不等于; 关系符 = like ; 关系符 = 包含; 关系符 = not like ; 关系符 = 不包含; try { int m1 = Integer.parseInt(parameter ); int m2 = Integer.parseInt(parameter ); if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 表名表 = parameter ; 表名 = parameter ; 连接条件 = parameter ; 字段名字串 = parameter ; 关键字名 = parameter ; 关键字名1 = parameter ; if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); String .length() 0) { String .split(,); 列名 = new String ; 列名0 = new String ; // 201505修改 for (int i = 0; i 字段号表.length; i++) { 列名 = s6 )]; 列名 = 列名 ; 列名0 = 列名 ; // 201505修改 列名0 = 列名 ; // 201505修改 if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; } else { 列名 = new String ; 列名0 = new String ; // 201505修改 for (int i = 0; i s6.length; i++) { 列名 = s6 ; 列名 = 列名 ; 列名0 = 列名 ; // 201505修改 列名0 = 列名 ; // 201505修改 if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; s2 = * ; } 字段名串 = 字段名字串.split(,); 列名 = new String = 字段名字串.split(,); 列名 = 字段名字串.split(,); 表名表 = parameter ; String s11 = 表名; if (表名.indexOf(,) 0) { String ; } 字典表名 = ; String .lastIndexOf(s11 + 字典表) = 0) 字典表名 = t1 ; } if (字典表名.length() 0) { try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + 字典表名; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int 列数0 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); // 记录数 String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); // 字段名 s15 = rs.getString(2).trim(); // 标签名 for (int j = 0; j 列名 .length; j++) { if (列名 .trim().equalsIgnoreCase(s14.trim())) { 列名 = s15; break; } else if ((列名 .trim() + ,).indexOf(. + s14 + ,) 0) { 列名 = 列名 .replace(s14, s15); break; } } } rs.close(); // 关闭查询结果集 dbConn.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } String z ; try { dbConn = main1.getConn();// 连接数据库 sta3 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (连接条件.trim().length() 0) { z = 表名.split(,); s1 = select + 字段名字串 + from + 表名 + where + 连接条件; } else s1 = select + 字段名字串 + from + 表名; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列数据类型 = new String ; // 定义列数据类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i = 0; i 列数; i++) { 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 dbConn.close(); } catch (Exception e) { e.printStackTrace(); } final JList 列表框3 = new JList(); final JList 列表框4 = new JList(); JLabel 选择字段名 = new JLabel();// 选择字段名标签 JLabel 选操作符 = new JLabel();// 操作符号标签 JScrollPane 列表框滚动条 = new JScrollPane(列表框3);// 滚动条 JButton 移出按钮 = new JButton();// 移出按钮 JButton 求平均按钮 = new JButton();// 求平均按钮 JButton 移进按钮 = new JButton();// 移进按钮 JButton 求和按钮 = new JButton();// 求和按钮 JButton 求最小按钮 = new JButton();// 求最小按钮 JButton 求最大按钮 = new JButton();// 求最大按钮 JScrollPane 列表框4滚动条 = new JScrollPane(列表框4);// 滚动条4 Border border1;// 矩形线框 JLabel 请输入数据 = new JLabel();// 输入值标签 JButton 清空按钮 = new JButton();// 清空按钮 JButton 左括号按钮 = new JButton();// 左括号按钮 JButton AND按钮 = new JButton();// AND按钮 JButton OR按钮 = new JButton();// OR按钮 JButton 右括号按钮 = new JButton();// 右括号按钮 JScrollPane 文本域滚动条 = new JScrollPane(文本域);// 文本域滚动条 JLabel 字段列表 = new JLabel();// 字段列表标签 JButton 求记录条数 = new JButton();// 加入求记录条数 JButton 查询按钮 = new JButton();// 浏览查询结果按钮 JButton 退出按钮 = new JButton();// 退出按钮 ButtonGroup 按钮组 = new ButtonGroup();// 按钮组 JButton NOT按钮 = new JButton();// NOT按钮 JPanel 子面板 = new JPanel();// 子面板 Border border2; TitledBorder titledBorder1; JPanel 子面板2 = new JPanel();// 子面板2 Border border3; TitledBorder titledBorder2; JButton 清空按钮2 = new JButton();// 清空按钮2 border1 = BorderFactory.createEtchedBorder( UIManager.getColor(InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); 选择字段名.setFont(new java.awt.Font(Dialog, 0, 12)); 选择字段名.setPreferredSize(new Dimension(57, 16)); 选择字段名.setRequestFocusEnabled(true); 选择字段名.setText(选择字段名); 选择字段名.setBounds(new Rectangle(16, 13, 82, 16)); 面板.setLayout(null); 面板.setLayout(null); 面板.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); 组合框5.setFont(new java.awt.Font(Dialog, 0, 12)); 组合框5.setBorder(BorderFactory.createLineBorder(Color.black)); 组合框5.setBounds(new Rectangle(14, 29, 118, 22)); 关系符框.setFont(new java.awt.Font(Dialog, 0, 12)); 关系符框.setBorder(BorderFactory.createLineBorder(Color.black)); 关系符框.setBounds(new Rectangle(162, 29, 149, 22)); 选操作符.setFont(new java.awt.Font(Dialog, 0, 12)); 选操作符.setText(选择关系符); 选操作符.setBounds(new Rectangle(164, 13, 81, 16)); 列表框滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框滚动条.setBorder(border1); 列表框滚动条.setBounds(new Rectangle(13, 238, 138, 280)); 列表框3.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框3.setBorder(border1); 列表框3.setBounds(new Rectangle(13, 238, 138, 250)); 移出按钮.setBounds(new Rectangle(159, 266, 114, 25)); 移出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移出按钮.setBorder(border1); 移出按钮.setText(《移出字段); 求平均按钮.setBounds(new Rectangle(159, 293, 114, 25)); 求平均按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求平均按钮.setBorder(border1); 求平均按钮.setText(加入求平均值字段); 分组按钮.setBounds(new Rectangle(159, 433, 116, 25)); 分组按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 分组按钮.setBorder(border1); 分组按钮.setText(加入分组字段); 分组按钮.setEnabled(false); 移进按钮.setBounds(new Rectangle(160, 239, 114, 25)); 移进按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移进按钮.setBorder(border1); 移进按钮.setText(移进字段》); 求和按钮.setBounds(new Rectangle(159, 375, 116, 25)); 求和按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求和按钮.setBorder(border1); 求和按钮.setText(加入求和字段); 求最小按钮.setBounds(new Rectangle(159, 347, 115, 25)); 求最小按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求最小按钮.setBorder(border1); 求最小按钮.setText(加入求最小值字段); 求最大按钮.setBounds(new Rectangle(159, 320, 115, 25)); 求最大按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求最大按钮.setBorder(border1); 求最大按钮.setText(加入求最大值字段); 列表框4滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框4滚动条.setBorder(border1); 列表框4滚动条.setBounds(new Rectangle(280, 240, 253, 189)); 列表框4.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setText(输入值); 请输入数据.setBounds(new Rectangle(338, 35, 42, 16)); 加入条件按钮.setBounds(new Rectangle(8, 25, 85, 28)); 加入条件按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 加入条件按钮.setBorder(border1); 加入条件按钮.setBorderPainted(true); 加入条件按钮.setText(添加条件); 清空按钮.setBounds(new Rectangle(98, 26, 79, 28)); 清空按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮.setBorder(border1); 清空按钮.setBorderPainted(true); 清空按钮.setText(清空条件); 左括号按钮.setBounds(new Rectangle(7, 27, 60, 25)); 左括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 左括号按钮.setBorder(border1); 左括号按钮.setBorderPainted(true); 左括号按钮.setText((); AND按钮.setText(AND); AND按钮.setBounds(new Rectangle(73, 27, 62, 25)); AND按钮.setFont(new java.awt.Font(Dialog, 0, 12)); AND按钮.setBorder(border1); AND按钮.setBorderPainted(true); OR按钮.setText(OR); OR按钮.setBounds(new Rectangle(141, 27, 59, 25)); OR按钮.setFont(new java.awt.Font(Dialog, 0, 12)); OR按钮.setBorder(border1); OR按钮.setBorderPainted(true); OR按钮.setRolloverEnabled(true); OR按钮.setSelected(false); 右括号按钮.setText()); 右括号按钮.setBounds(new Rectangle(266, 26, 52, 25)); 右括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 右括号按钮.setBorder(border1); 右括号按钮.setBorderPainted(true); 文本域滚动条.setBorder(border1); 文本域滚动条.setBounds(new Rectangle(13, 126, 520, 86)); 文本域.setFont(new java.awt.Font(Dialog, 0, 12)); 文本域.setText(); 字段列表.setFont(new java.awt.Font(Dialog, 0, 12)); 字段列表.setText(字段列表); 字段列表.setBounds(new Rectangle(16, 217, 77, 16)); 求记录条数.setText(加入求记录条数); 求记录条数.setBorder(border1); 求记录条数.setBounds(new Rectangle(159, 404, 116, 25)); 求记录条数.setFont(new java.awt.Font(Dialog, 0, 12)); 重复选项框.setFont(new java.awt.Font(Dialog, 0, 12)); 重复选项框.setText(允许重复); 重复选项框.setBounds(new Rectangle(280, 215, 83, 25)); 查询按钮.setBounds(new Rectangle(281, 533, 119, 25)); 查询按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 查询按钮.setBorder(border1); 查询按钮.setText(浏览查询结果); 退出按钮.setBounds(new Rectangle(409, 532, 118, 25)); 退出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 退出按钮.setBorder(border1); 退出按钮.setText(退出); NOT按钮.setBorderPainted(true); NOT按钮.setBorder(border1); NOT按钮.setFont(new java.awt.Font(Dialog, 0, 12)); NOT按钮.setBounds(new Rectangle(204, 27, 58, 25)); NOT按钮.setText(NOT); 排序按钮.setText(加入排序字段); 排序按钮.setBorder(border1); 排序按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 排序按钮.setBounds(new Rectangle(159, 462, 115, 25)); 排序按钮.setEnabled(false); 分组条件按钮.setText(加入分组条件); 分组条件按钮.setBorder(border1); 分组条件按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 分组条件按钮.setBounds(new Rectangle(159, 490, 115, 25)); 分组条件按钮.setEnabled(false); 分组字段.setBorder(border1); 分组字段.setText(); 分组字段.setEditable(false); 分组字段.setBounds(new Rectangle(281, 434, 252, 22)); 分组条件字段.setBorder(border1); 分组条件字段.setText(); 分组条件字段.setEditable(false); 分组条件字段.setBounds(new Rectangle(281, 490, 253, 22)); 排序条件.setBorder(border1); 排序条件.setText(); 排序条件.setEditable(false); 排序条件.setBounds(new Rectangle(281, 462, 253, 22)); 子面板.setFont(new java.awt.Font(Dialog, 0, 13)); 子面板.setBorder(titledBorder1); 子面板.setBounds(new Rectangle(12, 56, 184, 64)); 子面板.setLayout(null); 子面板2.setBorder(titledBorder2); 子面板2.setBounds(new Rectangle(208, 56, 325, 64)); 子面板2.setLayout(null); 递增.setFont(new java.awt.Font(Dialog, 0, 12)); 递增.setText(升序); 递增.setBounds(new Rectangle(359, 215, 52, 25)); 降序.setFont(new java.awt.Font(Dialog, 0, 12)); 降序.setText(降序); 降序.setBounds(new Rectangle(412, 215, 52, 25)); 全选字段.setFont(new java.awt.Font(Dialog, 0, 12)); 全选字段.setText(全选字段); 全选字段.setBounds(new Rectangle(13, 533, 79, 25)); 允许分组.setFont(new java.awt.Font(Dialog, 0, 12)); 允许分组.setText(允许分组); 允许分组.setBounds(new Rectangle(89, 532, 77, 25)); 允许排序.setFont(new java.awt.Font(Dialog, 0, 12)); 允许排序.setText(允许排序); 允许排序.setBounds(new Rectangle(166, 531, 83, 25)); 清空按钮2.setBounds(new Rectangle(464, 214, 68, 24)); 清空按钮2.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮2.setBorder(border1); 清空按钮2.setText(清空); 面板.setBackground(Color.lightGray); 选数据值.setFont(new java.awt.Font(Dialog, 0, 12)); 选数据值.setAlignmentY((float) 0.5); 选数据值.setBorder(BorderFactory.createLineBorder(Color.black)); 选数据值.setDoubleBuffered(false); 选数据值.setActionCommand(comboBoxChanged); 选数据值.setEditable(true); 选数据值.setBounds(new Rectangle(384, 28, 147, 22)); 面板.add(查询按钮, null); 面板.add(列表框滚动条, null); 面板.add(移出按钮, null); 面板.add(求平均按钮, null); 面板.add(求最大按钮, null); 面板.add(求最小按钮, null); 面板.add(求和按钮, null); 面板.add(求记录条数, null); 面板.add(分组按钮, null); 面板.add(排序按钮, null); 面板.add(列表框4滚动条, null); 面板.add(重复选项框, null); 面板.add(分组字段, null); 面板.add(排序条件, null); 面板.add(退出按钮, null); 面板.add(文本域滚动条, null); 面板.add(分组条件按钮, null); 面板.add(分组条件字段, null); 子面板.add(加入条件按钮, null); 子面板.add(清空按钮, null); 面板.add(子面板2, null); 面板.add(子面板, null); 子面板2.add(左括号按钮, null); 子面板2.add(右括号按钮, null); 子面板2.add(AND按钮, null); 子面板2.add(OR按钮, null); 子面板2.add(NOT按钮, null); 面板.add(组合框5, null); 面板.add(关系符框, null); 面板.add(递增, null); 面板.add(全选字段, null); 面板.add(降序, null); 面板.add(允许分组, null); 面板.add(允许排序, null); 面板.add(清空按钮2, null); 面板.add(移进按钮, null); 面板.add(选操作符, null); 面板.add(选择字段名, null); 面板.add(字段列表, null); 面板.add(选数据值, null); 面板.add(请输入数据, null); for (int i = 0; i 关系符.length; i++) { 关系符框.addItem(关系符 ); } if (关系符框.getItemCount() 0) { 关系符框.setSelectedIndex(0); } for (int i = 0; i 列名 .length; i++) { 组合框5.addItem(列名 ); } if (组合框5.getItemCount() 0) { 组合框5.setSelectedIndex(0); } 列表框3.setModel(fModel); 列表框4.setModel(dModel); DefaultListModel dlm = (DefaultListModel) 列表框3.getModel(); for (int i = 0; i 列名 .length; i++) { dlm.addElement(列名 ); } 列表框3.setModel(dlm); 按钮组.add(递增); 按钮组.add(降序); 加入条件按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String) 组合框5.getSelectedItem(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + s1) = 0)) { s1 = 列名 ; break; } else if (s7 .lastIndexOf(s1) = 0) { s1 = 列名 ; break; } else if ((列名 .lastIndexOf(.) 0) (列名 .lastIndexOf(. + s1) = 0)) { s1 = 列名 ; break; } else if (列名 .lastIndexOf(s1) = 0) { s1 = 列名 ; break; } } String s2 = (String) 关系符框.getSelectedItem(); for (int i = 0; i 关系符.length; i++) { if (s2 == 关系符 ) { s2 = 关系符 ; } } String s3 = ; if ((main1.图形数据类型.lastIndexOf(列数据类型 )) = 0) { JOptionPane.showMessageDialog(面板, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); } else if ((main1.数字数据类型 + main1.图形数据类型).lastIndexOf(, + 列数据类型 + ,) = 0) if (关系符框.getSelectedItem().toString().trim() .equalsIgnoreCase(包含) || 关系符框.getSelectedItem().toString().trim() .equalsIgnoreCase(不包含)) { JOptionPane.showMessageDialog(面板, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); } else { s3 = (String) 选数据值.getEditor().getItem(); String s = s1 + s2 + s3; 文本域.append(s); } else if (main1.文本数据类型.lastIndexOf(列数据类型 ) = 0) { if (关系符框.getSelectedItem().toString().trim() .equalsIgnoreCase(包含) || 关系符框.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { s3 = '% + (String) 选数据值.getEditor().getItem() + %'; String s = s1 + s2 + s3; 文本域.append(s); } else { JOptionPane.showMessageDialog(面板, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); } } else { if (关系符框.getSelectedItem().toString() .equalsIgnoreCase(包含) || 关系符框.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { s3 = '% + (String) 选数据值.getEditor().getItem() + %'; String s = s1 + s2 + s3; 文本域.append(s); } else { s3 = ' + (String) 选数据值.getEditor().getItem() + '; String s = s1 + s2 + s3; 文本域.append(s); } } } }); 清空按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; 文本域.setText(s); } }); 左括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; 文本域.append(s); } }); AND按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; 文本域.append(s); } }); OR按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; 文本域.append(s); } }); NOT按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; 文本域.append(s); } }); 右括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); 文本域.append(s); } }); 移进按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s0 = ; s0 = 列表框3.getSelectedValue() + ; for (int i = 0; i 列数; i++) { if (列名 .trim().equalsIgnoreCase(s0.trim())) { s0 = 列名 ; break; } } DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(s0); 列表框4.setModel(dlm); } }); 移出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.removeElement(列表框4.getSelectedValue()); 列表框4.setModel(dlm); } }); 求平均按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = 列表框3.getSelectedIndex(); String 列名3 = 列表框3.getSelectedValue() + ; String ; if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (列数据类型 .indexOf(money)=0)){ DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(AVG( + s8 + ) + AS + ' + 平均 + 列表框3.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(AVG( + s8 + )); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板, 非数值型列不能求平均值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求最大按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = 列表框3.getSelectedIndex(); String 列名3 = 列表框3.getSelectedValue() + ; String ; if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.文字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.时间数据类型.indexOf(, + 列数据类型 + ,) = 0)){ DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(MAX( + s8 + ) + AS + ' + 最大 + 列表框3.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(MAX( + s8 + )); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板, 非数值型列不能求最大值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求最小按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = 列表框3.getSelectedIndex(); String 列名3 = 列表框3.getSelectedValue() + ; String ; if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.文字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (main1.时间数据类型.indexOf(, + 列数据类型 + ,) = 0)){ DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(MIN( + s8 + ) + AS + ' + 最小 + 列表框3.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(MIN( + s8 + )); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板, 非数值型列不能求最小值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求和按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = 列表框3.getSelectedIndex(); String 列名3 = 列表框3.getSelectedValue() + ; String ; if ((main1.数字数据类型.indexOf(, + 列数据类型 + ,) = 0)|| (列数据类型 .indexOf(money)=0)){ DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(SUM( + s8 + ) + AS + ' + 列表框3.getSelectedValue() + 总和 + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(SUM( + s8 + )); 列表框4.setModel(dlm); } else { JOptionPane.showMessageDialog(面板, 非数值型列不能求总和!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求记录条数.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == 列表框3.getSelectedValue()) { 列名3 = 列名 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + 列名3) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(列名3 + ) = 0) { s8 = s7 ; break; } } DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.addElement(COUNT( + s8 + ) + AS + ' + 记录条数 + '); DefaultListModel dlm1 = (DefaultListModel) 列表框3.getModel(); dlm1.addElement(COUNT( + s8 + )); 列表框4.setModel(dlm); } }); 分组按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == 列表框3.getSelectedValue()) { 列名3 = 列名 ; break; } } s8 = 列名3; if ((分组字段.getText().length() 0) (分组字段.getText().lastIndexOf( + s8) 0)) 分组字段.setText(分组字段.getText() + , + s8 + ); else if (分组字段.getText().length() 1) 分组字段.setText(GROUP BY + s8 + ); } }); 排序按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == 列表框3.getSelectedValue()) { 列名3 = 列名 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + 列名3) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(列名3 + ) = 0) { s8 = s7 ; break; } } if ((排序条件.getText().length() 0) (排序条件.getText().lastIndexOf( + s8) 0)) 排序条件.setText(排序条件.getText() + , + s8); else if (排序条件.getText().length() 1) 排序条件.setText(ORDER BY + s8); } }); 分组条件按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s7 = 字段名字串.split(,); for (int i = 0; i 列名 .length; i++) { for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + 列名 ) = 0)) { dlm.addElement(s7 ); break; } else if (s7 .lastIndexOf(列名 + ) = 0) { dlm.addElement(s7 ); break; } } } 列表框4.setModel(dlm); } } }); 允许分组.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (允许分组.isSelected()) { 分组按钮.setEnabled(true); 分组条件按钮.setEnabled(true); 分组条件字段.setEditable(true); 分组字段.setEditable(true); 分组条件字段.setEditable(true); } else { 分组按钮.setEnabled(false); 分组条件按钮.setEnabled(false); 分组条件字段.setEditable(false); 分组字段.setText(); 分组条件字段.setText(); } } }); 允许排序.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (允许排序.isSelected()) { 排序按钮.setEnabled(true); 排序条件.setEnabled(true); 排序条件.setEditable(true); } else { 排序按钮.setEnabled(false); 排序条件.setText(); } } }); 清空按钮2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); dlm.removeAllElements(); 列表框4.setModel(dlm); 分组字段.setText(); 排序条件.setText(); 分组条件字段.setText(); } }); 重复选项框.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); 递增.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { String s = 排序条件.getText(); if (s.indexOf( ASC ) != -1) { } else if (s.indexOf( DESC ) != -1) { s = s.substring(0, s.indexOf( DESC )) + ASC ; } else { s = s + ASC ; } 排序条件.setText(s); } }); 降序.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { String s = 排序条件.getText(); if (s.indexOf( DESC ) != -1) { // 排序条件.setText(s); } else if (s.indexOf( ASC ) != -1) { s = s.substring(0, s.indexOf( ASC )) + DESC ; } else { s = s + DESC ; } 排序条件.setText(s); } }); 查询按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; int kl = 0; DefaultListModel dlm = (DefaultListModel) 列表框4.getModel(); int m = dlm.getSize(); for (int i = 0; i m; i++) { s1 = s1 + dlm.elementAt(i) + ,; } if (s1.length() 1) s1 = 字段名字串 + ,; s1 = s1.substring(0, s1.length() - 1); s1 = SELECT + s1; s2 = FROM + 表名; s3 = ; if (连接条件.trim().length() 0) { s3 = WHERE + 连接条件; kl = 1; } if ((文本域.getText().length() 0) (kl == 1)) s3 = s3 + AND + 文本域.getText(); else if (文本域.getText().length() 0) { s3 = WHERE + 文本域.getText(); kl = 1; } s4 = 分组字段.getText(); if (s4.length() == 0) { s4 = ; } else { s4 = + s4.substring(0, s4.length() - 1); } s5 = + 分组条件字段.getText(); s6 = + 排序条件.getText(); s = s1 + s2; if (s3.length() 0) s = s + s3; if (s4.length() 0) s = s + s4; if (s5.length() 0) s = s + s5; if (s6.length() 0) s = s + s6; try { dbConn = main1.getConn();// 连接数据库 sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s); rsmd3 = rs.getMetaData(); 列数0 = rsmd3.getColumnCount(); // 获取列数 列名0 = new String ; // 定义列名数组 列数据类型0 = new String ; // 定义列数据类型数组 列数据宽度0 = new int ; // 定义列数据宽度数组 for (int i = 0; i 列数0; i++) { 列名0 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 列名0 = 列名0 ; 列数据类型0 = rsmd3.getColumnTypeName(i + 1); 列数据宽度0 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(列数据类型0 ) = 0) // 过大数据不适宜用表格显示 列数据宽度0 = 30; else if (列数据宽度0 30) // 过大数据不适宜用表格显示 列数据宽度0 = 30; if (列数据宽度0 列名0 .length()) 列数据宽度0 = 列名0 .length(); b++; } int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); 表格数据0 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数0) { 表格数据0 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } for (int j = 0; j 列数; j++) { for (int i = 0; i 列名0 .length; i++) { if ((列名 .lastIndexOf(.) 0) (列名 .lastIndexOf(. + 列名0 ) = 0)) { 列名0 = 列名 ; // 列名 ; if (列名0 .indexOf(.) 0) 列名0 = 列名0 .substring(列名0 .lastIndexOf(.) + 1); break; } else if (列名 .trim().equalsIgnoreCase( 列名0 .trim())) { 列名0 = 列名 ; } } } tableTenance.tableModel(800, 600, 列名0 , 列数据宽度0, 表格数据0, 列数据类型0); } }); 退出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); // 窗口标题 frame1.setBounds(0, 0, 窗口宽, 窗口高); // 主程序窗口位置大小 frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); // 关闭布局管理器 frame1.getContentPane().add(面板, null); // 安装面板 frame1.setVisible(true); // 安装窗口 } } 版本2 19.源码19,部件程序,单数据表组合查询程序 /* * 程序文件名:dataQuery10.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:单数据表组合查询程序。 * 必须输入的参数:一个或多个数据表名,如果是多个表,从前到后每二二间必须有同名字段。 * 引导用户拼写出正确的SQL查询语句,以查到用户想要的数据,并且以表格的形式显示出来。 * 在拼写SQL查询语句的窗口中,用户先在选择字段名组合框中选中一项, * 在选择关系符中选择一项,然后在文本行中输入数据, * 点击添加条件按钮,在下面的文本域中将显示出一个条件表达式,如果有多个条件表达式, * 中间必须通过AND或者OR连接起来。 * 如果不选择输出字段要求,则显示满足条件的全部记录,否则按字段要求输出。 * 上述操作全部完成后,点击“浏览查询结果”就会将查询的结果以表格的形式显示出来。 * 可以对多字段排序后显示结果,还可以做打印预览或打印操作,按字段宽度打印报表。 * 打印预览调用dataPreview0.java程序实现,打印通过调用JAVA自身表格类的打印程序实现。 * 这些打印功能比较简单,只用于打印要求不高的场合。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery10 extends JFrame { static dataQuery10 frame1 = new dataQuery10(); static String variabl2259 = { { , 大于 }, { , 小于 }, { =, 等于 }, { =, 大于等于 }, { =, 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static JPanel variabl2613 = new JPanel(false); private static int variabl2483 = 570, variabl2503 = 570; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String variabl2603; static int i = 0, j = 0; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static String s1 = , s2 = ; static int b = 0, c = 0; static int variabl2651; static String variabl1501; static int variabl1787; static JComboBox variabl1681 = new JComboBox(); static JButton variabl1167 = new JButton(); static JComboBox variabl23595 = new JComboBox(); static JComboBox variabl2151 = new JComboBox(); static JTextArea variabl2463 = new JTextArea(); public static void means(String = ; variabl2259 = 大于; variabl2259 = ; variabl2259 = 小于; variabl2259 = = ; variabl2259 = 等于; variabl2259 = = ; variabl2259 = 大于等于; variabl2259 = = ; variabl2259 = 小于等于; variabl2259 = ; variabl2259 = 不等于; variabl2259 = like ; variabl2259 = 包含; variabl2259 = not like ; variabl2259 = 不包含; try { int m1 = Integer.parseInt(parameter ); int m2 = Integer.parseInt(parameter ); if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2603 = parameter ; variabl1787 = parameter .split(,); String variabl1325 = parameter ; if (variabl1325.lastIndexOf(,) == variabl1325.length() - 1) variabl1325 = variabl1325.substring(0, variabl1325.length() - 1); String .length() 0) { String .split(,); variabl2517 = new String ; for (int i = 0; i variabl1735.length; i++) { variabl2517 = s6 )]; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; } else { variabl2517 = new String ; for (int i = 0; i s6.length; i++) { variabl2517 = s6 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; s2 = * ; } try { dbConn = main1.getConn(); sta3 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select + variabl1325 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1501 = new String ; for (int i = 0; i variabl2651; i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e) { e.printStackTrace(); } final JList variabl23113 = new JList(); final JList variabl23114 = new JList(); JLabel variabl1365 = new JLabel(); JLabel variabl2169 = new JLabel(); JScrollPane variabl1227 = new JScrollPane(variabl23113); JButton variabl1917 = new JButton(); JButton variabl2063 = new JButton(); JButton variabl1711 = new JButton(); JButton variabl1937 = new JButton(); JScrollPane variabl1073 = new JScrollPane(variabl23114); Border border1; JLabel variabl1285 = new JLabel(); JButton variabl1653 = new JButton(); JButton variabl1545 = new JButton(); JButton variabl1551 = new JButton(); JButton variabl1723 = new JButton(); JButton variabl1405 = new JButton(); JScrollPane variabl1147 = new JScrollPane(variabl2463); JLabel variabl1909 = new JLabel(); JButton variabl2077 = new JButton(); JButton variabl1865 = new JButton(); JButton variabl1297 = new JButton(); JPanel variabl2433 = new JPanel(); Border border2; TitledBorder titledBorder1; JPanel variabl24332 = new JPanel(); Border border3; TitledBorder titledBorder2; border1 = BorderFactory.createEtchedBorder( UIManager.getColor(InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); variabl1365.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1365.setPreferredSize(new Dimension(57, 16)); variabl1365.setRequestFocusEnabled(true); variabl1365.setText(选择字段名); variabl1365.setBounds(new Rectangle(16, 13, 82, 16)); variabl2613.setLayout(null); variabl2613.setLayout(null); variabl2613.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); variabl23595.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23595.setBorder(BorderFactory.createLineBorder(Color.black)); variabl23595.setBounds(new Rectangle(14, 29, 118, 22)); variabl2151.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2151.setBorder(BorderFactory.createLineBorder(Color.black)); variabl2151.setBounds(new Rectangle(162, 29, 149, 22)); variabl2169.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2169.setText(选择关系符); variabl2169.setBounds(new Rectangle(164, 13, 81, 16)); variabl1227.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1227.setBorder(border1); variabl1227.setBounds(new Rectangle(13, 240, 138, 189)); variabl23113.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23113.setBorder(border1); variabl23113.setBounds(new Rectangle(13, 240, 138, 189)); variabl1917.setBounds(new Rectangle(160, 330, 114, 25)); variabl1917.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1917.setBorder(border1); variabl1917.setText(《移出字段); variabl2063.setBounds(new Rectangle(159, 360, 116, 25)); variabl2063.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2063.setBorder(border1); variabl2063.setText(《全部移出); variabl1711.setBounds(new Rectangle(159, 270, 114, 25)); variabl1711.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1711.setBorder(border1); variabl1711.setText(移进字段》); variabl1937.setBounds(new Rectangle(159, 300, 114, 25)); variabl1937.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1937.setBorder(border1); variabl1937.setText(全部移入》); variabl1073.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1073.setBorder(border1); variabl1073.setBounds(new Rectangle(280, 240, 253, 189)); variabl23114.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setText(输入值); variabl1285.setBounds(new Rectangle(338, 35, 42, 16)); variabl1167.setBounds(new Rectangle(8, 25, 85, 28)); variabl1167.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1167.setBorder(border1); variabl1167.setBorderPainted(true); variabl1167.setText(添加条件); variabl1653.setBounds(new Rectangle(98, 26, 79, 28)); variabl1653.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1653.setBorder(border1); variabl1653.setBorderPainted(true); variabl1653.setText(清空条件); variabl1545.setBounds(new Rectangle(7, 27, 60, 25)); variabl1545.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1545.setBorder(border1); variabl1545.setBorderPainted(true); variabl1545.setText((); variabl1551.setText(AND); variabl1551.setBounds(new Rectangle(73, 27, 62, 25)); variabl1551.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1551.setBorder(border1); variabl1551.setBorderPainted(true); variabl1723.setText(OR); variabl1723.setBounds(new Rectangle(141, 27, 59, 25)); variabl1723.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1723.setBorder(border1); variabl1723.setBorderPainted(true); variabl1723.setRolloverEnabled(true); variabl1723.setSelected(false); variabl1405.setText()); variabl1405.setBounds(new Rectangle(266, 26, 52, 25)); variabl1405.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1405.setBorder(border1); variabl1405.setBorderPainted(true); variabl1147.setBorder(border1); variabl1147.setBounds(new Rectangle(13, 126, 520, 86)); variabl2463.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2463.setText(); variabl1909.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1909.setText(字段列表); variabl1909.setBounds(new Rectangle(16, 217, 77, 16)); variabl2077.setBounds(new Rectangle(281, 460, 119, 25)); variabl2077.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2077.setBorder(border1); variabl2077.setText(浏览查询结果); variabl1865.setBounds(new Rectangle(409, 460, 118, 25)); variabl1865.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1865.setBorder(border1); variabl1865.setText(退出); variabl1297.setBorderPainted(true); variabl1297.setBorder(border1); variabl1297.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1297.setBounds(new Rectangle(204, 27, 58, 25)); variabl1297.setText(NOT); variabl2433.setFont(new java.awt.Font(Dialog, 0, 13)); variabl2433.setBorder(titledBorder1); variabl2433.setBounds(new Rectangle(12, 56, 184, 64)); variabl2433.setLayout(null); variabl24332.setBorder(titledBorder2); variabl24332.setBounds(new Rectangle(208, 56, 325, 64)); variabl24332.setLayout(null); variabl2613.setBackground(Color.lightGray); variabl1681.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1681.setAlignmentY((float) 0.5); variabl1681.setBorder(BorderFactory.createLineBorder(Color.black)); variabl1681.setDoubleBuffered(false); variabl1681.setActionCommand(comboBoxChanged); variabl1681.setEditable(true); variabl1681.setBounds(new Rectangle(384, 28, 147, 22)); variabl2613.add(variabl2077, null); variabl2613.add(variabl1227, null); variabl2613.add(variabl1917, null); variabl2613.add(variabl2063, null); variabl2613.add(variabl1937, null); variabl2613.add(variabl1073, null); variabl2613.add(variabl1865, null); variabl2613.add(variabl1147, null); variabl2433.add(variabl1167, null); variabl2433.add(variabl1653, null); variabl2613.add(variabl24332, null); variabl2613.add(variabl2433, null); variabl24332.add(variabl1545, null); variabl24332.add(variabl1405, null); variabl24332.add(variabl1551, null); variabl24332.add(variabl1723, null); variabl24332.add(variabl1297, null); variabl2613.add(variabl23595, null); variabl2613.add(variabl2151, null); variabl2613.add(variabl1711, null); variabl2613.add(variabl2169, null); variabl2613.add(variabl1365, null); variabl2613.add(variabl1909, null); variabl2613.add(variabl1681, null); variabl2613.add(variabl1285, null); for (int i = 0; i variabl2259.length; i++) { variabl2151.addItem(variabl2259 ); } if (variabl2151.getItemCount() 0) { variabl2151.setSelectedIndex(0); } for (int i = 0; i variabl2517.length; i++) { variabl23595.addItem(variabl2517 ); } if (variabl23595.getItemCount() 0) { variabl23595.setSelectedIndex(0); } variabl23113.setModel(fModel); variabl23114.setModel(dModel); DefaultListModel dlm = (DefaultListModel) variabl23113.getModel(); for (int i = 0; i variabl2517.length; i++) { dlm.addElement(variabl2517 ); } variabl23113.setModel(dlm); variabl1167.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String) variabl23595.getSelectedItem(); String s2 = (String) variabl2151.getSelectedItem(); String s3 = (String) variabl1681.getEditor().getItem(); String s4 = variabl1501 ; for (int i = 0; i variabl2259.length; i++) { if (s2 == variabl2259 ) { s2 = variabl2259 ; } } if (main1.variabl1539.lastIndexOf(s4) = 0) { JOptionPane.showMessageDialog(variabl2613, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); } else if (main1.variabl1545.lastIndexOf(, + s4 + ,) = 0) { if (variabl2151.getSelectedItem().equals(包含) || variabl2151.getSelectedItem().equals(不包含)) { JOptionPane.showMessageDialog(variabl2613, 数字类数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); } else { String s = s1 + s2 + s3; variabl2463.append(s); } } else if (main1.variabl1537.lastIndexOf(s4) = 0) { if (variabl2151.getSelectedItem().equals(包含) || variabl2151.getSelectedItem().equals(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { JOptionPane.showMessageDialog(variabl2613, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); } } else { if (variabl2151.getSelectedItem().equals(包含) || variabl2151.getSelectedItem().equals(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { s3 = ' + (String) variabl1681.getEditor().getItem() + '; String s = s1 + s2 + s3; variabl2463.append(s); } } } }); variabl1653.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; variabl2463.setText(s); } }); variabl1545.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; variabl2463.append(s); } }); variabl1551.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; variabl2463.append(s); } }); variabl1723.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; variabl2463.append(s); } }); variabl1297.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; variabl2463.append(s); } }); variabl1405.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); variabl2463.append(s); } }); variabl1711.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(variabl23113.getSelectedValue()); variabl23114.setModel(dlm); } }); variabl1917.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.removeElement(variabl23114.getSelectedValue()); variabl23114.setModel(dlm); } }); variabl2063.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; int m1 = variabl23114.getLastVisibleIndex(); for (int k = 0; k m1; k++) { variabl23114.setSelectedIndex(k); z0 = variabl23114.getSelectedValue() + ; } variabl23114.setModel(fModel); DefaultListModel dlm1 = (DefaultListModel) variabl23114 .getModel(); dlm1.clear(); variabl23114.setModel(dlm1); variabl23113.setModel(dModel); DefaultListModel dlm = (DefaultListModel) variabl23113 .getModel(); for (int i = 0; i m1; i++) { dlm.addElement(z0 ); } variabl23113.setModel(dlm); } }); variabl1937.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; int m1 = variabl23113.getLastVisibleIndex(); for (int k = 0; k m1; k++) { variabl23113.setSelectedIndex(k); z0 = variabl23113.getSelectedValue() + ; } variabl23113.setModel(fModel); DefaultListModel dlm = (DefaultListModel) variabl23113 .getModel(); dlm.clear(); variabl23113.setModel(dlm); variabl23114.setModel(dModel); DefaultListModel dlm1 = (DefaultListModel) variabl23114 .getModel(); for (int i = 0; i m1; i++) { dlm1.addElement(z0 ); } variabl23114.setModel(dlm1); } }); variabl2077.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; int kl = 0; DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); int m = dlm.getSize(); for (int i = 0; i m; i++) { s1 = s1 + dlm.elementAt(i) + ,; } if (s1.length() 1) s1 = *,; s1 = s1.substring(0, s1.length() - 1); s1 = SELECT + s1; s2 = FROM + variabl2603; s3 = variabl2463.getText(); s = s1 + s2; if (s3.length() 0) s = s + WHERE + s3; try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl2517 = new String ; variabl1501 = new String ; variabl1489 = new int ; /* * 参考: 某些SQL Server数据类型在JAVA程序时无对应类型,表现的类型变换表: date nvarchar * datetime2 nvarchar datetimeoffset nvarchar geography * image geometry image hierarchyid varbinary time(7) * nvarchar varbinary(max) image xml ntext */ for (int i = 0; i variabl2651; i++) { variabl2517 = rsmd3.getColumnName(i + 1); for (int j = 0; j variabl1787.length; j++) if (variabl2517 .lastIndexOf(.) 0) variabl2517 = variabl2517 .substring( variabl2517 .lastIndexOf(.), variabl2517 .length()); variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(variabl1501 ) = 0) variabl1489 = 30; else if (variabl1489 30) variabl1489 = 30; if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); b++; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800, 600, variabl2517, variabl1489, variabl2197, variabl1501); } }); variabl1865.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); frame1.setBounds(0, 0, variabl2483, variabl2503); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); frame1.getContentPane().add(variabl2613, null); frame1.setVisible(true); } } 20.源码20,部件程序,多数据表组合查询 /* * 程序文件名:dataQuery11.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:多数据表组合查询。 * 引导用户拼写出正确的SQL查询语句,以查到用户想要的数据, * 必须输入的参数:一个或多个数据表名,如果是多个表,从前到后每二二间必须有同名字段。 * 在拼写SQL查询语句的窗口中,用户先在选择字段名组合框中选中一项, * 在选择关系符中选择一项,然后在文本行中输入数据, * 点击添加条件按钮,在下面的文本域中将显示出一个条件表达式,如果有多个条件表达式, * 中间必须通过AND或者OR连接。 * 如果不选择输出字段要求,则显示满足条件的全部记录,否则按字段要求输出。 * 上述操作全部完成后,点击“浏览查询结果”就会将查询的结果以表格的形式显示出来。 * 本程序必须在菜单生成程序生成的菜单中调用才能正常运行。而且,在生成菜单时必须从列表框中选择表名。 * 为辅助学习SQL语句,用户拼写出的SQL语句直接放在所设计的一个文本域中,操作者可以手工修改该语句, * 之后执行,同时观察SQL语句设计正确性。 * 本程序为部件程序,由系统控制程序调用执行。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery11 extends JFrame { static dataQuery11 frame1 = new dataQuery11(); static String variabl2259 = { { , 大于 }, { , 小于 }, { =, 等于 }, { =, 大于等于 }, { =, 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; private static JPanel variabl2613 = new JPanel(false); private static int variabl2483 = 570, variabl2503 = 570; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String variabl2603; static int i = 0, j = 0; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static String s1 = , s2 = ; static int b = 0, c = 0; static int variabl2651; static String variabl1501; static int variabl1787; static JComboBox variabl1681 = new JComboBox(); static JComboBox variabl23595 = new JComboBox(); static JComboBox variabl2151 = new JComboBox(); static JTextArea variabl2463 = new JTextArea(); public static void means(String = ; variabl2259 = 大于; variabl2259 = ; variabl2259 = 小于; variabl2259 = = ; variabl2259 = 等于; variabl2259 = = ; variabl2259 = 大于等于; variabl2259 = = ; variabl2259 = 小于等于; variabl2259 = ; variabl2259 = 不等于; variabl2259 = like ; variabl2259 = 包含; variabl2259 = not like ; variabl2259 = 不包含; try { int m1 = Integer.parseInt(parameter ); int m2 = Integer.parseInt(parameter ); if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2603 = parameter ; variabl2049 = parameter ; variabl1325 = parameter ; variabl1787 = parameter .split(,); String .length() 0) { String .split(,); variabl2517 = new String ; for (int i = 0; i variabl1735.length; i++) { variabl2517 = s6 )]; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; } else { variabl2517 = new String ; for (int i = 0; i s6.length; i++) { variabl2517 = s6 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; s2 = * ; } try { dbConn = main1.getConn(); sta3 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2049.trim().length() 0) s1 = select + variabl1325 + from + variabl2603 + where + variabl2049; else s1 = select + variabl1325 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1501 = new String ; for (int i = 0; i variabl2651; i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e) { e.printStackTrace(); } final JList variabl23113 = new JList(); final JList variabl23114 = new JList(); JLabel variabl1365 = new JLabel(); JLabel variabl2169 = new JLabel(); JScrollPane variabl1227 = new JScrollPane(variabl23113); JButton variabl1917 = new JButton(); JButton variabl2063 = new JButton(); JButton variabl1711 = new JButton(); JButton variabl1937 = new JButton(); JScrollPane variabl1073 = new JScrollPane(variabl23114); Border border1; JLabel variabl1285 = new JLabel(); JButton variabl1167 = new JButton(); JButton variabl1653 = new JButton(); JButton variabl1545 = new JButton(); JButton variabl1551 = new JButton(); JButton variabl1723 = new JButton(); JButton variabl1405 = new JButton(); JScrollPane variabl1147 = new JScrollPane(variabl2463); JLabel variabl1909 = new JLabel(); JButton variabl2077 = new JButton(); JButton variabl1865 = new JButton(); ButtonGroup variabl2397 = new ButtonGroup(); JButton variabl1297 = new JButton(); final DefaultListModel fModel = new DefaultListModel(); final DefaultListModel dModel = new DefaultListModel(); JPanel variabl2433 = new JPanel(); Border border2; TitledBorder titledBorder1; JPanel variabl24332 = new JPanel(); Border border3; TitledBorder titledBorder2; JButton variabl16532 = new JButton(); border1 = BorderFactory.createEtchedBorder( UIManager.getColor(InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); variabl1365.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1365.setPreferredSize(new Dimension(57, 16)); variabl1365.setRequestFocusEnabled(true); variabl1365.setText(选择字段名); variabl1365.setBounds(new Rectangle(16, 13, 82, 16)); variabl2613.setLayout(null); variabl2613.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); variabl23595.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23595.setBorder(BorderFactory.createLineBorder(Color.black)); variabl23595.setBounds(new Rectangle(14, 29, 118, 22)); variabl2151.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2151.setBorder(BorderFactory.createLineBorder(Color.black)); variabl2151.setBounds(new Rectangle(162, 29, 149, 22)); variabl2169.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2169.setText(选择关系符); variabl2169.setBounds(new Rectangle(164, 13, 81, 16)); variabl1227.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1227.setBorder(border1); variabl1227.setBounds(new Rectangle(13, 240, 138, 189)); variabl23113.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23113.setBorder(border1); variabl23113.setBounds(new Rectangle(13, 240, 138, 189)); variabl1917.setBounds(new Rectangle(160, 330, 114, 25)); variabl1917.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1917.setBorder(border1); variabl1917.setText(《移出字段); variabl2063.setBounds(new Rectangle(159, 360, 116, 25)); variabl2063.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2063.setBorder(border1); variabl2063.setText(《全部移出); variabl1711.setBounds(new Rectangle(159, 270, 114, 25)); variabl1711.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1711.setBorder(border1); variabl1711.setText(移进字段》); variabl1937.setBounds(new Rectangle(159, 300, 114, 25)); variabl1937.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1937.setBorder(border1); variabl1937.setText(全部移入》); variabl1073.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1073.setBorder(border1); variabl1073.setBounds(new Rectangle(280, 240, 253, 189)); variabl23114.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setText(输入值); variabl1285.setBounds(new Rectangle(338, 35, 42, 16)); variabl1167.setBounds(new Rectangle(8, 26, 85, 28)); variabl1167.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1167.setBorder(border1); variabl1167.setBorderPainted(true); variabl1167.setText(添加条件); variabl1653.setBounds(new Rectangle(98, 26, 79, 28)); variabl1653.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1653.setBorder(border1); variabl1653.setBorderPainted(true); variabl1653.setText(清空条件); variabl1545.setBounds(new Rectangle(7, 27, 60, 25)); variabl1545.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1545.setBorder(border1); variabl1545.setBorderPainted(true); variabl1545.setText((); variabl1551.setText(AND); variabl1551.setBounds(new Rectangle(73, 27, 62, 25)); variabl1551.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1551.setBorder(border1); variabl1551.setBorderPainted(true); variabl1723.setText(OR); variabl1723.setBounds(new Rectangle(141, 27, 59, 25)); variabl1723.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1723.setBorder(border1); variabl1723.setBorderPainted(true); variabl1723.setRolloverEnabled(true); variabl1723.setSelected(false); variabl1405.setText()); variabl1405.setBounds(new Rectangle(266, 26, 52, 25)); variabl1405.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1405.setBorder(border1); variabl1405.setBorderPainted(true); variabl1147.setBorder(border1); variabl1147.setBounds(new Rectangle(13, 126, 520, 86)); variabl2463.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2463.setText(); variabl1909.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1909.setText(字段列表); variabl1909.setBounds(new Rectangle(16, 217, 77, 16)); variabl2077.setBounds(new Rectangle(281, 460, 119, 25)); variabl2077.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2077.setBorder(border1); variabl2077.setText(浏览查询结果); variabl1865.setBounds(new Rectangle(409, 460, 118, 25)); variabl1865.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1865.setBorder(border1); variabl1865.setText(退出); variabl1297.setBorderPainted(true); variabl1297.setBorder(border1); variabl1297.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1297.setBounds(new Rectangle(204, 27, 58, 25)); variabl1297.setText(NOT); variabl2433.setFont(new java.awt.Font(Dialog, 0, 13)); variabl2433.setBorder(titledBorder1); variabl2433.setBounds(new Rectangle(12, 56, 184, 64)); variabl2433.setLayout(null); variabl24332.setBorder(titledBorder2); variabl24332.setBounds(new Rectangle(208, 56, 325, 64)); variabl24332.setLayout(null); variabl2613.setBackground(Color.lightGray); variabl1681.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1681.setAlignmentY((float) 0.5); variabl1681.setBorder(BorderFactory.createLineBorder(Color.black)); variabl1681.setDoubleBuffered(false); variabl1681.setActionCommand(comboBoxChanged); variabl1681.setEditable(true); variabl1681.setBounds(new Rectangle(384, 28, 147, 22)); variabl2613.add(variabl2077, null); variabl2613.add(variabl1227, null); variabl2613.add(variabl1917, null); variabl2613.add(variabl2063, null); variabl2613.add(variabl1937, null); variabl2613.add(variabl1073, null); variabl2613.add(variabl1865, null); variabl2613.add(variabl1147, null); variabl2433.add(variabl1167, null); variabl2433.add(variabl1653, null); variabl2613.add(variabl24332, null); variabl2613.add(variabl2433, null); variabl24332.add(variabl1545, null); variabl24332.add(variabl1405, null); variabl24332.add(variabl1551, null); variabl24332.add(variabl1723, null); variabl24332.add(variabl1297, null); variabl2613.add(variabl23595, null); variabl2613.add(variabl2151, null); variabl2613.add(variabl1711, null); variabl2613.add(variabl2169, null); variabl2613.add(variabl1365, null); variabl2613.add(variabl1909, null); variabl2613.add(variabl1681, null); variabl2613.add(variabl1285, null); for (int i = 0; i variabl2259.length; i++) { variabl2151.addItem(variabl2259 ); } if (variabl2151.getItemCount() 0) { variabl2151.setSelectedIndex(0); } for (int i = 0; i variabl2517.length; i++) { variabl23595.addItem(variabl2517 ); } if (variabl23595.getItemCount() 0) { variabl23595.setSelectedIndex(0); } variabl23113.setModel(fModel); variabl23114.setModel(dModel); DefaultListModel dlm = (DefaultListModel) variabl23113.getModel(); for (int i = 0; i variabl2517.length; i++) { dlm.addElement(variabl2517 ); } variabl23113.setModel(dlm); variabl1167.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String) variabl23595.getSelectedItem(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + s1) = 0)) { s1 = s7 ; break; } else if (s7 .lastIndexOf(s1) = 0) { s1 = s7 ; break; } } String s2 = (String) variabl2151.getSelectedItem(); for (int i = 0; i variabl2259.length; i++) { if (s2 == variabl2259 ) { s2 = variabl2259 ; } } String s3 = ; if ((main1.variabl1539.lastIndexOf(variabl1501 )) = 0) { JOptionPane.showMessageDialog(variabl2613, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); } else if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) { if (variabl2151.getSelectedItem().equals(包含) || variabl2151.getSelectedItem().equals(不包含)) { JOptionPane.showMessageDialog(variabl2613, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); } else { s3 = (String) variabl1681.getEditor().getItem(); String s = s1 + s2 + s3; variabl2463.append(s); } } else if (main1.variabl1537 .lastIndexOf(variabl1501 ) = 0) { if (variabl2151.getSelectedItem().equals(包含) || variabl2151.getSelectedItem().equals(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { JOptionPane.showMessageDialog(variabl2613, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); } } else { if (variabl2151.getSelectedItem().equals(包含) || variabl2151.getSelectedItem().equals(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { s3 = ' + (String) variabl1681.getEditor().getItem() + '; String s = s1 + s2 + s3; variabl2463.append(s); } } } }); variabl1653.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; variabl2463.setText(s); } }); variabl1545.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; variabl2463.append(s); } }); variabl1551.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; variabl2463.append(s); } }); variabl1723.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; variabl2463.append(s); } }); variabl1297.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; variabl2463.append(s); } }); variabl1405.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); variabl2463.append(s); } }); variabl1711.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm1 = (DefaultListModel) variabl23114 .getModel(); dlm1.addElement(variabl23113.getSelectedValue()); variabl23114.setModel(dlm1); } }); variabl1917.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm1 = (DefaultListModel) variabl23114 .getModel(); dlm1.removeElement(variabl23114.getSelectedValue()); variabl23114.setModel(dlm1); } }); variabl2063.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; int m1 = variabl23114.getLastVisibleIndex(); for (int k = 0; k m1; k++) { variabl23114.setSelectedIndex(k); z0 = variabl23114.getSelectedValue() + ; } DefaultListModel dlm1 = (DefaultListModel) variabl23114 .getModel(); dlm1.clear(); variabl23114.setModel(dlm1); DefaultListModel dlm = (DefaultListModel) variabl23113 .getModel(); for (int i = 0; i m1; i++) { dlm.addElement(z0 ); } variabl23113.setModel(dlm); } }); variabl1937.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; int m1 = variabl23113.getLastVisibleIndex() + 1; for (int k = 0; k m1; k++) { variabl23113.setSelectedIndex(k); z0 = variabl23113.getSelectedValue() + ; } DefaultListModel dlm = (DefaultListModel) variabl23113 .getModel(); dlm.clear(); variabl23113.setModel(dlm); DefaultListModel dlm1 = (DefaultListModel) variabl23114 .getModel(); for (int i = 0; i m1; i++) { dlm1.addElement(z0 ); } variabl23114.setModel(dlm1); } }); variabl2077.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + dlm1.elementAt(i)) = 0)) { s1 = s1 + s7 + ,; break; } else if (s7 .lastIndexOf(dlm1.elementAt(i) + ) = 0) { s1 = s1 + s7 + ,; break; } } } if (s1.length() 1) s1 = *,; s1 = s1.substring(0, s1.length() - 1); s1 = SELECT + s1; s2 = s1 + FROM + variabl2603; s3 = s2; if (variabl2049.trim().length() 0) { s3 = s3 + WHERE + variabl2049; kl = 1; } if ((variabl2463.getText().length() 0) (kl == 1)) s3 = s3 + AND + variabl2463.getText(); else if (variabl2463.getText().length() 0) { s3 = s3 + WHERE + variabl2463.getText(); kl = 1; } try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s3); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl2517 = new String ; for (int i = 0; i variabl2651; i++) variabl2517 = rsmd3.getColumnName(i + 1); for (int j = 0; j variabl1787.length; j++) if (variabl2517 .lastIndexOf(.) 0) variabl2517 = variabl2517 .substring( variabl2517 .lastIndexOf(.), variabl2517 .length()); variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { variabl2517 = rsmd3.getColumnName(i + 1); variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(variabl1501 ) = 0) variabl1489 = 30; else if (variabl1489 30) variabl1489 = 30; if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); b++; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800, 600, variabl2517, variabl1489, variabl2197, variabl1501); } }); variabl1865.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); frame1.setBounds(0, 0, variabl2483, variabl2503); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); frame1.getContentPane().add(variabl2613, null); frame1.setVisible(true); } } 21.源码21,部件程序,多数据表可变换标签、可输出聚集函数数据的组合查询 /* * 程序文件名:dataQuery12.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:多数据表可变换标签、可输出聚集函数数据的组合查询。 * 在拼写SQL查询语句的窗口中,用户先在选择字段名组合框中选中一项,在选择关系符中选择一项, * 在文本行中输入数据,点击添加条件按钮,在下面的文本域中将显示出一个条件表达式, * 如果有多个条件表达式,中间必须通过AND或者OR连接。 * 如果不选择输出字段要求,则显示满足条件的全部记录,否则按字段要求输出。 * 上述操作全部完成后,点击“浏览查询结果”就会将查询的结果以表格的形式显示出来。 * 为辅助学习SQL语句,用户拼写出的SQL语句直接放在所设计的一个文本域中, * 操作者可以手工修改该语句之后执行,同时观察SQL语句设计正确性。 * 注意写语句时要用数据库中定义的字段名,不能用字典表变换标签。 * 本程序为部件程序,由系统控制程序调用执行。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery12 extends JFrame { static dataQuery12 frame1 = new dataQuery12(); static String variabl2259 = { { , 大于 }, { , 小于 }, { =, 等于 }, { =, 大于等于 }, { =, 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static String curTableName = ; private static JPanel variabl2613 = new JPanel(false); private static int variabl2483 = 570, variabl2503 = 700; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String variabl2603; static String variabl1873; static String variabl2429; static String variabl1501; static int variabl1787; static JComboBox variabl1681 = new JComboBox(); static JButton variabl1167 = new JButton(); static JComboBox variabl23595 = new JComboBox(); static JComboBox variabl2151 = new JComboBox(); static JTextArea variabl2463 = new JTextArea(); static JTextField variabl1259 = new JTextField(); static JTextField variabl1677 = new JTextField(100); static JTextField variabl1709 = new JTextField(); static JCheckBox variabl1649 = new JCheckBox(); static JCheckBox variabl1973 = new JCheckBox(); static JCheckBox variabl1669 = new JCheckBox(); static JCheckBox variabl1283 = new JCheckBox(); static JButton variabl2081 = new JButton(); static JButton variabl1491 = new JButton(); static JButton variabl1573 = new JButton(); static JButton variabl1273 = new JButton(); static JRadioButton variabl2597 = new JRadioButton(); static JRadioButton variabl2579 = new JRadioButton(); public static void means(String = ; variabl2259 = 大于; variabl2259 = ; variabl2259 = 小于; variabl2259 = = ; variabl2259 = 等于; variabl2259 = = ; variabl2259 = 大于等于; variabl2259 = = ; variabl2259 = 小于等于; variabl2259 = ; variabl2259 = 不等于; variabl2259 = like ; variabl2259 = 包含; variabl2259 = not like ; variabl2259 = 不包含; try { int m1 = Integer.parseInt(parameter ); int m2 = Integer.parseInt(parameter ); if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2603 = parameter ; variabl2049 = parameter ; variabl1325 = parameter ; if (variabl1325.lastIndexOf(,) == variabl1325.length() - 1) variabl1325 = variabl1325.substring(0, variabl1325.length() - 1); String .length() 0) { String .split(,); variabl2517 = new String ; variabl25170 = new String ; for (int i = 0; i variabl1735.length; i++) { variabl2517 = s6 )]; variabl2517 = variabl2517 ; variabl25170 = variabl2517 ; variabl25170 = variabl2517 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; } else { variabl2517 = new String ; variabl25170 = new String ; for (int i = 0; i s6.length; i++) { variabl2517 = s6 ; variabl2517 = variabl2517 ; variabl25170 = variabl2517 ; variabl25170 = variabl2517 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; s2 = * ; } variabl2429 = parameter ; variabl1787 = variabl1325.split(,); String s11 = variabl2603; if (variabl2603.indexOf(,) 0) { String ; } variabl1873 = ; String .lastIndexOf(s11 + 字典表) = 0) variabl1873 = t1 ; } if (variabl1873.length() 0) { try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + variabl1873; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int variabl26510 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); s15 = rs.getString(2).trim(); for (int j = 0; j variabl2517 .length; j++) { if (variabl2517 .trim().equalsIgnoreCase( s14.trim())) { variabl2517 = s15; break; } else if ((variabl2517 .trim() + ,).indexOf(. + s14 + ,) 0) { variabl2517 = variabl2517 .replace(s14, s15); break; } } } rs.close(); dbConn.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } try { dbConn = main1.getConn(); sta3 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2049.trim().length() 0) s1 = select + variabl1325 + from + variabl2603 + where + variabl2049; else s1 = select + variabl1325 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e) { e.printStackTrace(); } final JList variabl23113 = new JList(); final JList variabl23114 = new JList(); JLabel variabl1365 = new JLabel(); JLabel variabl2169 = new JLabel(); JScrollPane variabl1227 = new JScrollPane(variabl23113); JButton variabl1917 = new JButton(); JButton variabl1435 = new JButton(); JButton variabl1711 = new JButton(); JButton variabl1811 = new JButton(); JButton variabl1915 = new JButton(); JButton variabl1457 = new JButton(); JButton variabl1329 = new JButton(); JScrollPane variabl1073 = new JScrollPane(variabl23114); Border border1; JLabel variabl1285 = new JLabel(); JButton variabl1653 = new JButton(); JButton variabl1545 = new JButton(); JButton variabl1551 = new JButton(); JButton variabl1723 = new JButton(); JButton variabl1405 = new JButton(); JScrollPane variabl1147 = new JScrollPane(variabl2463); JLabel variabl1909 = new JLabel(); JButton variabl1279 = new JButton(); JButton variabl2077 = new JButton(); JButton variabl1865 = new JButton(); ButtonGroup variabl2397 = new ButtonGroup(); JButton variabl1297 = new JButton(); JPanel variabl2433 = new JPanel(); Border border2; TitledBorder titledBorder1; JPanel variabl24332 = new JPanel(); Border border3; TitledBorder titledBorder2; JButton variabl16532 = new JButton(); border1 = BorderFactory.createEtchedBorder( UIManager.getColor(InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); variabl1365.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1365.setPreferredSize(new Dimension(57, 16)); variabl1365.setRequestFocusEnabled(true); variabl1365.setText(选择字段名); variabl1365.setBounds(new Rectangle(16, 13, 82, 16)); variabl2613.setLayout(null); variabl2613.setLayout(null); variabl2613.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); variabl23595.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23595.setBorder(BorderFactory.createLineBorder(Color.black)); variabl23595.setBounds(new Rectangle(14, 29, 118, 22)); variabl2151.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2151.setBorder(BorderFactory.createLineBorder(Color.black)); variabl2151.setBounds(new Rectangle(162, 29, 149, 22)); variabl2169.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2169.setText(选择关系符); variabl2169.setBounds(new Rectangle(164, 13, 81, 16)); variabl1227.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1227.setBorder(border1); variabl1227.setBounds(new Rectangle(13, 238, 138, 320)); variabl23113.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23113.setBorder(border1); variabl23113.setBounds(new Rectangle(13, 238, 138, 310)); variabl1711.setBounds(new Rectangle(160, 220, 114, 25)); variabl1711.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1711.setBorder(border1); variabl1711.setText(移进字段》); variabl1811.setBounds(new Rectangle(160, 247, 114, 25)); variabl1811.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1811.setBorder(border1); variabl1811.setText(全部移进》); variabl1917.setBounds(new Rectangle(159, 276, 114, 25)); variabl1917.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1917.setBorder(border1); variabl1917.setText(《移出字段); variabl1435.setBounds(new Rectangle(159, 304, 114, 25)); variabl1435.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1435.setBorder(border1); variabl1435.setText(加入求平均值字段); variabl1329.setBounds(new Rectangle(159, 332, 115, 25)); variabl1329.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1329.setBorder(border1); variabl1329.setText(加入求最大值字段); variabl1457.setBounds(new Rectangle(159, 360, 115, 25)); variabl1457.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1457.setBorder(border1); variabl1457.setText(加入求最小值字段); variabl1915.setBounds(new Rectangle(159, 388, 116, 25)); variabl1915.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1915.setBorder(border1); variabl1915.setText(加入求和字段); variabl1279.setText(加入求记录条数); variabl1279.setBorder(border1); variabl1279.setBounds(new Rectangle(159, 416, 116, 25)); variabl1279.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2081.setBounds(new Rectangle(159, 444, 116, 25)); variabl2081.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2081.setBorder(border1); variabl2081.setText(加入分组字段); variabl1491.setText(加入升序排序字段); variabl1491.setBorder(border1); variabl1491.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1491.setBounds(new Rectangle(159, 472, 115, 25)); variabl1573.setText(加入降序排序字段); variabl1573.setBorder(border1); variabl1573.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1573.setBounds(new Rectangle(159, 500, 115, 25)); variabl1273.setText(加入分组条件); variabl1273.setBorder(border1); variabl1273.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1273.setBounds(new Rectangle(159, 528, 115, 25)); variabl1677.setBorder(border1); variabl1677.setText(); variabl1677.setBounds(new Rectangle(281, 445, 252, 22)); variabl1259.setBorder(border1); variabl1259.setText(); variabl1259.setBounds(new Rectangle(281, 520, 253, 22)); variabl1709.setBorder(border1); variabl1709.setText(); variabl1709.setBounds(new Rectangle(281, 480, 253, 22)); variabl1073.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1073.setBorder(border1); variabl1073.setBounds(new Rectangle(280, 240, 253, 189)); variabl23114.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setText(输入值); variabl1285.setBounds(new Rectangle(338, 35, 42, 16)); variabl1167.setBounds(new Rectangle(8, 25, 85, 28)); variabl1167.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1167.setBorder(border1); variabl1167.setBorderPainted(true); variabl1167.setText(添加条件); variabl1653.setBounds(new Rectangle(100, 25, 85, 28)); variabl1653.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1653.setBorder(border1); variabl1653.setBorderPainted(true); variabl1653.setText(清空条件); variabl1545.setBounds(new Rectangle(7, 27, 60, 25)); variabl1545.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1545.setBorder(border1); variabl1545.setBorderPainted(true); variabl1545.setText((); variabl1551.setText(AND); variabl1551.setBounds(new Rectangle(73, 27, 62, 25)); variabl1551.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1551.setBorder(border1); variabl1551.setBorderPainted(true); variabl1723.setText(OR); variabl1723.setBounds(new Rectangle(141, 27, 59, 25)); variabl1723.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1723.setBorder(border1); variabl1723.setBorderPainted(true); variabl1723.setRolloverEnabled(true); variabl1723.setSelected(false); variabl1405.setText()); variabl1405.setBounds(new Rectangle(266, 26, 52, 25)); variabl1405.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1405.setBorder(border1); variabl1405.setBorderPainted(true); variabl1147.setBorder(border1); variabl1147.setBounds(new Rectangle(13, 126, 520, 86)); variabl2463.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2463.setText(); variabl1909.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1909.setText(字段列表); variabl1909.setBounds(new Rectangle(16, 217, 77, 16)); variabl16532.setBounds(new Rectangle(161, 560, 119, 25)); variabl16532.setFont(new java.awt.Font(Dialog, 0, 12)); variabl16532.setBorder(border1); variabl16532.setText(清空); variabl2077.setBounds(new Rectangle(281, 560, 119, 25)); variabl2077.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2077.setBorder(border1); variabl2077.setText(浏览查询结果); variabl1865.setBounds(new Rectangle(409, 560, 118, 25)); variabl1865.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1865.setBorder(border1); variabl1865.setText(退出); variabl1297.setBorderPainted(true); variabl1297.setBorder(border1); variabl1297.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1297.setBounds(new Rectangle(204, 27, 58, 25)); variabl1297.setText(NOT); variabl2433.setFont(new java.awt.Font(Dialog, 0, 13)); variabl2433.setBorder(titledBorder1); variabl2433.setBounds(new Rectangle(12, 56, 184, 64)); variabl2433.setLayout(null); variabl24332.setBorder(titledBorder2); variabl24332.setBounds(new Rectangle(208, 56, 325, 64)); variabl24332.setLayout(null); variabl2613.setBackground(Color.lightGray); variabl1681.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1681.setAlignmentY((float) 0.5); variabl1681.setBorder(BorderFactory.createLineBorder(Color.black)); variabl1681.setDoubleBuffered(false); variabl1681.setActionCommand(comboBoxChanged); variabl1681.setEditable(true); variabl1681.setBounds(new Rectangle(384, 28, 147, 22)); variabl2613.add(variabl2077, null); variabl2613.add(variabl1227, null); variabl2613.add(variabl1917, null); variabl2613.add(variabl1435, null); variabl2613.add(variabl1329, null); variabl2613.add(variabl1457, null); variabl2613.add(variabl1915, null); variabl2613.add(variabl1279, null); variabl2613.add(variabl2081, null); variabl2613.add(variabl1491, null); variabl2613.add(variabl1573, null); variabl2613.add(variabl1073, null); variabl2613.add(variabl1283, null); variabl2613.add(variabl1677, null); variabl2613.add(variabl1709, null); variabl2613.add(variabl1865, null); variabl2613.add(variabl1147, null); variabl2613.add(variabl1273, null); variabl2613.add(variabl1259, null); variabl2433.add(variabl1167, null); variabl2433.add(variabl1653, null); variabl2613.add(variabl24332, null); variabl2613.add(variabl2433, null); variabl24332.add(variabl1545, null); variabl24332.add(variabl1405, null); variabl24332.add(variabl1551, null); variabl24332.add(variabl1723, null); variabl24332.add(variabl1297, null); variabl2613.add(variabl23595, null); variabl2613.add(variabl2151, null); variabl2613.add(variabl1649, null); variabl2613.add(variabl16532, null); variabl2613.add(variabl1711, null); variabl2613.add(variabl1811, null); variabl2613.add(variabl2169, null); variabl2613.add(variabl1365, null); variabl2613.add(variabl1909, null); variabl2613.add(variabl1681, null); variabl2613.add(variabl1285, null); for (int i = 0; i variabl2259.length; i++) { variabl2151.addItem(variabl2259 ); } if (variabl2151.getItemCount() 0) { variabl2151.setSelectedIndex(0); } for (int i = 0; i variabl2517 .length; i++) { variabl23595.addItem(variabl2517 ); } if (variabl23595.getItemCount() 0) { variabl23595.setSelectedIndex(0); } variabl23113.setModel(fModel); variabl23114.setModel(dModel); DefaultListModel dlm = (DefaultListModel) variabl23113.getModel(); for (int i = 0; i variabl2517 .length; i++) { dlm.addElement(variabl2517 ); } variabl23113.setModel(dlm); variabl1167.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String) variabl23595.getSelectedItem(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + s1) = 0)) { s1 = variabl2517 ; break; } else if (s7 .lastIndexOf(s1) = 0) { s1 = variabl2517 ; break; } else if ((variabl2517 .lastIndexOf(.) 0) (variabl2517 .lastIndexOf(. + s1) = 0)) { s1 = variabl2517 ; break; } else if (variabl2517 .lastIndexOf(s1) = 0) { s1 = variabl2517 ; break; } } String s2 = (String) variabl2151.getSelectedItem(); for (int i = 0; i variabl2259.length; i++) { if (s2 == variabl2259 ) { s2 = variabl2259 ; } } String s3 = ; if ((main1.variabl1539.lastIndexOf(variabl1501 )) = 0) { JOptionPane.showMessageDialog(variabl2613, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); } else if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) { if (variabl2151.getSelectedItem().toString() .equalsIgnoreCase(包含) || variabl2151.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { JOptionPane.showMessageDialog(variabl2613, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); } else { s3 = (String) variabl1681.getEditor().getItem(); String s = s1 + s2 + s3; variabl2463.append(s); } } else if (main1.variabl1537 .lastIndexOf(variabl1501 ) = 0) { if (variabl2151.getSelectedItem().toString() .equalsIgnoreCase(包含) || variabl2151.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { JOptionPane.showMessageDialog(variabl2613, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); } } else { if (variabl2151.getSelectedItem().toString() .equalsIgnoreCase(包含) || variabl2151.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { s3 = ' + (String) variabl1681.getEditor().getItem() + '; String s = s1 + s2 + s3; variabl2463.append(s); } } } }); variabl1653.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; variabl2463.setText(s); } }); variabl1545.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; variabl2463.append(s); } }); variabl1551.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; variabl2463.append(s); } }); variabl1723.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; variabl2463.append(s); } }); variabl1297.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; variabl2463.append(s); } }); variabl1405.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); variabl2463.append(s); } }); variabl1711.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s0 = ; s0 = variabl23113.getSelectedValue() + ; for (int i = 0; i variabl2651; i++) { if (variabl2517 .trim().equalsIgnoreCase(s0.trim())) { s0 = variabl2517 ; break; } } DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(s0); variabl23114.setModel(dlm); } }); variabl1917.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.removeElement(variabl23114.getSelectedValue()); variabl23114.setModel(dlm); } }); variabl1435.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String ; if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (variabl1501 .indexOf(money) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(AVG( + s8 + ) + AS + ' + 平均 + variabl23113.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(AVG( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求平均值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1329.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String ; if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1543.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1547.indexOf(, + variabl1501 + ,) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(MAX( + s8 + ) + AS + ' + 最大 + variabl23113.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(MAX( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求最大值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1457.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String ; if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1543.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1547.indexOf(, + variabl1501 + ,) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(MIN( + s8 + ) + AS + ' + 最小 + variabl23113.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(MIN( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求最小值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1915.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String ; if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (variabl1501 .indexOf(money) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(SUM( + s8 + ) + AS + ' + variabl23113.getSelectedValue() + 总和 + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(SUM( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求总和!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1279.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == variabl23113.getSelectedValue()) { variabl25170 = variabl2517 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl25170) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl25170 + ) = 0) { s8 = s7 ; break; } } DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(COUNT( + s8 + ) + AS + ' + 记录条数 + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(COUNT( + s8 + )); variabl23114.setModel(dlm); } }); variabl2081.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == variabl23113.getSelectedValue()) { variabl25170 = variabl2517 ; break; } } s8 = variabl25170; if ((variabl1677.getText().length() 0) (variabl1677.getText().lastIndexOf( + s8) 0)) variabl1677.setText(variabl1677.getText() + , + s8 + ); else if (variabl1677.getText().length() 1) variabl1677.setText(GROUP BY + s8 + ); } }); variabl1491.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == variabl23113.getSelectedValue()) { variabl25170 = variabl2517 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl25170) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl25170 + ) = 0) { s8 = s7 ; break; } } if ((variabl1709.getText().length() 0) (variabl1709.getText().lastIndexOf( + s8) 0)) variabl1709.setText(variabl1709.getText() + , + s8); else if (variabl1709.getText().length() 1) variabl1709.setText(ORDER BY + s8); } }); variabl1573.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == variabl23113.getSelectedValue()) { variabl25170 = variabl2517 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl25170) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl25170 + ) = 0) { s8 = s7 ; break; } } if ((variabl1709.getText().length() 0) (variabl1709.getText().lastIndexOf( + s8) 0)) variabl1709.setText(variabl1709.getText() + , + s8 + desc ); else if (variabl1709.getText().length() 1) variabl1709.setText(ORDER BY + s8 + desc ); } }); variabl1273.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s7 = variabl1325.split(,); for (int j = 0; j s7.length; j++) { dlm.addElement(s7 ); } variabl23114.setModel(dlm); } }); variabl16532.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.removeAllElements(); variabl23114.setModel(dlm); variabl1677.setText(); variabl1709.setText(); variabl1259.setText(); variabl2463.setText(); } }); variabl2077.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; int kl = 0; DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); int m = dlm.getSize(); for (int i = 0; i m; i++) { s1 = s1 + dlm.elementAt(i) + ,; } if (s1.length() 1) s1 = variabl1325 + ,; s1 = s1.substring(0, s1.length() - 1); s1 = SELECT + s1; s2 = FROM + variabl2603; s3 = ; if (variabl2049.trim().length() 0) { s3 = WHERE + variabl2049; kl = 1; } if ((variabl2463.getText().length() 0) (kl == 1)) s3 = s3 + AND + variabl2463.getText(); else if (variabl2463.getText().length() 0) { s3 = WHERE + variabl2463.getText(); kl = 1; } s4 = variabl1677.getText(); if (s4.length() == 0) { s4 = ; } else { s4 = + s4.substring(0, s4.length() - 1); } s5 = + variabl1259.getText(); s6 = + variabl1709.getText(); s = s1 + s2; if (s3.length() 0) s = s + s3; if (s4.length() 0) s = s + s4; if (s5.length() 0) s = s + s5; if (s6.length() 0) s = s + s6; String variabl21970 ; String variabl14890; try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s); int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); int variabl26510 = rsmd3.getColumnCount(); variabl25170 = new String ; variabl15010 = new String ; variabl14890 = new int ; for (int i = 0; i variabl26510; i++) { variabl25170 = rsmd3.getColumnName(i + 1); variabl25170 = variabl25170 ; variabl15010 = rsmd3.getColumnTypeName(i + 1); variabl14890 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(variabl15010 ) = 0) variabl14890 = 30; else if (variabl14890 30) variabl14890 = 30; if (variabl14890 variabl25170 .length()) variabl14890 = variabl25170 .length(); b++; } variabl21970 = new String ; rs.absolute(1); c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl26510) { variabl21970 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } for (int j = 0; j variabl2651; j++) { for (int i = 0; i variabl25170 .length; i++) { if ((variabl2517 .lastIndexOf(.) 0) (variabl2517 .lastIndexOf(. + variabl25170 ) = 0)) { variabl25170 = variabl25170 ; if (variabl25170 .indexOf(.) 0) variabl25170 = variabl25170 .substring(variabl25170 .lastIndexOf(.) + 1); break; } else if (variabl2517 .trim().equalsIgnoreCase( variabl25170 .trim())) { variabl25170 = variabl2517 ; break; } } } tableTenance.tableModel(800, 600, variabl25170 , variabl14890, variabl21970, variabl15010); } }); variabl1865.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); frame1.setBounds(0, 0, variabl2483, variabl2503); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); frame1.getContentPane().add(variabl2613, null); frame1.setVisible(true); } } 22.源码22,部件程序,多数据表不可变换标签、可输出聚集函数数据的组合查询。 /* * 程序文件名:dataQuery13.java * 作者:程学先 * 程序功能:多数据表不可变换标签、可输出聚集函数数据的组合查询。 * 1、若进行单表查询 * 需要用户在“请输入部件名称”、“请输入数据表名”处给定相应的参数。 * 2、可进行多表查询 * 3、在拼写SQL查询语句的窗口中,用户先在选择字段名组合框中选中一项,在选择关系符中选择一项,然后在文本行中输入文本,点击添加条件按钮就会在下面的文本域中显示出一个条件表达式,如果有多个条件表达式,中间必须通过AND、OR或者NOT连接起来。 * 4、在字段列表中用户可以选择查询结果中出现的列,还可以对数值型数据类型的列进行求平均值,求最大值,求最小值和求和,如果用户选择了非数值型的列则会弹出一个对话框提示用户非数值型的列不能进行上述运算。 * 5、分组字段、排序字段和分组条件这些是可选项,需要使用的时候要选中“允许分组”和“允许排序”复选框,若果有分组字段,那么点击“加入分组字段”按钮时,列表框中除了聚合函数外的所有项都会自动被添加到文本行中,排序字段需要根据需要选择,分组条件需要用户自己完成,使之成为一个正确的表达式。 * 6、“全选字段”和“允许重复”根据需要进行选择。 * 7、上述操作全部完成后,点击“浏览查询结果”就会将查询的结果以表格的形式显示出来。 * 本程序为部件程序,由系统控制程序调用执行。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery13 extends JFrame { static dataQuery13 frame1 = new dataQuery13(); static String variabl2259 = { { , 大于 }, { , 小于 }, { =, 等于 }, { =, 大于等于 }, { =, 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static String curTableName = ; private static JPanel variabl2613 = new JPanel(false); private static int variabl2483 = 570, variabl2503 = 640; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String variabl2603; static String variabl2517; static String variabl1489; static String variabl2197; static String variabl2049; static String variabl1325; static String parameter) { frame1 = new dataQuery13(); fModel = new DefaultListModel(); dModel = new DefaultListModel(); curTableName = ; variabl2613 = new JPanel(false); variabl2483 = 570; variabl2503 = 640; dbConn = null; i = 0; j = 0; scrollPane = new JScrollPane(); s1 = ; s2 = ; b = 0; c = 0; variabl1681 = new JComboBox(); variabl1167 = new JButton(); variabl23595 = new JComboBox(); variabl2151 = new JComboBox(); variabl2463 = new JTextArea(); variabl1259 = new JTextField(); variabl1677 = new JTextField(100); variabl1709 = new JTextField(); variabl1649 = new JCheckBox(); variabl1973 = new JCheckBox(); variabl1669 = new JCheckBox(); variabl1283 = new JCheckBox(); variabl2081 = new JButton(); variabl2007 = new JButton(); variabl1273 = new JButton(); variabl2597 = new JRadioButton(); variabl2579 = new JRadioButton(); variabl2259 = ; variabl2259 = 大于; variabl2259 = ; variabl2259 = 小于; variabl2259 = = ; variabl2259 = 等于; variabl2259 = = ; variabl2259 = 大于等于; variabl2259 = = ; variabl2259 = 小于等于; variabl2259 = ; variabl2259 = 不等于; variabl2259 = like ; variabl2259 = 包含; variabl2259 = not like ; variabl2259 = 不包含; try { int m1 = Integer.parseInt(parameter ); int m2 = Integer.parseInt(parameter ); if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2603 = parameter ; variabl2049 = parameter ; variabl1325 = parameter ; String .length() 0) { String .split(,); variabl2517 = new String ; for (int i = 0; i variabl1735.length; i++) { variabl2517 = s6 )]; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; } else { variabl2517 = new String ; for (int i = 0; i s6.length; i++) { variabl2517 = s6 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; s2 = * ; } variabl1787 = variabl1325.split(,); try { dbConn = main1.getConn(); sta3 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2049.trim().length() 0) s1 = select + variabl1325 + from + variabl2603 + where + variabl2049; else s1 = select + variabl1325 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1501 = new String ; for (int i = 0; i variabl2651; i++) { for (int j = 0; j variabl1787.length; j++) variabl1501 = rsmd3.getColumnTypeName(i + 1); } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e) { e.printStackTrace(); } final JList variabl23113 = new JList(); final JList variabl23114 = new JList(); JLabel variabl1365 = new JLabel(); JLabel variabl2169 = new JLabel(); JScrollPane variabl1227 = new JScrollPane(variabl23113); JButton variabl1917 = new JButton(); JButton variabl1435 = new JButton(); JButton variabl1711 = new JButton(); JButton variabl1915 = new JButton(); JButton variabl1457 = new JButton(); JButton variabl1329 = new JButton(); JScrollPane variabl1073 = new JScrollPane(variabl23114); Border border1; JLabel variabl1285 = new JLabel(); JButton variabl1653 = new JButton(); JButton variabl1545 = new JButton(); JButton variabl1551 = new JButton(); JButton variabl1723 = new JButton(); JButton variabl1405 = new JButton(); JScrollPane variabl1147 = new JScrollPane(variabl2463); JLabel variabl1909 = new JLabel(); JButton variabl1279 = new JButton(); JButton variabl2077 = new JButton(); JButton variabl1865 = new JButton(); ButtonGroup variabl2397 = new ButtonGroup(); JButton variabl1297 = new JButton(); JPanel variabl2433 = new JPanel(); Border border2; TitledBorder titledBorder1; JPanel variabl24332 = new JPanel(); Border border3; TitledBorder titledBorder2; JButton variabl16532 = new JButton(); border1 = BorderFactory.createEtchedBorder( UIManager.getColor(InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); variabl1365.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1365.setPreferredSize(new Dimension(57, 16)); variabl1365.setRequestFocusEnabled(true); variabl1365.setText(选择字段名); variabl1365.setBounds(new Rectangle(16, 13, 82, 16)); variabl2613.setLayout(null); variabl2613.setLayout(null); variabl2613.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); variabl23595.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23595.setBorder(BorderFactory.createLineBorder(Color.black)); variabl23595.setBounds(new Rectangle(14, 29, 118, 22)); variabl2151.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2151.setBorder(BorderFactory.createLineBorder(Color.black)); variabl2151.setBounds(new Rectangle(162, 29, 149, 22)); variabl2169.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2169.setText(选择关系符); variabl2169.setBounds(new Rectangle(164, 13, 81, 16)); variabl1227.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1227.setBorder(border1); variabl1227.setBounds(new Rectangle(13, 238, 138, 280)); variabl23113.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23113.setBorder(border1); variabl23113.setBounds(new Rectangle(13, 238, 138, 250)); variabl1917.setBounds(new Rectangle(159, 266, 114, 25)); variabl1917.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1917.setBorder(border1); variabl1917.setText(《移出字段); variabl1435.setBounds(new Rectangle(159, 293, 114, 25)); variabl1435.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1435.setBorder(border1); variabl1435.setText(加入求平均值字段); variabl2081.setBounds(new Rectangle(159, 433, 116, 25)); variabl2081.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2081.setBorder(border1); variabl2081.setText(加入分组字段); variabl2081.setEnabled(false); variabl1711.setBounds(new Rectangle(160, 239, 114, 25)); variabl1711.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1711.setBorder(border1); variabl1711.setText(移进字段》); variabl1915.setBounds(new Rectangle(159, 375, 116, 25)); variabl1915.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1915.setBorder(border1); variabl1915.setText(加入求和字段); variabl1457.setBounds(new Rectangle(159, 347, 115, 25)); variabl1457.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1457.setBorder(border1); variabl1457.setText(加入求最小值字段); variabl1329.setBounds(new Rectangle(159, 320, 115, 25)); variabl1329.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1329.setBorder(border1); variabl1329.setText(加入求最大值字段); variabl1073.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1073.setBorder(border1); variabl1073.setBounds(new Rectangle(280, 240, 253, 189)); variabl23114.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setText(输入值); variabl1285.setBounds(new Rectangle(338, 35, 42, 16)); variabl1167.setBounds(new Rectangle(8, 25, 85, 28)); variabl1167.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1167.setBorder(border1); variabl1167.setBorderPainted(true); variabl1167.setText(添加条件); variabl1653.setBounds(new Rectangle(98, 26, 79, 28)); variabl1653.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1653.setBorder(border1); variabl1653.setBorderPainted(true); variabl1653.setText(清空条件); variabl1545.setBounds(new Rectangle(7, 27, 60, 25)); variabl1545.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1545.setBorder(border1); variabl1545.setBorderPainted(true); variabl1545.setText((); variabl1551.setText(AND); variabl1551.setBounds(new Rectangle(73, 27, 62, 25)); variabl1551.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1551.setBorder(border1); variabl1551.setBorderPainted(true); variabl1723.setText(OR); variabl1723.setBounds(new Rectangle(141, 27, 59, 25)); variabl1723.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1723.setBorder(border1); variabl1723.setBorderPainted(true); variabl1723.setRolloverEnabled(true); variabl1723.setSelected(false); variabl1405.setText()); variabl1405.setBounds(new Rectangle(266, 26, 52, 25)); variabl1405.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1405.setBorder(border1); variabl1405.setBorderPainted(true); variabl1147.setBorder(border1); variabl1147.setBounds(new Rectangle(13, 126, 520, 86)); variabl2463.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2463.setText(); variabl1909.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1909.setText(字段列表); variabl1909.setBounds(new Rectangle(16, 217, 77, 16)); variabl1279.setText(加入求记录条数); variabl1279.setBorder(border1); variabl1279.setBounds(new Rectangle(159, 404, 116, 25)); variabl1279.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1283.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1283.setText(允许重复); variabl1283.setBounds(new Rectangle(280, 215, 83, 25)); variabl2077.setBounds(new Rectangle(281, 533, 119, 25)); variabl2077.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2077.setBorder(border1); variabl2077.setText(浏览查询结果); variabl1865.setBounds(new Rectangle(409, 532, 118, 25)); variabl1865.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1865.setBorder(border1); variabl1865.setText(退出); variabl1297.setBorderPainted(true); variabl1297.setBorder(border1); variabl1297.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1297.setBounds(new Rectangle(204, 27, 58, 25)); variabl1297.setText(NOT); variabl2007.setText(加入排序字段); variabl2007.setBorder(border1); variabl2007.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2007.setBounds(new Rectangle(159, 462, 115, 25)); variabl2007.setEnabled(false); variabl1273.setText(加入分组条件); variabl1273.setBorder(border1); variabl1273.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1273.setBounds(new Rectangle(159, 490, 115, 25)); variabl1273.setEnabled(false); variabl1677.setBorder(border1); variabl1677.setText(); variabl1677.setEditable(false); variabl1677.setBounds(new Rectangle(281, 434, 252, 22)); variabl1259.setBorder(border1); variabl1259.setText(); variabl1259.setEditable(false); variabl1259.setBounds(new Rectangle(281, 490, 253, 22)); variabl1709.setBorder(border1); variabl1709.setText(); variabl1709.setEditable(false); variabl1709.setBounds(new Rectangle(281, 462, 253, 22)); variabl2433.setFont(new java.awt.Font(Dialog, 0, 13)); variabl2433.setBorder(titledBorder1); variabl2433.setBounds(new Rectangle(12, 56, 184, 64)); variabl2433.setLayout(null); variabl24332.setBorder(titledBorder2); variabl24332.setBounds(new Rectangle(208, 56, 325, 64)); variabl24332.setLayout(null); variabl2597.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2597.setText(升序); variabl2597.setBounds(new Rectangle(359, 215, 52, 25)); variabl2579.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2579.setText(降序); variabl2579.setBounds(new Rectangle(412, 215, 52, 25)); variabl1649.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1649.setText(全选字段); variabl1649.setBounds(new Rectangle(13, 533, 79, 25)); variabl1973.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1973.setText(允许分组); variabl1973.setBounds(new Rectangle(89, 532, 77, 25)); variabl1669.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1669.setText(允许排序); variabl1669.setBounds(new Rectangle(166, 531, 83, 25)); variabl16532.setBounds(new Rectangle(464, 214, 68, 24)); variabl16532.setFont(new java.awt.Font(Dialog, 0, 12)); variabl16532.setBorder(border1); variabl16532.setText(清空); variabl2613.setBackground(Color.lightGray); variabl1681.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1681.setAlignmentY((float) 0.5); variabl1681.setBorder(BorderFactory.createLineBorder(Color.black)); variabl1681.setDoubleBuffered(false); variabl1681.setActionCommand(comboBoxChanged); variabl1681.setEditable(true); variabl1681.setBounds(new Rectangle(384, 28, 147, 22)); variabl2613.add(variabl2077, null); variabl2613.add(variabl1227, null); variabl2613.add(variabl1917, null); variabl2613.add(variabl1435, null); variabl2613.add(variabl1329, null); variabl2613.add(variabl1457, null); variabl2613.add(variabl1915, null); variabl2613.add(variabl1279, null); variabl2613.add(variabl2081, null); variabl2613.add(variabl2007, null); variabl2613.add(variabl1073, null); variabl2613.add(variabl1283, null); variabl2613.add(variabl1677, null); variabl2613.add(variabl1709, null); variabl2613.add(variabl1865, null); variabl2613.add(variabl1147, null); variabl2613.add(variabl1273, null); variabl2613.add(variabl1259, null); variabl2433.add(variabl1167, null); variabl2433.add(variabl1653, null); variabl2613.add(variabl24332, null); variabl2613.add(variabl2433, null); variabl24332.add(variabl1545, null); variabl24332.add(variabl1405, null); variabl24332.add(variabl1551, null); variabl24332.add(variabl1723, null); variabl24332.add(variabl1297, null); variabl2613.add(variabl23595, null); variabl2613.add(variabl2151, null); variabl2613.add(variabl2597, null); variabl2613.add(variabl1649, null); variabl2613.add(variabl2579, null); variabl2613.add(variabl1973, null); variabl2613.add(variabl1669, null); variabl2613.add(variabl16532, null); variabl2613.add(variabl1711, null); variabl2613.add(variabl2169, null); variabl2613.add(variabl1365, null); variabl2613.add(variabl1909, null); variabl2613.add(variabl1681, null); variabl2613.add(variabl1285, null); for (int i = 0; i variabl2259.length; i++) { variabl2151.addItem(variabl2259 ); } if (variabl2151.getItemCount() 0) { variabl2151.setSelectedIndex(0); } for (int i = 0; i variabl2517.length; i++) { variabl23595.addItem(variabl2517 ); } if (variabl23595.getItemCount() 0) { variabl23595.setSelectedIndex(0); } variabl23113.setModel(fModel); variabl23114.setModel(dModel); DefaultListModel dlm = (DefaultListModel) variabl23113.getModel(); for (int i = 0; i variabl2517.length; i++) { dlm.addElement(variabl2517 ); } variabl23113.setModel(dlm); variabl2397.add(variabl2597); variabl2397.add(variabl2579); variabl1167.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String) variabl23595.getSelectedItem(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + s1) = 0)) { s1 = s7 ; break; } else if (s7 .lastIndexOf(s1) = 0) { s1 = s7 ; break; } } String s2 = (String) variabl2151.getSelectedItem(); for (int i = 0; i variabl2259.length; i++) { if (s2 == variabl2259 ) { s2 = variabl2259 ; } } String s3 = ; if ((main1.variabl1539.lastIndexOf(variabl1501 )) = 0) { JOptionPane.showMessageDialog(variabl2613, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); } else if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) { if (variabl2151.getSelectedItem().equals(包含) || variabl2151.getSelectedItem().equals(不包含)) { JOptionPane.showMessageDialog(variabl2613, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); } else { s3 = (String) variabl1681.getEditor().getItem(); String s = s1 + s2 + s3; variabl2463.append(s); } } else if (main1.variabl1537 .lastIndexOf(variabl1501 ) = 0) { if (variabl2151.getSelectedItem().equals(包含) || variabl2151.getSelectedItem().equals(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { JOptionPane.showMessageDialog(variabl2613, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); } } else { if (variabl2151.getSelectedItem().equals(包含) || variabl2151.getSelectedItem().equals(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { s3 = ' + (String) variabl1681.getEditor().getItem() + '; String s = s1 + s2 + s3; variabl2463.append(s); } } } }); variabl1653.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; variabl2463.setText(s); } }); variabl1545.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; variabl2463.append(s); } }); variabl1551.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; variabl2463.append(s); } }); variabl1723.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; variabl2463.append(s); } }); variabl1297.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; variabl2463.append(s); } }); variabl1405.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); variabl2463.append(s); } }); variabl1711.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(variabl23113.getSelectedValue()); variabl23114.setModel(dlm); } }); variabl1917.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.removeElement(variabl23114.getSelectedValue()); variabl23114.setModel(dlm); } }); variabl1435.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl23113.getSelectedValue()) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl23113 .getSelectedValue() + ) = 0) { s8 = s7 ; break; } } if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (variabl1501 .indexOf(money) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(AVG( + s8 + ) + AS + ' + 平均 + variabl23113.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(AVG( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求平均值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1329.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl23113.getSelectedValue()) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl23113 .getSelectedValue() + ) = 0) { s8 = s7 ; break; } } if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1543.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1547.indexOf(, + variabl1501 + ,) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(MAX( + s8 + ) + AS + ' + 最大 + variabl23113.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(MAX( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求最大值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1457.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl23113.getSelectedValue()) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl23113 .getSelectedValue() + ) = 0) { s8 = s7 ; break; } } if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1543.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1547.indexOf(, + variabl1501 + ,) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(MIN( + s8 + ) + AS + ' + 最小 + variabl23113.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(MIN( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求最小值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1915.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl23113.getSelectedValue()) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl23113 .getSelectedValue() + ) = 0) { s8 = s7 ; break; } } if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (variabl1501 .indexOf(money) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(SUM( + s8 + ) + AS + ' + variabl23113.getSelectedValue() + 总和 + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(SUM( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求总和!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1279.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl23113.getSelectedValue()) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl23113 .getSelectedValue() + ) = 0) { s8 = s7 ; break; } } DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(COUNT( + s8 + ) + AS + ' + 记录条数 + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(COUNT( + s8 + )); variabl23114.setModel(dlm); } }); variabl2081.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl23113.getSelectedValue()) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl23113 .getSelectedValue() + ) = 0) { s8 = s7 ; break; } } if ((variabl1677.getText().length() 0) (variabl1677.getText().lastIndexOf( + s8) 0)) variabl1677.setText(variabl1677.getText() + , + s8 + ); else if (variabl1677.getText().length() 1) variabl1677.setText(GROUP BY + s8 + ); } }); variabl2007.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl23113.getSelectedValue()) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl23113 .getSelectedValue() + ) = 0) { s8 = s7 ; break; } } if ((variabl1709.getText().length() 0) (variabl1709.getText().lastIndexOf( + s8) 0)) variabl1709.setText(variabl1709.getText() + , + s8); else if (variabl1709.getText().length() 1) variabl1709.setText(ORDER BY + s8); } }); variabl1273.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl23113.getSelectedValue()) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl23113 .getSelectedValue() + ) = 0) { s8 = s7 ; break; } } if ((variabl1259.getText().length() 0) (variabl1259.getText().lastIndexOf(s8) 0)) variabl1259.setText(variabl1259.getText() + , + s8); else if (variabl1259.getText().length() 1) variabl1259.setText(HAVING + s8); } }); variabl1649.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1649.isSelected()) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.removeAllElements(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl2517 ) = 0)) { dlm.addElement(s7 ); break; } else if (s7 .lastIndexOf(variabl2517 + ) = 0) { dlm.addElement(s7 ); break; } } } variabl23114.setModel(dlm); } } }); variabl1973.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1973.isSelected()) { variabl2081.setEnabled(true); variabl1273.setEnabled(true); variabl1259.setEditable(true); variabl1677.setEditable(true); variabl1259.setEditable(true); } else { variabl2081.setEnabled(false); variabl1273.setEnabled(false); variabl1259.setEditable(false); variabl1677.setText(); variabl1259.setText(); } } }); variabl1669.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1669.isSelected()) { variabl2007.setEnabled(true); variabl1709.setEnabled(true); variabl1709.setEditable(true); } else { variabl2007.setEnabled(false); variabl1709.setText(); } } }); variabl16532.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.removeAllElements(); variabl23114.setModel(dlm); variabl1677.setText(); variabl1709.setText(); variabl1259.setText(); } }); variabl2597.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { String s = variabl1709.getText(); if (s.indexOf( ASC ) != -1) { } else if (s.indexOf( DESC ) != -1) { s = s.substring(0, s.indexOf( DESC )) + ASC ; } else { s = s + ASC ; } variabl1709.setText(s); } }); variabl2579.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { String s = variabl1709.getText(); if (s.indexOf( DESC ) != -1) { } else if (s.indexOf( ASC ) != -1) { s = s.substring(0, s.indexOf( ASC )) + DESC ; } else { s = s + DESC ; } variabl1709.setText(s); } }); variabl2077.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; String variabl25171; try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl25171 = new String ; variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { variabl25171 = rsmd3.getColumnName(i + 1); variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(variabl1501 ) = 0) variabl1489 = 30; else if (variabl1489 30) variabl1489 = 30; if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); b++; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800, 600, variabl25171, variabl1489, variabl2197, variabl1501); } }); variabl1865.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); frame1.setBounds(0, 0, variabl2483, variabl2503); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); frame1.getContentPane().add(variabl2613, null); frame1.setVisible(true); } } 23.源码23,部件程序,多数据表可变换标签、可输出聚集函数数据的组合查询。 /* * 程序文件名:dataQuery14.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:多数据表可变换标签、可输出聚集函数数据的全外组合查询。 * 本程序为部件程序,由系统控制程序调用执行。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery14 extends JFrame { static dataQuery14 frame1 = new dataQuery14(); static String variabl2259 = { { , 大于 }, { , 小于 }, { =, 等于 }, { =, 大于等于 }, { =, 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static String curTableName = ; private static JPanel variabl2613 = new JPanel(false); private static int variabl2483 = 570, variabl2503 = 640; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String variabl2603; static String variabl1873; static String variabl2429; static String variabl1501; static int variabl15010; static int variabl1787; static JComboBox variabl1681 = new JComboBox(); static JButton variabl1167 = new JButton(); static JComboBox variabl23595 = new JComboBox(); static JComboBox variabl2151 = new JComboBox(); static JTextArea variabl2463 = new JTextArea(); static JTextField variabl1259 = new JTextField(); static JTextField variabl1677 = new JTextField(100); static JTextField variabl1709 = new JTextField(); static JCheckBox variabl1649 = new JCheckBox(); static JCheckBox variabl1973 = new JCheckBox(); static JCheckBox variabl1669 = new JCheckBox(); static JCheckBox variabl1283 = new JCheckBox(); static JButton variabl2081 = new JButton(); static JButton variabl2007 = new JButton(); static JButton variabl1273 = new JButton(); static JRadioButton variabl2597 = new JRadioButton(); static JRadioButton variabl2579 = new JRadioButton(); public static void means(String = ; variabl2259 = 大于; variabl2259 = ; variabl2259 = 小于; variabl2259 = = ; variabl2259 = 等于; variabl2259 = = ; variabl2259 = 大于等于; variabl2259 = = ; variabl2259 = 小于等于; variabl2259 = ; variabl2259 = 不等于; variabl2259 = like ; variabl2259 = 包含; variabl2259 = not like ; variabl2259 = 不包含; try { int m1 = Integer.parseInt(parameter ); int m2 = Integer.parseInt(parameter ); if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2429 = parameter ; variabl2603 = parameter ; variabl2049 = parameter ; variabl1325 = parameter ; variabl2053 = parameter ; variabl20531 = parameter ; if (variabl1325.lastIndexOf(,) == variabl1325.length() - 1) variabl1325 = variabl1325.substring(0, variabl1325.length() - 1); String .length() 0) { String .split(,); variabl2517 = new String ; variabl25170 = new String ; for (int i = 0; i variabl1735.length; i++) { variabl2517 = s6 )]; variabl2517 = variabl2517 ; variabl25170 = variabl2517 ; variabl25170 = variabl2517 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; } else { variabl2517 = new String ; variabl25170 = new String ; for (int i = 0; i s6.length; i++) { variabl2517 = s6 ; variabl2517 = variabl2517 ; variabl25170 = variabl2517 ; variabl25170 = variabl2517 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; s2 = * ; } variabl1787 = variabl1325.split(,); variabl2517 = new String = variabl1325.split(,); variabl2517 = variabl1325.split(,); variabl2429 = parameter ; String s11 = variabl2603; if (variabl2603.indexOf(,) 0) { String ; } variabl1873 = ; String .lastIndexOf(s11 + 字典表) = 0) variabl1873 = t1 ; } if (variabl1873.length() 0) { try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + variabl1873; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int variabl26510 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); s15 = rs.getString(2).trim(); for (int j = 0; j variabl2517 .length; j++) { if (variabl2517 .trim().equalsIgnoreCase( s14.trim())) { variabl2517 = s15; break; } else if ((variabl2517 .trim() + ,).indexOf(. + s14 + ,) 0) { variabl2517 = variabl2517 .replace(s14, s15); break; } } } rs.close(); dbConn.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } String z ; try { dbConn = main1.getConn(); sta3 = dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2049.trim().length() 0) { z = variabl2603.split(,); s1 = select + variabl1325 + from + variabl2603 + where + variabl2049; } else s1 = select + variabl1325 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e) { e.printStackTrace(); } final JList variabl23113 = new JList(); final JList variabl23114 = new JList(); JLabel variabl1365 = new JLabel(); JLabel variabl2169 = new JLabel(); JScrollPane variabl1227 = new JScrollPane(variabl23113); JButton variabl1917 = new JButton(); JButton variabl1435 = new JButton(); JButton variabl1711 = new JButton(); JButton variabl1915 = new JButton(); JButton variabl1457 = new JButton(); JButton variabl1329 = new JButton(); JScrollPane variabl1073 = new JScrollPane(variabl23114); Border border1; JLabel variabl1285 = new JLabel(); JButton variabl1653 = new JButton(); JButton variabl1545 = new JButton(); JButton variabl1551 = new JButton(); JButton variabl1723 = new JButton(); JButton variabl1405 = new JButton(); JScrollPane variabl1147 = new JScrollPane(variabl2463); JLabel variabl1909 = new JLabel(); JButton variabl1279 = new JButton(); JButton variabl2077 = new JButton(); JButton variabl1865 = new JButton(); ButtonGroup variabl2397 = new ButtonGroup(); JButton variabl1297 = new JButton(); JPanel variabl2433 = new JPanel(); Border border2; TitledBorder titledBorder1; JPanel variabl24332 = new JPanel(); Border border3; TitledBorder titledBorder2; JButton variabl16532 = new JButton(); border1 = BorderFactory.createEtchedBorder( UIManager.getColor(InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); variabl1365.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1365.setPreferredSize(new Dimension(57, 16)); variabl1365.setRequestFocusEnabled(true); variabl1365.setText(选择字段名); variabl1365.setBounds(new Rectangle(16, 13, 82, 16)); variabl2613.setLayout(null); variabl2613.setLayout(null); variabl2613.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); variabl23595.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23595.setBorder(BorderFactory.createLineBorder(Color.black)); variabl23595.setBounds(new Rectangle(14, 29, 118, 22)); variabl2151.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2151.setBorder(BorderFactory.createLineBorder(Color.black)); variabl2151.setBounds(new Rectangle(162, 29, 149, 22)); variabl2169.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2169.setText(选择关系符); variabl2169.setBounds(new Rectangle(164, 13, 81, 16)); variabl1227.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1227.setBorder(border1); variabl1227.setBounds(new Rectangle(13, 238, 138, 280)); variabl23113.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23113.setBorder(border1); variabl23113.setBounds(new Rectangle(13, 238, 138, 250)); variabl1917.setBounds(new Rectangle(159, 266, 114, 25)); variabl1917.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1917.setBorder(border1); variabl1917.setText(《移出字段); variabl1435.setBounds(new Rectangle(159, 293, 114, 25)); variabl1435.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1435.setBorder(border1); variabl1435.setText(加入求平均值字段); variabl2081.setBounds(new Rectangle(159, 433, 116, 25)); variabl2081.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2081.setBorder(border1); variabl2081.setText(加入分组字段); variabl2081.setEnabled(false); variabl1711.setBounds(new Rectangle(160, 239, 114, 25)); variabl1711.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1711.setBorder(border1); variabl1711.setText(移进字段》); variabl1915.setBounds(new Rectangle(159, 375, 116, 25)); variabl1915.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1915.setBorder(border1); variabl1915.setText(加入求和字段); variabl1457.setBounds(new Rectangle(159, 347, 115, 25)); variabl1457.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1457.setBorder(border1); variabl1457.setText(加入求最小值字段); variabl1329.setBounds(new Rectangle(159, 320, 115, 25)); variabl1329.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1329.setBorder(border1); variabl1329.setText(加入求最大值字段); variabl1073.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1073.setBorder(border1); variabl1073.setBounds(new Rectangle(280, 240, 253, 189)); variabl23114.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setText(输入值); variabl1285.setBounds(new Rectangle(338, 35, 42, 16)); variabl1167.setBounds(new Rectangle(8, 25, 85, 28)); variabl1167.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1167.setBorder(border1); variabl1167.setBorderPainted(true); variabl1167.setText(添加条件); variabl1653.setBounds(new Rectangle(98, 26, 79, 28)); variabl1653.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1653.setBorder(border1); variabl1653.setBorderPainted(true); variabl1653.setText(清空条件); variabl1545.setBounds(new Rectangle(7, 27, 60, 25)); variabl1545.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1545.setBorder(border1); variabl1545.setBorderPainted(true); variabl1545.setText((); variabl1551.setText(AND); variabl1551.setBounds(new Rectangle(73, 27, 62, 25)); variabl1551.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1551.setBorder(border1); variabl1551.setBorderPainted(true); variabl1723.setText(OR); variabl1723.setBounds(new Rectangle(141, 27, 59, 25)); variabl1723.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1723.setBorder(border1); variabl1723.setBorderPainted(true); variabl1723.setRolloverEnabled(true); variabl1723.setSelected(false); variabl1405.setText()); variabl1405.setBounds(new Rectangle(266, 26, 52, 25)); variabl1405.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1405.setBorder(border1); variabl1405.setBorderPainted(true); variabl1147.setBorder(border1); variabl1147.setBounds(new Rectangle(13, 126, 520, 86)); variabl2463.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2463.setText(); variabl1909.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1909.setText(字段列表); variabl1909.setBounds(new Rectangle(16, 217, 77, 16)); variabl1279.setText(加入求记录条数); variabl1279.setBorder(border1); variabl1279.setBounds(new Rectangle(159, 404, 116, 25)); variabl1279.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1283.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1283.setText(允许重复); variabl1283.setBounds(new Rectangle(280, 215, 83, 25)); variabl2077.setBounds(new Rectangle(281, 533, 119, 25)); variabl2077.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2077.setBorder(border1); variabl2077.setText(浏览查询结果); variabl1865.setBounds(new Rectangle(409, 532, 118, 25)); variabl1865.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1865.setBorder(border1); variabl1865.setText(退出); variabl1297.setBorderPainted(true); variabl1297.setBorder(border1); variabl1297.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1297.setBounds(new Rectangle(204, 27, 58, 25)); variabl1297.setText(NOT); variabl2007.setText(加入排序字段); variabl2007.setBorder(border1); variabl2007.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2007.setBounds(new Rectangle(159, 462, 115, 25)); variabl2007.setEnabled(false); variabl1273.setText(加入分组条件); variabl1273.setBorder(border1); variabl1273.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1273.setBounds(new Rectangle(159, 490, 115, 25)); variabl1273.setEnabled(false); variabl1677.setBorder(border1); variabl1677.setText(); variabl1677.setEditable(false); variabl1677.setBounds(new Rectangle(281, 434, 252, 22)); variabl1259.setBorder(border1); variabl1259.setText(); variabl1259.setEditable(false); variabl1259.setBounds(new Rectangle(281, 490, 253, 22)); variabl1709.setBorder(border1); variabl1709.setText(); variabl1709.setEditable(false); variabl1709.setBounds(new Rectangle(281, 462, 253, 22)); variabl2433.setFont(new java.awt.Font(Dialog, 0, 13)); variabl2433.setBorder(titledBorder1); variabl2433.setBounds(new Rectangle(12, 56, 184, 64)); variabl2433.setLayout(null); variabl24332.setBorder(titledBorder2); variabl24332.setBounds(new Rectangle(208, 56, 325, 64)); variabl24332.setLayout(null); variabl2597.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2597.setText(升序); variabl2597.setBounds(new Rectangle(359, 215, 52, 25)); variabl2579.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2579.setText(降序); variabl2579.setBounds(new Rectangle(412, 215, 52, 25)); variabl1649.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1649.setText(全选字段); variabl1649.setBounds(new Rectangle(13, 533, 79, 25)); variabl1973.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1973.setText(允许分组); variabl1973.setBounds(new Rectangle(89, 532, 77, 25)); variabl1669.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1669.setText(允许排序); variabl1669.setBounds(new Rectangle(166, 531, 83, 25)); variabl16532.setBounds(new Rectangle(464, 214, 68, 24)); variabl16532.setFont(new java.awt.Font(Dialog, 0, 12)); variabl16532.setBorder(border1); variabl16532.setText(清空); variabl2613.setBackground(Color.lightGray); variabl1681.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1681.setAlignmentY((float) 0.5); variabl1681.setBorder(BorderFactory.createLineBorder(Color.black)); variabl1681.setDoubleBuffered(false); variabl1681.setActionCommand(comboBoxChanged); variabl1681.setEditable(true); variabl1681.setBounds(new Rectangle(384, 28, 147, 22)); variabl2613.add(variabl2077, null); variabl2613.add(variabl1227, null); variabl2613.add(variabl1917, null); variabl2613.add(variabl1435, null); variabl2613.add(variabl1329, null); variabl2613.add(variabl1457, null); variabl2613.add(variabl1915, null); variabl2613.add(variabl1279, null); variabl2613.add(variabl2081, null); variabl2613.add(variabl2007, null); variabl2613.add(variabl1073, null); variabl2613.add(variabl1283, null); variabl2613.add(variabl1677, null); variabl2613.add(variabl1709, null); variabl2613.add(variabl1865, null); variabl2613.add(variabl1147, null); variabl2613.add(variabl1273, null); variabl2613.add(variabl1259, null); variabl2433.add(variabl1167, null); variabl2433.add(variabl1653, null); variabl2613.add(variabl24332, null); variabl2613.add(variabl2433, null); variabl24332.add(variabl1545, null); variabl24332.add(variabl1405, null); variabl24332.add(variabl1551, null); variabl24332.add(variabl1723, null); variabl24332.add(variabl1297, null); variabl2613.add(variabl23595, null); variabl2613.add(variabl2151, null); variabl2613.add(variabl2597, null); variabl2613.add(variabl1649, null); variabl2613.add(variabl2579, null); variabl2613.add(variabl1973, null); variabl2613.add(variabl1669, null); variabl2613.add(variabl16532, null); variabl2613.add(variabl1711, null); variabl2613.add(variabl2169, null); variabl2613.add(variabl1365, null); variabl2613.add(variabl1909, null); variabl2613.add(variabl1681, null); variabl2613.add(variabl1285, null); for (int i = 0; i variabl2259.length; i++) { variabl2151.addItem(variabl2259 ); } if (variabl2151.getItemCount() 0) { variabl2151.setSelectedIndex(0); } for (int i = 0; i variabl2517 .length; i++) { variabl23595.addItem(variabl2517 ); } if (variabl23595.getItemCount() 0) { variabl23595.setSelectedIndex(0); } variabl23113.setModel(fModel); variabl23114.setModel(dModel); DefaultListModel dlm = (DefaultListModel) variabl23113.getModel(); for (int i = 0; i variabl2517 .length; i++) { dlm.addElement(variabl2517 ); } variabl23113.setModel(dlm); variabl2397.add(variabl2597); variabl2397.add(variabl2579); variabl1167.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s1 = (String) variabl23595.getSelectedItem(); String .lastIndexOf(.) 0) (s7 .lastIndexOf(. + s1) = 0)) { s1 = variabl2517 ; break; } else if (s7 .lastIndexOf(s1) = 0) { s1 = variabl2517 ; break; } else if ((variabl2517 .lastIndexOf(.) 0) (variabl2517 .lastIndexOf(. + s1) = 0)) { s1 = variabl2517 ; break; } else if (variabl2517 .lastIndexOf(s1) = 0) { s1 = variabl2517 ; break; } } String s2 = (String) variabl2151.getSelectedItem(); for (int i = 0; i variabl2259.length; i++) { if (s2 == variabl2259 ) { s2 = variabl2259 ; } } String s3 = ; if ((main1.variabl1539.lastIndexOf(variabl1501 )) = 0) { JOptionPane.showMessageDialog(variabl2613, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); } else if ((main1.variabl1545 + main1.variabl1539) .lastIndexOf(, + variabl1501 + ,) = 0) if (variabl2151.getSelectedItem().toString().trim() .equalsIgnoreCase(包含) || variabl2151.getSelectedItem().toString().trim() .equalsIgnoreCase(不包含)) { JOptionPane.showMessageDialog(variabl2613, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); } else { s3 = (String) variabl1681.getEditor().getItem(); String s = s1 + s2 + s3; variabl2463.append(s); } else if (main1.variabl1537.lastIndexOf(variabl1501 ) = 0) { if (variabl2151.getSelectedItem().toString().trim() .equalsIgnoreCase(包含) || variabl2151.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { JOptionPane.showMessageDialog(variabl2613, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); } } else { if (variabl2151.getSelectedItem().toString() .equalsIgnoreCase(包含) || variabl2151.getSelectedItem().toString() .equalsIgnoreCase(不包含)) { s3 = '% + (String) variabl1681.getEditor().getItem() + %'; String s = s1 + s2 + s3; variabl2463.append(s); } else { s3 = ' + (String) variabl1681.getEditor().getItem() + '; String s = s1 + s2 + s3; variabl2463.append(s); } } } }); variabl1653.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; variabl2463.setText(s); } }); variabl1545.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; variabl2463.append(s); } }); variabl1551.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; variabl2463.append(s); } }); variabl1723.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; variabl2463.append(s); } }); variabl1297.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; variabl2463.append(s); } }); variabl1405.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); variabl2463.append(s); } }); variabl1711.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s0 = ; s0 = variabl23113.getSelectedValue() + ; for (int i = 0; i variabl2651; i++) { if (variabl2517 .trim().equalsIgnoreCase(s0.trim())) { s0 = variabl2517 ; break; } } DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(s0); variabl23114.setModel(dlm); } }); variabl1917.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.removeElement(variabl23114.getSelectedValue()); variabl23114.setModel(dlm); } }); variabl1435.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String variabl25173 = variabl23113.getSelectedValue() + ; String ; if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (variabl1501 .indexOf(money) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(AVG( + s8 + ) + AS + ' + 平均 + variabl23113.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(AVG( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求平均值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1329.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String variabl25173 = variabl23113.getSelectedValue() + ; String ; if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1543.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1547.indexOf(, + variabl1501 + ,) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(MAX( + s8 + ) + AS + ' + 最大 + variabl23113.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(MAX( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求最大值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1457.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String variabl25173 = variabl23113.getSelectedValue() + ; String ; if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1543.indexOf(, + variabl1501 + ,) = 0) || (main1.variabl1547.indexOf(, + variabl1501 + ,) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(MIN( + s8 + ) + AS + ' + 最小 + variabl23113.getSelectedValue() + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(MIN( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求最小值!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1915.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = variabl23113.getSelectedIndex(); String variabl25173 = variabl23113.getSelectedValue() + ; String ; if ((main1.variabl1545.indexOf(, + variabl1501 + ,) = 0) || (variabl1501 .indexOf(money) = 0)) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(SUM( + s8 + ) + AS + ' + variabl23113.getSelectedValue() + 总和 + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(SUM( + s8 + )); variabl23114.setModel(dlm); } else { JOptionPane.showMessageDialog(variabl2613, 非数值型列不能求总和!, 提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1279.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == variabl23113.getSelectedValue()) { variabl25173 = variabl2517 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl25173) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl25173 + ) = 0) { s8 = s7 ; break; } } DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.addElement(COUNT( + s8 + ) + AS + ' + 记录条数 + '); DefaultListModel dlm1 = (DefaultListModel) variabl23113 .getModel(); dlm1.addElement(COUNT( + s8 + )); variabl23114.setModel(dlm); } }); variabl2081.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == variabl23113.getSelectedValue()) { variabl25173 = variabl2517 ; break; } } s8 = variabl25173; if ((variabl1677.getText().length() 0) (variabl1677.getText().lastIndexOf( + s8) 0)) variabl1677.setText(variabl1677.getText() + , + s8 + ); else if (variabl1677.getText().length() 1) variabl1677.setText(GROUP BY + s8 + ); } }); variabl2007.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String == variabl23113.getSelectedValue()) { variabl25173 = variabl2517 ; break; } } for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl25173) = 0)) { s8 = s7 ; break; } else if (s7 .lastIndexOf(variabl25173 + ) = 0) { s8 = s7 ; break; } } if ((variabl1709.getText().length() 0) (variabl1709.getText().lastIndexOf( + s8) 0)) variabl1709.setText(variabl1709.getText() + , + s8); else if (variabl1709.getText().length() 1) variabl1709.setText(ORDER BY + s8); } }); variabl1273.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s7 = variabl1325.split(,); for (int i = 0; i variabl2517 .length; i++) { for (int j = 0; j s7.length; j++) { if ((s7 .lastIndexOf(.) 0) (s7 .lastIndexOf(. + variabl2517 ) = 0)) { dlm.addElement(s7 ); break; } else if (s7 .lastIndexOf(variabl2517 + ) = 0) { dlm.addElement(s7 ); break; } } } variabl23114.setModel(dlm); } } }); variabl1973.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1973.isSelected()) { variabl2081.setEnabled(true); variabl1273.setEnabled(true); variabl1259.setEditable(true); variabl1677.setEditable(true); variabl1259.setEditable(true); } else { variabl2081.setEnabled(false); variabl1273.setEnabled(false); variabl1259.setEditable(false); variabl1677.setText(); variabl1259.setText(); } } }); variabl1669.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (variabl1669.isSelected()) { variabl2007.setEnabled(true); variabl1709.setEnabled(true); variabl1709.setEditable(true); } else { variabl2007.setEnabled(false); variabl1709.setText(); } } }); variabl16532.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); dlm.removeAllElements(); variabl23114.setModel(dlm); variabl1677.setText(); variabl1709.setText(); variabl1259.setText(); } }); variabl1283.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); variabl2597.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { String s = variabl1709.getText(); if (s.indexOf( ASC ) != -1) { } else if (s.indexOf( DESC ) != -1) { s = s.substring(0, s.indexOf( DESC )) + ASC ; } else { s = s + ASC ; } variabl1709.setText(s); } }); variabl2579.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { String s = variabl1709.getText(); if (s.indexOf( DESC ) != -1) { } else if (s.indexOf( ASC ) != -1) { s = s.substring(0, s.indexOf( ASC )) + DESC ; } else { s = s + DESC ; } variabl1709.setText(s); } }); variabl2077.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; String s1 = ; String s2 = ; String s3 = ; String s4 = ; String s5 = ; String s6 = ; int kl = 0; DefaultListModel dlm = (DefaultListModel) variabl23114 .getModel(); int m = dlm.getSize(); for (int i = 0; i m; i++) { s1 = s1 + dlm.elementAt(i) + ,; } if (s1.length() 1) s1 = variabl1325 + ,; s1 = s1.substring(0, s1.length() - 1); s1 = SELECT + s1; s2 = FROM + variabl2603; s3 = ; if (variabl2049.trim().length() 0) { s3 = WHERE + variabl2049; kl = 1; } if ((variabl2463.getText().length() 0) (kl == 1)) s3 = s3 + AND + variabl2463.getText(); else if (variabl2463.getText().length() 0) { s3 = WHERE + variabl2463.getText(); kl = 1; } s4 = variabl1677.getText(); if (s4.length() == 0) { s4 = ; } else { s4 = + s4.substring(0, s4.length() - 1); } s5 = + variabl1259.getText(); s6 = + variabl1709.getText(); s = s1 + s2; if (s3.length() 0) s = s + s3; if (s4.length() 0) s = s + s4; if (s5.length() 0) s = s + s5; if (s6.length() 0) s = s + s6; try { dbConn = main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(s); rsmd3 = rs.getMetaData(); variabl26510 = rsmd3.getColumnCount(); variabl25170 = new String ; variabl15010 = new String ; variabl14890 = new int ; for (int i = 0; i variabl26510; i++) { variabl25170 = rsmd3.getColumnName(i + 1); variabl25170 = variabl25170 ; variabl15010 = rsmd3.getColumnTypeName(i + 1); variabl14890 = rsmd3.getColumnDisplaySize(i + 1); if (,image,.indexOf(variabl15010 ) = 0) variabl14890 = 30; else if (variabl14890 30) variabl14890 = 30; if (variabl14890 variabl25170 .length()) variabl14890 = variabl25170 .length(); b++; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); variabl21970 = new String ; rs.absolute(1); c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl26510) { variabl21970 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); dbConn.close(); } catch (Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP) 0) JOptionPane.showMessageDialog(null, 所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } for (int j = 0; j variabl2651; j++) { for (int i = 0; i variabl25170 .length; i++) { if ((variabl2517 .lastIndexOf(.) 0) (variabl2517 .lastIndexOf(. + variabl25170 ) = 0)) { variabl25170 = variabl2517 ; if (variabl25170 .indexOf(.) 0) variabl25170 = variabl25170 .substring(variabl25170 .lastIndexOf(.) + 1); break; } else if (variabl2517 .trim().equalsIgnoreCase( variabl25170 .trim())) { variabl25170 = variabl2517 ; } } } tableTenance.tableModel(800, 600, variabl25170 , variabl14890, variabl21970, variabl15010); } }); variabl1865.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(组合查询部件 作者:程学先); frame1.setBounds(0, 0, variabl2483, variabl2503); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); frame1.getContentPane().add(variabl2613, null); frame1.setVisible(true); } }
个人分类: 生活点滴|1302 次阅读|0 个评论
管理信息系统软件生产线源码15-18
求新 2018-5-28 20:14
版本1 15.源码15,生成表格式报表格式文件 /* * 程序文件名:printFormat1.java * 作者:程学先 * 本程序用于辅助生成打印数据库中单数据表的表格式报表格式文件。 * 程序功能:用于dataPrint1、printPreview1等程序生成格式文件 * 所有参数以字符个数为单位,辅助计算后变换为象素单位。 * 在打印报表中设置的宽度、高度、左边距、到顶距等待填入字符单位数据再根据字号计算其象素单位值 * 所有数据保存在一个文件中 * 每组内容第一个数据标志组类型,1表示总标题(全表一次); * 2表示表头(每页一次);3表示表格内容(根据记录情况重复)。 * 4表示页尾内容(每页一次) * 5表示表尾内容(全表一次) * 总标题部分、页尾部分、表尾部分内容分常量与变量二类,常量照原样打印, * 变量可以为字段名,可以为当前日期、页号等。 * 程序共分为5页,第一页尾标题页,可以输入标题内容及副标题、作者……等 * 输入时先输入内容,输入以字符个数为单位的宽度、高度、左边距、到顶距、字体、字号等 * 每输入一行内容点击添加到表格中按钮。 * 全部输入完成后,点击“辅助计算”按钮。 * 第2页输入表头标签内容。 * 表头部分全部为常量,每页打印一次内容相同。 * 输入时选字段名,点击添加到表格中按钮,再输入下一个标签。 * 第3页输入表格内容,输入时选字段名,点击添加到表格中按钮,再输入下一个字段名。 * 表格内容来自对数据表的查询程序,每行对应一条记录部分字段的数据, * 表尾内容分常量与变量二类,常量照原样打印,变量的打印内容在调用程序中设置。 * 总标题、页尾、表尾部分属性包括:内容、变量名、行号、列号、宽度、高度、左边距、到顶距、 * 字体、字号等10个参数 * 表头部分属性包括:字段标签名称、行号、列号、宽度、高度、左边距、 * 字体、字号、有无下表格线、有无右表格线等10个参数 * 表体部分属性包括:字段名称、宽度、字体、字号、有无下表格线、有无右表格线等6个参数 * 如果按下“辅助计算”按钮,将帮助从字符数计算象素点数。 * 操作结果将替代已经输入的所有边距、宽度、高度、到顶距等数字。 * 辅助布局要求先按从上到下、从左到右输入各数据的名字、行号 与列号、 * 字体、字号、有无下表格线、有无右表格线。 * 要求全表数据统一字号。 * 操作自动布局前,请一定检查上述内容都已经输入后再点击辅助计算。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import javax.swing.tree.DefaultMutableTreeNode; import java.io.*; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Vector; public class printFormat1 extends JFrame { private static printFormat1 frame1 = new printFormat1(); // 定义窗口 private static printFormat1 frame2 = new printFormat1(); private static printFormat1 frame3 = new printFormat1(); private static printFormat1 frame4 = new printFormat1(); private static printFormat1 frame5 = new printFormat1(); private static JPanel panel1 = new JPanel(); // 定义面板 private static JPanel panel2 = new JPanel(); private static JPanel panel3 = new JPanel(); private static JPanel panel4 = new JPanel(); private static JPanel panel5 = new JPanel(); private static DefaultTableModel 表格模型1; // 定义表格模型对象 private static DefaultTableModel 表格模型2; private static DefaultTableModel 表格模型3; private static DefaultTableModel 表格模型4; private static DefaultTableModel 表格模型5; private static JTable 表格1; // 定义表格对象 private static JTable 表格2; private static JTable 表格3; private static JTable 表格4; private static JTable 表格5; private static JScrollPane scrollPane1 = new JScrollPane(); // 定义表格滚动条 private static JScrollPane scrollPane2 = new JScrollPane(); private static JScrollPane scrollPane3 = new JScrollPane(); private static JScrollPane scrollPane4 = new JScrollPane(); private static JScrollPane scrollPane5 = new JScrollPane(); private static List list1 = new List(); private static List list2 = new List(); private static List list3 = new List(); private static List list4 = new List(); private static List list5 = new List(); private static JLabel fl0, fl1, fl2, fl3, fl4, fl5, fl6, fl7, fl8, fl9, fl10, fl11, fl12; private static JTextField fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, fa10, fa11, fa12; private static JLabel fla0, fla1, fla2, fla3, fla4, fla5, fla6, fla7, fla8, fla9, fla10, fla11, fla12; private static JTextField faa0, faa1, faa2, faa3, faa4, faa5, faa6, faa7, faa8, faa9, faa10, faa11, faa12; private static JLabel flb0, flb1, flb2, flb3, flb4, flb5, flb6, flb7, flb8, flb9, flb10, flb11, flb12; private static JTextField fab0, fab1, fab2, fab3, fab4, fab5, fab6, fab7, fab8, fab9, fab10, fab11, fab12; private static JLabel flc0, flc1, flc2, flc3, flc4, flc5, flc6, flc7, flc8, flc9, flc10, flc11, flc12; private static JTextField fac0, fac1, fac2, fac3, fac4, fac5, fac6, fac7, fac8, fac9, fac10, fac11, fac12; private static JLabel fld0, fld1, fld2, fld3, fld4, fld5, fld6, fld7, fld8, fld9, fld10, fld11, fld12; private static JTextField fad0, fad1, fad2, fad3, fad4, fad5, fad6, fad7, fad8, fad9, fad10, fad11, fad12; private static String 当前值; private static int 选中行号 = -1, 当前行号 = 0, 表格行数 = 0, 当前列号 = 0, 列数 = 0; private static int 字段序号 = 0; private static String 表格数据; private static ArrayListString 读入数据 = new ArrayList(); private static String 列数据类型; private static int 一行数据 = new String ; private static int ; private static File file1; static Connection con; // 连接数据库 static String url; static String DBMS系统 = sqlserver; static String ODBC数据源 = sql1; private static Statement sta; // 连接数据库 static String s1 = , s2 = ; private static ResultSet rs; private static ResultSetMetaData rsmd; private static ArrayList 表名1 = new ArrayList(); private static String 字体 = { 宋体, 楷体, 黑体, 仿宋_GB2312 }; public static void means(String ; // 数据表名 fa0 frame1 = new printFormat1(); // 定义窗口 frame2 = new printFormat1(); frame3 = new printFormat1(); frame4 = new printFormat1(); frame5 = new printFormat1(); panel1 = new JPanel(); // 定义面板 panel2 = new JPanel(); panel3 = new JPanel(); panel4 = new JPanel(); panel5 = new JPanel(); scrollPane1 = new JScrollPane(); // 定义表格滚动条 scrollPane2 = new JScrollPane(); scrollPane3 = new JScrollPane(); scrollPane4 = new JScrollPane(); scrollPane5 = new JScrollPane(); list1 = new List(); list2 = new List(); list3 = new List(); list4 = new List(); list5 = new List(); 选中行号 = -1; 当前行号 = 0; 表格行数 = 0; 当前列号 = 0; 列数 = 0; 字段序号 = 0; 读入数据 = new ArrayList(); 一行数据 = new String ; 一行数据1 = new int ; DBMS系统 = sqlserver; ODBC数据源 = sql1; s1 = ; s2 = ; 表名1 = new ArrayList(); 字号 = new String ; 字体 = new String ; 字号 = 5; 字号 = 6; 字号 = 7; 字号 = 8; 字号 = 9; 字号 = 10; 字号 = 11; 字号 = 12; 字号 = 14; 字号 = 16; 字号 = 18; 字号 = 20; 字号 = 22; 字号 = 24; 字号 = 26; 字号 = 28; 字号 = 36; 字号 = 48; 字号 = 72; 字体 = 宋体; 字体 = 楷体; 字体 = 黑体; 字体 = 仿宋_GB2312; try { con = main1.getConn();// 连接数据库 sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select + parameter + from + 表名; // 查取全表数据 if (表名.indexOf(,) 0) s1 = s1 + where + parameter ; rs = sta.executeQuery(s1); rs.last(); // 移动到最后一行 rsmd = rs.getMetaData(); 列数 = rsmd.getColumnCount(); // 获取列数 列名1 = new String ; // 定义列名数组 列数据类型 = new String ; 列数据宽度 = new int ; 当前列号 = 1; list1.removeAll(); 列名1 = parameter .split(,); for (int i = 0; i 列数; i++) { 列数据类型 = rsmd.getColumnTypeName(i + 1); 列数据宽度 = rsmd.getColumnDisplaySize(i + 1); list1.add(列名1 ); } rs.close(); sta.close(); con.close(); } catch (SQLException e1) { JOptionPane.showMessageDialog(null, 获取数据结构出错! + s1); } frame1.setTitle(打印报表标题设计页,每表打印一次。 作者:程学先); // 窗口标题 frame2.setTitle(表头设计页,每页打印一次。 作者:程学先); frame3.setTitle(报表表体内容设计页,每条记录打印一次。 作者:程学先); frame4.setTitle(打印报表页尾设计页,每页打印一次。 作者:程学先); frame5.setTitle(打印报表表尾设计页,每表打印一次。 作者:程学先); frame1.setBounds(10, 10, 1000, 660); // 窗口位置大小 frame2.setBounds(100, 10, 1000, 660); frame3.setBounds(200, 10, 1000, 660); frame4.setBounds(10, 120, 1000, 600); frame5.setBounds(200, 120, 1000, 600); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame3.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame4.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame5.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); panel1.setBounds(10, 10, 1000, 660); // 定义面板大小与位置 panel2.setBounds(100, 10, 1000, 660); panel3.setBounds(200, 10, 1000, 660); panel4.setBounds(10, 120, 1000, 600); panel5.setBounds(200, 120, 1000, 600); panel1.setLayout(null); // 关闭面板布局管理器 panel2.setLayout(null); panel3.setLayout(null); panel4.setLayout(null); panel5.setLayout(null); String 列名02 = { 字段标签, 行号, 列号, 宽度, 高度, 左边距, 字体, 字号, 有无下表格线, 有无右表格线 }; String 列名04 = { 内容或变量, 变量名, 行号, 列号, 宽度, 高度, 左边距, 到顶距, 字体, 字号 }; String tableType = { TABLE }; DatabaseMetaData databaseMetaData = con.getMetaData(); ResultSet resultSet = databaseMetaData.getTables(null, null, %, tableType); while (resultSet.next()) { // 遍历集合 表名1.add(resultSet.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } } for (int i = 0; i 表名1.size(); i++) list1.add(表名1.get(i).toString()); } }); fl10 = new JLabel(文件名); fl10.setBounds(250, 10, 50, 20); panel1.add(fl10); fa10 = new JTextField(, 20); fa10.setBounds(300, 10, 100, 20); panel1.add(fa10); fa10.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (fa10.getText().length() 1) { final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile() != null) { fa10.setText(fc.getSelectedFile().toString()); file1 = new File(fa10.getText()); try { if (file1.exists()) { FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); String tempStr = null; 读入数据.clear(); for (int i = 0; (tempStr = br.readLine()) != null; i++) { if (tempStr.substring(0, 2).equals(1,)) { 表格模型1.addRow(tempStr.substring(2, tempStr.length()).split(。)); } else if (tempStr.substring(0, 2).equals( 2,)) { 表格模型2.addRow(tempStr.substring(2, tempStr.length()).split(。)); } else if (tempStr.substring(0, 2).equals( 3,)) { 表格模型3.addRow(tempStr.substring(2, tempStr.length()).split(。)); } else if (tempStr.substring(0, 2).equals( 4,)) { 表格模型4.addRow(tempStr.substring(2, tempStr.length()).split(。)); } else if (tempStr.substring(0, 2).equals( 5,)) { 表格模型5.addRow(tempStr.substring(2, tempStr.length()).split(。)); } } } } catch (IOException e2) { JOptionPane.showMessageDialog(null, 打开文件错!); } } } } }); 表格模型1 = new DefaultTableModel(表格数据, 列名01); // 创建表格模型 表格模型2 = new DefaultTableModel(表格数据, 列名02); 表格模型3 = new DefaultTableModel(表格数据, 列名03); 表格模型4 = new DefaultTableModel(表格数据, 列名04); 表格模型5 = new DefaultTableModel(表格数据, 列名05); 表格1 = new JTable(表格模型1); // 创建指定表格模型的表格 表格2 = new JTable(表格模型2); 表格3 = new JTable(表格模型3); 表格4 = new JTable(表格模型4); 表格5 = new JTable(表格模型5); 表格1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 表格2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 表格3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 表格4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 表格5.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 表格1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int 选中行号 = 表格1.getSelectedRow(); for (int j = 0; j 10; j++) { if (表格模型1.getValueAt(选中行号, j) != null) 当前值 = 表格模型1.getValueAt(选中行号, j).toString(); else 当前值 = ; switch (j) { case 0: fa1.setText(当前值.toString()); break; case 1: fa2.setText(当前值.toString()); break; case 2: fa11.setText(当前值.toString()); break; case 3: fa12.setText(当前值.toString()); break; case 4: fa3.setText(当前值.toString()); break; case 5: fa4.setText(当前值.toString()); break; case 6: fa5.setText(当前值.toString()); break; case 7: fa6.setText(当前值.toString()); break; case 8: fa7.setText(当前值.toString()); break; case 9: fa8.setText(当前值.toString()); break; case 10: fa9.setText(当前值.toString()); break; } } } }); scrollPane1.setBounds(10, 40, 800, 400); scrollPane2.setBounds(10, 40, 800, 400); scrollPane3.setBounds(10, 40, 800, 400); scrollPane4.setBounds(10, 40, 800, 300); scrollPane5.setBounds(10, 40, 800, 300); scrollPane1.setViewportView(表格1); // 表格滚动条加到表格中 scrollPane2.setViewportView(表格2); scrollPane3.setViewportView(表格3); scrollPane4.setViewportView(表格4); scrollPane5.setViewportView(表格5); panel1.add(scrollPane1, BorderLayout.CENTER);// 面板中加入表格滚动条 panel2.add(scrollPane2, BorderLayout.CENTER); panel3.add(scrollPane3, BorderLayout.CENTER); panel4.add(scrollPane4, BorderLayout.CENTER); panel5.add(scrollPane5, BorderLayout.CENTER); fl1 = new JLabel(内容); fl1.setBounds(70, 460, 40, 20); panel1.add(fl1); fa1 = new JTextField(, 20); fa1.setBounds(110, 460, 100, 20); panel1.add(fa1); fa1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 1; list1.removeAll(); } }); fl2 = new JLabel(变量名); fl2.setBounds(230, 460, 50, 20); panel1.add(fl2); fa2 = new JTextField(, 20); fa2.setBounds(280, 460, 60, 20); panel1.add(fa2); fa2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 2; list1.removeAll(); } }); fl11 = new JLabel(行号); fl11.setBounds(370, 460, 40, 20); panel1.add(fl11); fa11 = new JTextField(, 20); fa11.setBounds(410, 460, 60, 20); panel1.add(fa11); fa11.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 11; list1.removeAll(); } }); fl12 = new JLabel(列号); fl12.setBounds(500, 460, 40, 20); panel1.add(fl12); fa12 = new JTextField(, 20); fa12.setBounds(540, 460, 60, 20); panel1.add(fa12); fa12.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 12; list1.removeAll(); } }); fl3 = new JLabel(宽度); fl3.setBounds(630, 460, 40, 20); panel1.add(fl3); fa3 = new JTextField(, 20); fa3.setBounds(670, 460, 60, 20); panel1.add(fa3); fa3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 3; list1.removeAll(); } }); fl4 = new JLabel(高度); fl4.setBounds(760, 460, 40, 20); panel1.add(fl4); fa4 = new JTextField(, 20); fa4.setBounds(800, 460, 60, 20); panel1.add(fa4); fa4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 4; list1.removeAll(); } }); fl5 = new JLabel(左边距); fl5.setBounds(60, 500, 50, 20); panel1.add(fl5); fa5 = new JTextField(, 20); fa5.setBounds(110, 500, 100, 20); panel1.add(fa5); fa5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 5; list1.removeAll(); } }); fl6 = new JLabel(到顶距); panel1.add(fl6); fa6 = new JTextField(, 20); panel1.add(fa6); fl6.setBounds(220, 500, 60, 20); fa6.setBounds(280, 500, 60, 20); fa6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 6; list1.removeAll(); } }); fl7 = new JLabel(字体); panel1.add(fl7); fa7 = new JTextField(, 20); panel1.add(fa7); fl7.setBounds(370, 500, 40, 20); fa7.setBounds(410, 500, 120, 20); fa7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 7; list1.removeAll(); for (int i = 0; i 字体.length; i++) { list1.add(字体 ); } } }); fl8 = new JLabel(字号); panel1.add(fl8); fa8 = new JTextField(, 20); panel1.add(fa8); fl8.setBounds(560, 500, 40, 20); fa8.setBounds(600, 500, 100, 20); fa8.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 8; list1.removeAll(); for (int i = 0; i 字号.length; i++) { list1.add(字号 ); } } }); list1.setBounds(840, 10, 120, 430); panel1.add(list1); list1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list1.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (当前列号) { case 0: // 表名 break; case 1: fa1.setText(list1.getSelectedItem()); break; case 2: fa2.setText(list1.getSelectedItem()); break; case 3: fa3.setText(list1.getSelectedItem()); break; case 4: fa4.setText(list1.getSelectedItem()); break; case 5: fa5.setText(list1.getSelectedItem()); break; case 6: fa6.setText(list1.getSelectedItem()); break; case 7: fa7.setText(list1.getSelectedItem()); break; case 8: fa8.setText(list1.getSelectedItem()); break; case 11: fa11.setText(list1.getSelectedItem()); break; case 12: fa12.setText(list1.getSelectedItem()); break; } } } }); final JButton addButton = new JButton(添加到表格中); addButton.setBounds(50, 540, 120, 20); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 创建表格行数组 int 选中行号 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i 表格模型1.getRowCount(); i++) { if ((表格模型1.getValueAt(i, 0) != null) (表格模型1.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(fa1.getText().trim()))) { 选中行号 = i; break; } } if (选中行号 0) { String ; int 数据1 = new int ; for (int i = 0; i 数据条数; i++) { // 保存为表格数据 for (int j = 0; j 10; j++) 数据 = 表格模型1.getValueAt(i, j).toString().trim(); for (int j = 4; j 10; j++) { if (j != 8) { if (数据 .length() 0) 数据1 = Integer.valueOf(数据 ); else 数据1 = 0; } } for (int j = 4; j 8; j++) { if (j != 5) 数据1 = 数据1 * 数据1 ; else 数据1 = (int) (数据1 * 数据1 * 1.3); 数据 = + 数据1 ; } } 表格模型1.setRowCount(0); for (int i = 0; i 数据条数; i++) 表格模型1.addRow(数据 ); } }); panel1.add(countButton); final JButton creButton = new JButton(表格内容存盘); creButton.setBounds(530, 540, 120, 20); creButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { char x1 = 10, x2 = 13, x3 = '', x4 = ','; file1 = new File(fa10.getText()); FileOutputStream fs; try { fs = new FileOutputStream(file1); for (int i = 0; i 表格模型1.getRowCount(); i++) { String s3 = 1,, s4 = ; for (int j = 0; j 10; j++) { if ((表格模型1.getValueAt(i, j) != null) (表格模型1.getValueAt(i, j).toString() .length() 0)) s3 = s3 + 表格模型1.getValueAt(i, j).toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } for (int i = 0; i 表格模型2.getRowCount(); i++) { String s3 = 2,, s4 = ; for (int j = 0; j 10; j++) { if ((表格模型2.getValueAt(i, j) != null) (表格模型2.getValueAt(i, j).toString() .length() 0)) s3 = s3 + 表格模型2.getValueAt(i, j).toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } for (int i = 0; i 表格模型3.getRowCount(); i++) { String s3 = 3,, s4 = ; for (int j = 0; j 7; j++) { if ((表格模型3.getValueAt(i, j) != null) (表格模型3.getValueAt(i, j).toString() .length() 0)) s3 = s3 + 表格模型3.getValueAt(i, j).toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } for (int i = 0; i 表格模型4.getRowCount(); i++) { String s3 = 4,, s4 = ; for (int j = 0; j 10; j++) { if ((表格模型4.getValueAt(i, j) != null) (表格模型4.getValueAt(i, j).toString() .length() 0)) s3 = s3 + 表格模型4.getValueAt(i, j).toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } for (int i = 0; i 表格模型5.getRowCount(); i++) { String s3 = 5,, s4 = ; for (int j = 0; j 10; j++) { if ((表格模型5.getValueAt(i, j) != null) (表格模型5.getValueAt(i, j).toString() .length() 0)) s3 = s3 + 表格模型5.getValueAt(i, j).toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } fs.close(); } catch (IOException e2) { JOptionPane.showMessageDialog(null, 写文件错。); } } }); panel1.add(creButton); final JButton clearButton = new JButton(清参数文本框); clearButton.setBounds(650, 540, 120, 20); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fa1.setText(); fa2.setText(0); fa3.setText(0); fa4.setText(0); fa5.setText(0); fa6.setText(0); fa7.setText(); fa8.setText(0); fa9.setText(); fa11.setText(0); fa12.setText(0); } }); panel1.add(clearButton); final JButton exitButton = new JButton(退出); exitButton.setBounds(770, 540, 120, 20); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel1.setVisible(false); frame1.setVisible(false); frame1.dispose(); frame2.setVisible(false); frame2.dispose(); frame3.setVisible(false); frame3.dispose(); frame4.setVisible(false); frame4.dispose(); frame5.setVisible(false); frame5.dispose(); } }); panel1.add(exitButton); fla1 = new JLabel(标签名称); fla1.setBounds(50, 460, 60, 20); panel2.add(fla1); faa1 = new JTextField(, 20); faa1.setBounds(110, 460, 100, 20); panel2.add(faa1); faa1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 1; list2.removeAll(); for (int i = 0; i 列数; i++) { list2.add(列名1 ); } } }); fla11 = new JLabel(行号); fla11.setBounds(240, 460, 40, 20); panel2.add(fla11); faa11 = new JTextField(, 20); faa11.setBounds(280, 460, 60, 20); panel2.add(faa11); faa11.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 11; list2.removeAll(); } }); fla12 = new JLabel(列号); fla12.setBounds(370, 460, 40, 20); panel2.add(fla12); faa12 = new JTextField(, 20); faa12.setBounds(410, 460, 60, 20); panel2.add(faa12); faa12.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 12; list2.removeAll(); } }); fla2 = new JLabel(宽度); fla2.setBounds(500, 460, 40, 20); panel2.add(fla2); faa2 = new JTextField(, 20); faa2.setBounds(540, 460, 60, 20); panel2.add(faa2); faa2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 2; list2.removeAll(); } }); fla3 = new JLabel(高度); fla3.setBounds(630, 460, 40, 20); panel2.add(fla3); faa3 = new JTextField(, 20); faa3.setBounds(670, 460, 60, 20); panel2.add(faa3); faa3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 3; list2.removeAll(); } }); fla4 = new JLabel(左边距); fla4.setBounds(750, 460, 50, 20); panel2.add(fla4); faa4 = new JTextField(, 20); faa4.setBounds(800, 460, 60, 20); panel2.add(faa4); faa4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 4; list2.removeAll(); } }); fla5 = new JLabel(字体); fla5.setBounds(70, 500, 40, 20); panel2.add(fla5); faa5 = new JTextField(, 20); faa5.setBounds(110, 500, 100, 20); panel2.add(faa5); faa5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 5; list2.removeAll(); for (int i = 0; i 字体.length; i++) { list2.add(字体 ); } } }); fla6 = new JLabel(字号); panel2.add(fla6); faa6 = new JTextField(, 20); panel2.add(faa6); fla6.setBounds(240, 500, 40, 20); faa6.setBounds(280, 500, 60, 20); faa6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 6; list2.removeAll(); for (int i = 0; i 字号.length; i++) { list2.add(字号 ); } } }); fla7 = new JLabel(有无下表格线); panel2.add(fla7); faa7 = new JTextField(, 20); panel2.add(faa7); fla7.setBounds(350, 500, 80, 20); faa7.setBounds(430, 500, 120, 20); faa7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 7; list2.removeAll(); list2.add(有); list2.add(无); } }); fla8 = new JLabel(有无右表格线); panel2.add(fla8); faa8 = new JTextField(, 20); panel2.add(faa8); fla8.setBounds(560, 500, 80, 20); faa8.setBounds(640, 500, 100, 20); faa8.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 8; list2.removeAll(); list2.add(有); list2.add(无); } }); faa1.setText(); faa2.setText(0); faa3.setText(0); faa4.setText(0); faa5.setText(0); faa6.setText(0); faa7.setText(); faa8.setText(0); faa11.setText(1); faa12.setText(1); list2.setBounds(840, 10, 120, 430); panel2.add(list2); list2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list2.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (当前列号) { case 1: faa1.setText(list2.getSelectedItem()); 字段序号 = list2.getSelectedIndex(); if ((,ntext,text,memo,image,long,lob,blob,clob,ole,varbinary,varchar,nvarchar,xml .lastIndexOf(, + 列数据类型 )) 0) { if (列数据宽度 列名1 .length()) faa2.setText( + 列数据宽度 ); else faa2.setText( + 列名1 .length()); faa3.setText(1); } faa5.setText(宋体); faa6.setText(12); faa7.setText(有); faa8.setText(有); break; case 2: faa2.setText(list2.getSelectedItem()); break; case 3: faa3.setText(list2.getSelectedItem()); break; case 4: faa4.setText(list2.getSelectedItem()); break; case 5: faa5.setText(list2.getSelectedItem()); break; case 6: faa6.setText(list2.getSelectedItem()); break; case 7: faa7.setText(list2.getSelectedItem()); break; case 8: faa8.setText(list2.getSelectedItem()); break; case 11: faa11.setText(list2.getSelectedItem()); break; case 12: faa12.setText(list2.getSelectedItem()); break; } } } }); 表格2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int 选中行号 = 表格2.getSelectedRow(); for (int j = 0; j 10; j++) { if (表格模型2.getValueAt(选中行号, j) != null) 当前值 = 表格模型2.getValueAt(选中行号, j).toString(); else 当前值 = ; switch (j) { case 0: faa1.setText(当前值.toString()); break; case 1: faa11.setText(当前值.toString()); break; case 2: faa12.setText(当前值.toString()); break; case 3: faa2.setText(当前值.toString()); break; case 4: faa3.setText(当前值.toString()); break; case 5: faa4.setText(当前值.toString()); break; case 6: faa5.setText(当前值.toString()); break; case 7: faa6.setText(当前值.toString()); break; case 8: faa7.setText(当前值.toString()); break; case 9: faa8.setText(当前值.toString()); break; } } } }); final JButton addButton1 = new JButton(添加到表格中); addButton1.setBounds(50, 540, 170, 20); addButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int 选中行号 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i 表格模型2.getRowCount(); i++) { if ((表格模型2.getValueAt(i, 0) != null) (表格模型2.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(faa1.getText().trim()))) { 选中行号 = i; break; } } if (选中行号 0) { String ; int 数据1 = new int ; for (int i = 0; i 数据条数; i++) { for (int j = 0; j 10; j++) 数据 = 表格模型2.getValueAt(i, j).toString().trim(); for (int j = 3; j 8; j++) { if (j != 6) { if (数据 .length() 0) 数据1 = Integer.valueOf(数据 ); else 数据1 = 0; } } for (int j = 3; j 6; j++) { if (j == 4) 数据1 = (int) (数据1 * 数据1 * 1.3); else 数据1 = 数据1 * 数据1 ; 数据 = + 数据1 ; } } 表格模型2.setRowCount(0); for (int i = 0; i 数据条数; i++) 表格模型2.addRow(数据 ); } }); panel2.add(countButton1); final JButton clearButton1 = new JButton(清参数文本框); clearButton1.setBounds(730, 540, 170, 20); clearButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { faa1.setText(); faa2.setText(0); faa3.setText(0); faa4.setText(0); faa5.setText(0); faa6.setText(0); faa7.setText(); faa8.setText(0); faa11.setText(1); faa12.setText(1); } }); panel2.add(clearButton1); flb1 = new JLabel(字段名称); flb1.setBounds(10, 460, 60, 20); panel3.add(flb1); fab1 = new JTextField(, 20); fab1.setBounds(70, 460, 100, 20); panel3.add(fab1); fab1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 1; list3.removeAll(); for (int i = 0; i 列数; i++) { list3.add(列名1 ); } } }); flb2 = new JLabel(宽度); flb2.setBounds(170, 460, 40, 20); panel3.add(flb2); fab2 = new JTextField(, 20); fab2.setBounds(210, 460, 60, 20); panel3.add(fab2); fab2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 2; list3.removeAll(); } }); flb3 = new JLabel(每行高度); flb3.setBounds(270, 460, 60, 20); panel3.add(flb3); fab3 = new JTextField(, 20); fab3.setBounds(330, 460, 60, 20); panel3.add(fab3); fab3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 3; list3.removeAll(); } }); flb4 = new JLabel(字体); flb4.setBounds(390, 460, 40, 20); panel3.add(flb4); fab4 = new JTextField(, 20); fab4.setBounds(430, 460, 100, 20); panel3.add(fab4); fab4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 4; list3.removeAll(); for (int i = 0; i 字体.length; i++) { list3.add(字体 ); } } }); flb5 = new JLabel(字号); panel3.add(flb5); fab5 = new JTextField(, 20); panel3.add(fab5); flb5.setBounds(530, 460, 40, 20); fab5.setBounds(570, 460, 60, 20); fab5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 5; list3.removeAll(); for (int i = 0; i 字号.length; i++) { list3.add(字号 ); } } }); flb6 = new JLabel(有无下表格线); panel3.add(flb6); fab6 = new JTextField(, 20); panel3.add(fab6); flb6.setBounds(630, 460, 80, 20); fab6.setBounds(710, 460, 60, 20); fab6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 6; list3.removeAll(); list3.add(有); list3.add(无); } }); flb7 = new JLabel(有无右表格线); panel3.add(flb7); fab7 = new JTextField(, 20); panel3.add(fab7); flb7.setBounds(770, 460, 80, 20); fab7.setBounds(850, 460, 60, 20); fab7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 7; list3.removeAll(); list3.add(有); list3.add(无); } }); list3.setBounds(840, 10, 120, 430); panel3.add(list3); list3.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list3.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (当前列号) { case 1: fab1.setText(list3.getSelectedItem()); 字段序号 = list3.getSelectedIndex(); if ((,ntext,text,memo,image,long,lob,blob,clob,ole,varbinary,varchar,nvarchar,xml .lastIndexOf(, + 列数据类型 )) 0) { if (列数据宽度 列名1 .length()) fab2.setText( + 列数据宽度 ); else fab2.setText( + 列名1 .length()); } fab3.setText(1); fab4.setText(宋体); fab5.setText(12); fab6.setText(有); fab7.setText(有); break; case 2: fab2.setText(list3.getSelectedItem()); break; case 3: fab3.setText(list3.getSelectedItem()); break; case 4: fab4.setText(list3.getSelectedItem()); break; case 5: fab5.setText(list3.getSelectedItem()); break; case 6: fab6.setText(list3.getSelectedItem()); break; case 7: fab7.setText(list3.getSelectedItem()); break; } } } }); 表格3.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int 选中行号 = 表格3.getSelectedRow(); for (int j = 0; j 7; j++) { if (表格模型3.getValueAt(选中行号, j) != null) 当前值 = 表格模型3.getValueAt(选中行号, j).toString(); else 当前值 = ; switch (j) { case 0: fab1.setText(当前值.toString()); break; case 1: fab2.setText(当前值.toString()); break; case 2: fab3.setText(当前值.toString()); break; case 3: fab4.setText(当前值.toString()); break; case 4: fab5.setText(当前值.toString()); break; case 5: fab6.setText(当前值.toString()); break; case 6: fab7.setText(当前值.toString()); break; } } } }); final JButton addButton2 = new JButton(添加到表格中); addButton2.setBounds(50, 540, 170, 20); addButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int 选中行号 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i 表格模型3.getRowCount(); i++) { if ((表格模型3.getValueAt(i, 0) != null) (表格模型3.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(fab1.getText().trim()))) { 选中行号 = i; break; } } if (选中行号 0) { String ; int 数据1 = new int ; for (int i = 0; i 数据条数; i++) { for (int j = 0; j 7; j++) { 数据 = 表格模型3.getValueAt(i, j).toString().trim(); } for (int j = 1; j 5; j++) { if (j != 3) { if (数据 .length() 0) 数据1 = Integer.valueOf(数据 ); else 数据1 = 0; } } 数据1 = 数据1 * 数据1 ; 数据 = + 数据1 ; 数据1 = 数据1 * 数据1 ; 数据 = + 数据1 ; } 表格模型3.setRowCount(0); for (int i = 0; i 数据条数; i++) 表格模型3.addRow(数据 ); } }); panel3.add(countButton2); final JButton clearButton2 = new JButton(清参数文本框); clearButton2.setBounds(730, 540, 170, 20); clearButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fab1.setText(); fab2.setText(0); fab3.setText(1); fab4.setText(宋体); fab5.setText(0); fab6.setText(有); fab7.setText(有); } }); panel3.add(clearButton2); flc1 = new JLabel(内容); flc1.setBounds(70, 360, 40, 20); panel4.add(flc1); fac1 = new JTextField(, 20); fac1.setBounds(110, 360, 100, 20); panel4.add(fac1); fac1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 1; list4.removeAll(); } }); flc2 = new JLabel(变量名); flc2.setBounds(230, 360, 50, 20); panel4.add(flc2); fac2 = new JTextField(, 20); fac2.setBounds(280, 360, 60, 20); panel4.add(fac2); fac2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 2; list4.removeAll(); } }); flc11 = new JLabel(行号); flc11.setBounds(370, 360, 40, 20); panel4.add(flc11); fac11 = new JTextField(, 20); fac11.setBounds(410, 360, 60, 20); panel4.add(fac11); fac11.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 11; list4.removeAll(); } }); flc12 = new JLabel(列号); flc12.setBounds(500, 360, 40, 20); panel4.add(flc12); fac12 = new JTextField(, 20); fac12.setBounds(540, 360, 60, 20); panel4.add(fac12); fac12.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 12; list4.removeAll(); } }); flc3 = new JLabel(宽度); flc3.setBounds(630, 360, 40, 20); panel4.add(flc3); fac3 = new JTextField(, 20); fac3.setBounds(670, 360, 60, 20); panel4.add(fac3); fac3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 3; list4.removeAll(); } }); flc4 = new JLabel(高度); flc4.setBounds(760, 360, 40, 20); panel4.add(flc4); fac4 = new JTextField(, 20); fac4.setBounds(800, 360, 60, 20); panel4.add(fac4); fac4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 4; list4.removeAll(); } }); flc5 = new JLabel(左边距); flc5.setBounds(60, 400, 50, 20); panel4.add(flc5); fac5 = new JTextField(, 20); fac5.setBounds(110, 400, 100, 20); panel4.add(fac5); fac5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 5; list4.removeAll(); } }); flc6 = new JLabel(到顶距); panel4.add(flc6); fac6 = new JTextField(, 20); panel4.add(fac6); flc6.setBounds(220, 400, 60, 20); fac6.setBounds(280, 400, 60, 20); fac6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 6; list4.removeAll(); } }); flc7 = new JLabel(字体); panel4.add(flc7); fac7 = new JTextField(, 20); panel4.add(fac7); flc7.setBounds(370, 400, 40, 20); fac7.setBounds(410, 400, 120, 20); fac7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 7; list4.removeAll(); for (int i = 0; i 字体.length; i++) { list4.add(字体 ); } } }); flc8 = new JLabel(字号); panel4.add(flc8); fac8 = new JTextField(, 20); panel4.add(fac8); flc8.setBounds(560, 400, 40, 20); fac8.setBounds(600, 400, 100, 20); fac8.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 8; list4.removeAll(); for (int i = 0; i 字号.length; i++) { list4.add(字号 ); } } }); list4.setBounds(840, 10, 120, 330); panel4.add(list4); list4.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list4.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (当前列号) { case 1: fac1.setText(list4.getSelectedItem()); break; case 2: fac2.setText(list4.getSelectedItem()); break; case 3: fac3.setText(list4.getSelectedItem()); break; case 4: fac4.setText(list4.getSelectedItem()); break; case 5: fac5.setText(list4.getSelectedItem()); break; case 6: fac6.setText(list4.getSelectedItem()); break; case 7: fac7.setText(list4.getSelectedItem()); break; case 8: fac8.setText(list4.getSelectedItem()); break; case 11: fac11.setText(list4.getSelectedItem()); break; case 12: fac12.setText(list4.getSelectedItem()); break; } } } }); 表格4.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int 选中行号 = 表格4.getSelectedRow(); for (int j = 0; j 10; j++) { if (表格模型4.getValueAt(选中行号, j) != null) 当前值 = 表格模型4.getValueAt(选中行号, j).toString(); else 当前值 = ; switch (j) { case 0: fac1.setText(当前值.toString()); break; case 1: fac2.setText(当前值.toString()); break; case 2: fac11.setText(当前值.toString()); break; case 3: fac12.setText(当前值.toString()); break; case 4: fac3.setText(当前值.toString()); break; case 5: fac4.setText(当前值.toString()); break; case 6: fac5.setText(当前值.toString()); break; case 7: fac6.setText(当前值.toString()); break; case 8: fac7.setText(当前值.toString()); break; case 9: fac8.setText(当前值.toString()); break; case 10: fac9.setText(当前值.toString()); break; } } } }); final JButton addButton4 = new JButton(添加到表格中); addButton4.setBounds(50, 440, 170, 20); addButton4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int 选中行号 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i 表格模型4.getRowCount(); i++) { if ((表格模型4.getValueAt(i, 0) != null) (表格模型4.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(fac1.getText().trim()))) { 选中行号 = i; break; } } if (选中行号 0) { String ; int 数据1 = new int ; for (int i = 0; i 数据条数; i++) { for (int j = 0; j 10; j++) 数据 = 表格模型4.getValueAt(i, j).toString().trim(); for (int j = 4; j 10; j++) { if (j != 8) { if (数据 .length() 0) 数据1 = Integer.valueOf(数据 ); else 数据1 = 0; } } for (int j = 4; j 8; j++) { if (j != 5) 数据1 = 数据1 * 数据1 ; else 数据1 = (int) (数据1 * 数据1 * 1.3); // 高度 数据 = + 数据1 ; } } // 更新表格数据 表格模型4.setRowCount(0); for (int i = 0; i 数据条数; i++) 表格模型4.addRow(数据 ); } }); panel4.add(countButton4); final JButton clearButton4 = new JButton(清参数文本框); clearButton4.setBounds(730, 440, 170, 20); clearButton4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fac1.setText(); fac2.setText(0); fac3.setText(0); fac4.setText(0); fac5.setText(0); fac6.setText(0); fac7.setText(); fac8.setText(0); fac9.setText(); fac11.setText(0); fac12.setText(0); } }); panel4.add(clearButton4); /* 表尾页 */ fld1 = new JLabel(内容); fld1.setBounds(70, 360, 40, 20); panel5.add(fld1); fad1 = new JTextField(, 20); fad1.setBounds(110, 360, 100, 20); panel5.add(fad1); fad1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 1; list5.removeAll(); } }); fld2 = new JLabel(变量名); fld2.setBounds(230, 360, 50, 20); panel5.add(fld2); fad2 = new JTextField(, 20); fad2.setBounds(280, 360, 60, 20); panel5.add(fad2); fad2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 2; list5.removeAll(); } }); fld11 = new JLabel(行号); fld11.setBounds(370, 360, 40, 20); panel5.add(fld11); fad11 = new JTextField(, 20); fad11.setBounds(410, 360, 60, 20); panel5.add(fad11); fad11.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 11; list5.removeAll(); } }); fld12 = new JLabel(列号); fld12.setBounds(500, 360, 40, 20); panel5.add(fld12); fad12 = new JTextField(, 20); fad12.setBounds(540, 360, 60, 20); panel5.add(fad12); fad12.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 12; list5.removeAll(); } }); fld3 = new JLabel(宽度); fld3.setBounds(630, 360, 40, 20); panel5.add(fld3); fad3 = new JTextField(, 20); fad3.setBounds(670, 360, 60, 20); panel5.add(fad3); fad3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 3; list5.removeAll(); } }); fld4 = new JLabel(高度); fld4.setBounds(760, 360, 40, 20); panel5.add(fld4); fad4 = new JTextField(, 20); fad4.setBounds(800, 360, 60, 20); panel5.add(fad4); fad4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 4; list5.removeAll(); } }); fld5 = new JLabel(左边距); fld5.setBounds(60, 400, 50, 20); panel5.add(fld5); fad5 = new JTextField(, 20); fad5.setBounds(110, 400, 100, 20); panel5.add(fad5); fad5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 5; list5.removeAll(); } }); fld6 = new JLabel(到顶距); panel5.add(fld6); fad6 = new JTextField(, 20); panel5.add(fad6); fld6.setBounds(220, 400, 60, 20); fad6.setBounds(280, 400, 60, 20); fad6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 6; list5.removeAll(); } }); fld7 = new JLabel(字体); panel5.add(fld7); fad7 = new JTextField(, 20); panel5.add(fad7); fld7.setBounds(370, 400, 40, 20); fad7.setBounds(410, 400, 120, 20); fad7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 7; list5.removeAll(); for (int i = 0; i 字体.length; i++) { list5.add(字体 ); } } }); fld8 = new JLabel(字号); panel5.add(fld8); fad8 = new JTextField(, 20); panel5.add(fad8); fld8.setBounds(560, 400, 40, 20); fad8.setBounds(600, 400, 100, 20); fad8.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { 当前列号 = 8; list5.removeAll(); for (int i = 0; i 字号.length; i++) { list5.add(字号 ); } } }); list5.setBounds(840, 10, 170, 330); panel5.add(list5); list5.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list5.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (当前列号) { case 1: fad1.setText(list5.getSelectedItem()); break; case 2: fad2.setText(list5.getSelectedItem()); break; case 3: fad3.setText(list5.getSelectedItem()); break; case 4: fad4.setText(list5.getSelectedItem()); break; case 5: fad5.setText(list5.getSelectedItem()); break; case 6: fad6.setText(list5.getSelectedItem()); break; case 7: fad7.setText(list5.getSelectedItem()); break; case 8: fad8.setText(list5.getSelectedItem()); break; case 11: fad11.setText(list5.getSelectedItem()); break; case 12: fad12.setText(list5.getSelectedItem()); break; } } } }); 表格5.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int 选中行号 = 表格5.getSelectedRow(); for (int j = 0; j 10; j++) { if (表格模型5.getValueAt(选中行号, j) != null) 当前值 = 表格模型5.getValueAt(选中行号, j).toString(); else 当前值 = ; switch (j) { case 0: fad1.setText(当前值.toString()); break; case 1: fad2.setText(当前值.toString()); break; case 2: fad11.setText(当前值.toString()); break; case 3: fad12.setText(当前值.toString()); break; case 4: fad3.setText(当前值.toString()); break; case 5: fad4.setText(当前值.toString()); break; case 6: fad5.setText(当前值.toString()); break; case 7: fad6.setText(当前值.toString()); break; case 8: fad7.setText(当前值.toString()); break; case 9: fad8.setText(当前值.toString()); break; case 10: fad9.setText(当前值.toString()); break; } } } }); final JButton addButton5 = new JButton(添加到表格中); addButton5.setBounds(50, 440, 170, 20); addButton5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int 选中行号 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i 表格模型5.getRowCount(); i++) { if ((表格模型5.getValueAt(i, 0) != null) (表格模型5.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(fad1.getText().trim()))) { 选中行号 = i; break; } } if (选中行号 0) { String ; int 数据1 = new int ; for (int i = 0; i 数据条数; i++) { for (int j = 0; j 10; j++) 数据 = 表格模型5.getValueAt(i, j).toString().trim(); for (int j = 4; j 10; j++) { if (j != 8) { if (数据 .length() 0) 数据1 = Integer.valueOf(数据 ); else 数据1 = 0; } } for (int j = 4; j 8; j++) { if (j != 5) 数据1 = 数据1 * 数据1 ; else 数据1 = (int) (数据1 * 数据1 * 1.12); 数据 = + 数据1 ; } } 表格模型5.setRowCount(0); for (int i = 0; i 数据条数; i++) 表格模型5.addRow(数据 ); } }); panel5.add(countButton5); final JButton clearButton5 = new JButton(清参数文本框); clearButton5.setBounds(730, 440, 170, 20); clearButton5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fad1.setText(); fad2.setText(0); fad3.setText(0); fad4.setText(0); fad5.setText(0); fad6.setText(0); fad7.setText(); fad8.setText(0); fad9.setText(); fad11.setText(0); fad12.setText(0); } }); panel5.add(clearButton5); frame5.add(panel5); frame4.add(panel4); frame3.add(panel3); frame2.add(panel2); frame1.add(panel1); frame5.setVisible(true); // 安装窗口 frame4.setVisible(true); frame3.setVisible(true); frame2.setVisible(true); frame1.setVisible(true); } } 16.源码16,部件程序:表格式报表打印预览 /* * 程序文件名:dataPreview1.java * 作者:程传庆 * 程序功能:根据打印格式文件内容打印预览所传入的表格数据报表。 * 属于单数据表的表格式报表打印预览。 * 要求先利用程序printFormat1.java生成格式文件。 * 在上级程序中生成表格数据, * 通过String 表格数据,传入打印内容 * 通过String 格式文件名,说明打印格式文件的名称。 * 再根据格式文件预览打印结构与内容。 * 注意格式文件中关于表头、数据内容等的描述要和打印格式文件一致。 * 包括字段名称、顺序、类型都必须一致。 * 调用命令:dataPreview1.printView1(表格数据,格式文件名); */ import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.GeneralPath; import java.awt.geom.Point2D; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Random; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.Timer; import javax.swing.UIManager; public class dataPreview1 extends JComponent { private static JFrame frame1; private static String 接口文件名; private static String s1 = , s2 = ; private static int 记录条数 = 0, 列数 = 0; private static int 标签 = new struct2 ; 左边 = Integer.valueOf(tableTitle.get(0).tableTitle ); 左边 = 左边 / 2; for (int i = 0; i tableTitle.size(); i++) 标签 = tableTitle.get(i); g3.setFont(new Font(标签 .tableTitle , Font.PLAIN, Integer .valueOf(标签 .tableTitle )));// 设置字体 for (int i = 0; i tableTitle.size(); i++) { x1 = 左边; y1 = 到顶; w1 = Integer.valueOf(标签 .tableTitle ); h1 = Integer.valueOf(标签 .tableTitle ); g3.drawLine(x1, y1, x1 + w1, y1); g3.drawLine(x1, y1, x1, y1 + h1); g3.drawString(标签 .tableTitle , 左边 + 2, 到顶 + h1); if (标签 .tableTitle .equals(有)) g3.drawLine(x1, y1 + h1, x1 + w1, y1 + h1); if (标签 .tableTitle .equals(有)) g3.drawLine(x1 + w1, y1, x1 + w1, y1 + h1); 左边 = 左边 + w1; if ((i tableTitle.size() - 1) (Integer.valueOf(标签 .tableTitle ) Integer .valueOf(标签 .tableTitle ))) 到顶 = 到顶 + h1; } 到顶 = 到顶 + h1; } protected void paintComponent(Graphics g1) { g = g1; g3 = (Graphics2D) g; struct1 ; 到顶 = 0; 左边 = 0; for (int i = 0; i title.size(); i++) { 标题 = title.get(i); g3.setFont(new Font(标题 .title , Font.PLAIN, Integer .valueOf(标题 .title )));// 设置字体 x1 = Integer.valueOf(标题 .title ); // y1 = Integer.valueOf(标题 .title ); // g3.drawString(标题 .title , x1, y1); 到顶 = y1 + Integer.valueOf(标题 .title ); } title(); struct3 ; int ; int ; int ; for (int i = 0; i table1.size(); i++) { 表体 = table1.get(i); w10 = Integer.valueOf(表体 .table1 ); h10 = Integer.valueOf(表体 .table1 ); h20 = Integer.valueOf(表体 .table1 ); } y1 = 到顶; g3.setFont(new Font(表体 .table1 , Font.PLAIN, Integer .valueOf(表体 .table1 )));// 设置字体 for (int j = 0; j 记录条数; j++) { x1 = Integer.valueOf(tableTitle.get(0).tableTitle ) / 2; g3.drawLine(x1, y1, x1, y1 + h1); for (int i = 0; i table1.size(); i++) { if (表格数据 == null) 表格数据 = ; g3.drawString(表格数据 , x1 + 2, y1 + h20 ); if (表体 .table1 .equals(有)) g3.drawLine(x1, y1 + h10 , x1 + w10 , y1 + h10 ); if (表体 .table1 .equals(有)) g3.drawLine(x1 + w10 , y1, x1 + w10 , y1 + h10 ); x1 = x1 + w10 ; } y1 = y1 + h10 ; if (y1 = 页高) { struct4 ; for (int i1 = 0; i1 table2.size(); i1++) { 页尾 = table2.get(i1); g3.setFont(new Font(页尾 .table2 , Font.PLAIN, Integer .valueOf(页尾 .table2 )));// 设置字体 x1 = Integer.valueOf(页尾 .table2 ); y1 = Integer.valueOf(页尾 .table2 ); g3.drawString(页尾 .table2 , x1, y1); 到顶 = y1 + Integer.valueOf(页尾 .table2 ); } y1 = 640; break; } } y1 = y1 + h10 ; struct5 ; for (int i = 0; i table3.size(); i++) { 表尾 = table3.get(i); g3.setFont(new Font(表尾 .table3 , Font.PLAIN, Integer .valueOf(表尾 .table3 )));// 设置字体 x1 = Integer.valueOf(表尾 .table3 ); y1 = y1 + Integer.valueOf(表尾 .table3 ) / 2; g3.drawString(表尾 .table3 , x1, y1); } } /** 主程序,创建界面 */ static void printView1(String 表格数据1, String 格式文件名) { s1 = ; s2 = ; 记录条数 = 0; 列数 = 0; title = new ArrayListstruct1(); tableTitle = new ArrayListstruct2(); table1 = new ArrayListstruct3(); table2 = new ArrayListstruct4(); table3 = new ArrayListstruct5(); 页高 = 600; x1 = 0; y1 = 0; w1 = 0; h1 = 0; 左边 = 0; 到顶 = 0; 接口文件名 = 格式文件名; frame1 = new JFrame(报表预览程序 作者:程传庆); frame1.setBounds(10, 10, 1000, 1000); frame1.add(new dataPreview1()); frame1.setVisible(true); File file1 = new File(接口文件名); try { if (file1.exists()) { // 如果文件存在 FileReader fr = new FileReader(file1);// 读方式打开文件 BufferedReader br = new BufferedReader(fr);// 建立文件输入字符流 String tempStr = null; for (int i = 0; (tempStr = br.readLine()) != null; i++) {// 读文件 if (tempStr.substring(0, 2).equals(1,)) { title.add(new struct1(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(2,)) { tableTitle.add(new struct2(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(3,)) { table1.add(new struct3(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(4,)) { table2.add(new struct4(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(5,)) { table3.add(new struct5(tempStr.substring(2, tempStr.length()).split(。))); } } } } catch (IOException e2) { JOptionPane.showMessageDialog(null, 打开文件错!); } String s3 = ; for (int i = 0; i table1.size(); i++) { if (s3.length() == 0) s3 = table1.get(i).table1 ; else s3 = s3 + , + table1.get(i).table1 ; } 记录条数 = 表格数据1.length; 列数 = 表格数据1 .length; 表格数据 = new String ; for (int i = 0; i 记录条数; i++) { for (int j = 0; j 列数; j++) 表格数据 = 表格数据1 ; } } } 17.源码17.部件程序,表格式报表打印。 /* * 程序文件名:dataPrint1.java * 作者:程学先 * 程序功能:根据打印格式文件内容打印预览所传入的表格数据报表。 * 属于单数据表的表格式报表打印。 * 要求先利用程序printFormat1.java生成格式文件。 * 在上级程序中生成表格数据, * 通过String 表格数据,传入打印内容 * 通过String 格式文件名,说明打印格式文件的名称。 * 就可根据格式文件打印报表。 * 注意格式文件中关于表头、数据内容等的描述要和打印格式文件一致。 * 包括字段名称、顺序、类型都必须一致。 * 调用命令:dataPrint1.print1(表格数据1,格式文件名) */ import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.print.PageFormat; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JFrame; public class dataPrint1 extends JFrame { private static String 接口文件名; private static int 记录条数 = 0, 列数 = 0; private static String 表格数据; private static ArrayListstruct1 title = new ArrayListstruct1(); private static ArrayListstruct2 tableTitle = new ArrayListstruct2(); private static ArrayListstruct3 table1 = new ArrayListstruct3(); private static ArrayListstruct4 table2 = new ArrayListstruct4(); private static ArrayListstruct5 table3 = new ArrayListstruct5(); private static int 页高 = 600; private static int x1 = 0, y1 = 0, w1 = 0, h1 = 0, 左边 = 0, 到顶 = 0; private PageFormat pf; private static Graphics2D g2; static void title() { struct2 ; 左边 = Integer.valueOf(tableTitle.get(0).tableTitle ); 左边 = 左边 / 2; for (int i = 0; i tableTitle.size(); i++) 标签 = tableTitle.get(i); g2.setFont(new Font(标签 .tableTitle , Font.PLAIN, Integer .valueOf(标签 .tableTitle ))); for (int i = 0; i tableTitle.size(); i++) { x1 = 左边; y1 = 到顶; w1 = Integer.valueOf(标签 .tableTitle ); h1 = Integer.valueOf(标签 .tableTitle ); g2.drawLine(x1, y1, x1 + w1, y1); g2.drawLine(x1, y1, x1, y1 + h1); g2.drawString(标签 .tableTitle , 左边 + 2, 到顶 + h1); if (标签 .tableTitle .equals(有)) g2.drawLine(x1, y1 + h1, x1 + w1, y1 + h1); if (标签 .tableTitle .equals(有)) g2.drawLine(x1 + w1, y1, x1 + w1, y1 + h1); 左边 = 左边 + w1; if ((i tableTitle.size() - 1) (Integer.valueOf(标签 .tableTitle ) Integer .valueOf(标签 .tableTitle ))) 到顶 = 到顶 + h1; } 到顶 = 到顶 + h1; } public static void print1(String 表格数据1, String 格式文件名) { 记录条数 = 0; 列数 = 0; title = new ArrayListstruct1(); tableTitle = new ArrayListstruct2(); table1 = new ArrayListstruct3(); table2 = new ArrayListstruct4(); table3 = new ArrayListstruct5(); 页高 = 600; x1 = 0; y1 = 0; w1 = 0; h1 = 0; 左边 = 0; 到顶 = 0; 接口文件名 = 格式文件名; dataPrint1 frame = new dataPrint1(); frame.setTitle(报表打印程序 作者:程学先); frame.pf = new PageFormat(); frame.pf.setOrientation(PageFormat.LANDSCAPE); File file1 = new File(接口文件名); try { if (file1.exists()) { FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); String tempStr = null; for (int i = 0; (tempStr = br.readLine()) != null; i++) { if (tempStr.substring(0, 2).equals(1,)) { title.add(new struct1(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(2,)) { tableTitle.add(new struct2(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(3,)) { table1.add(new struct3(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(4,)) { table2.add(new struct4(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(5,)) { table3.add(new struct5(tempStr.substring(2, tempStr.length()).split(。))); } } } } catch (IOException e2) { JOptionPane.showMessageDialog(null, 打开文件错!); } String s3 = ; for (int i = 0; i table1.size(); i++) { if (s3.length() == 0) s3 = table1.get(i).table1 ; else s3 = s3 + , + table1.get(i).table1 ; } 记录条数 = 表格数据1.length; 列数 = 表格数据1 .length; 表格数据 = new String ; for (int i = 0; i 记录条数; i++) { for (int j = 0; j 列数; j++) 表格数据 = 表格数据1 ; } final PrinterJob job = PrinterJob.getPrinterJob(); if (!job.printDialog()) return; job.setPrintable(new Printable() { public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { if (pageIndex 1) { g2 = (Graphics2D) graphics; g2.setStroke(new BasicStroke(1f)); struct1 ; 到顶 = 0; 左边 = 0; for (int i = 0; i title.size(); i++) { 标题 = title.get(i); g2.setFont(new Font(标题 .title , Font.PLAIN, Integer .valueOf(标题 .title ))); x1 = Integer.valueOf(标题 .title ); y1 = Integer.valueOf(标题 .title ); g2.drawString(标题 .title , x1, y1); 到顶 = y1 + Integer.valueOf(标题 .title ); } title(); struct3 ; int ; int ; int ; for (int i = 0; i table1.size(); i++) { 表体 = table1.get(i); w10 = Integer.valueOf(表体 .table1 ); h10 = Integer.valueOf(表体 .table1 ); h20 = Integer.valueOf(表体 .table1 ); } y1 = 到顶; for (int j = 0; j 记录条数; j++) { x1 = Integer.valueOf(tableTitle.get(0).tableTitle ) / 2; g2.drawLine(x1, y1, x1, y1 + h1); for (int i = 0; i table1.size(); i++) { if (表格数据 == null) 表格数据 = ; g2.drawString(表格数据 , x1 + 2, y1 + h20 ); if (表体 .table1 .equals(有)) g2.drawLine(x1, y1 + h10 , x1 + w10 , y1 + h10 ); if (表体 .table1 .equals(有)) g2.drawLine(x1 + w10 , y1, x1 + w10 , y1 + h10 ); x1 = x1 + w10 ; } y1 = y1 + h10 ; if (y1 = 页高) { struct4 ; for (int i1 = 0; i1 table2.size(); i1++) { 页尾 = table2.get(i1); g2.setFont(new Font(页尾 .table2 , Font.PLAIN, Integer .valueOf(页尾 .table2 ))); x1 = Integer.valueOf(页尾 .table2 ); y1 = Integer.valueOf(页尾 .table2 ); g2.drawString(页尾 .table2 , x1, y1); 到顶 = y1 + Integer.valueOf(页尾 .table2 ); } y1 = 640; break; } } y1 = y1 + h10 ; struct5 ; for (int i = 0; i table3.size(); i++) { 表尾 = table3.get(i); g2.setFont(new Font(表尾 .table3 , Font.PLAIN, Integer.valueOf(表尾 .table3 ))); x1 = Integer.valueOf(表尾 .table3 ); y1 = y1 + Integer.valueOf(表尾 .table3 ) / 2; g2.drawString(表尾 .table3 , x1, y1); } return Printable.PAGE_EXISTS; } else { return Printable.NO_SUCH_PAGE; } } }); try { job.print(); } catch (Exception e1) { e1.printStackTrace(); } frame.dispose(); } } 18.源码18.部件程序,定查询条件表达式的多数据表单一条件或二条件查询程序,可变换标签,可分组统计,可按格式打印报表。 /** * 程序文件名:dataQuery9.java * 作者:程学先 * 完成时间:2013年11月27日 * 部件功能:在参数中直接给定查询条件表达式的主题部分和输出要求多表单条件或二条件查询程序, * 程序允许利用字典表做标签的变换。 * 可按格式文件组织打印。运行时程序提供单个或二个文本框供输入查询数据,之后组织查询。 * 被调用语句:datadataQuery9.means(parameter);由主程序调用。 * 要求提供的参数:“表名集”、“条件表达式”。 * 条件表达式可以由一个也可以由二个条件式构成。如果二个,之间可以用“与”或“或者”联系。 * 每个条件式都由一个字段名加一个关系符再加一个问号组成。其格式为 ?。 * 例如:“姓名等于?”、“简历包含?”、“学号等于?与分数大于等于?”等。 * 关系符只能从{大于、 小于、等于、大于等于、小于等于、不等于、包含、不包含}中选择一个, * 如果输入错误会导致程序显示错误或无法进行查询。 * 数据表表名可以是一个表,可以是多个表,可以含代码表。必须借本系统菜单生成程序应用鼠标从列表框中选择生成。 * 选表时,每新加一个表,都必须和前面某个表有一个相同字段名。 * 例如输入顺序是:数据表1、代码表1、代码表2、数据表2、代码表3等。 * 其中代码表1、代码表2是数据表1的代码表,代码表3是数据表2的代码表。数据表1和数据表2有同名字段。 * 问号可以用中文问号也可以用英文问号,每个条件中必须在最后有一个问号。 * 条件表达式不得超过2个,如果是二个条件之间必须有“与”或“或者”。 * 查询结果可以与其他部件程序一样根据所选择字段输出,如果填写了输出要求,也可以根据输出要求输出。 * 输出要求parameter 中填写由字段名或简单的加减乘除表达式构成的SQL语句能识别的子句。 * 注意如果是多表,当字段名为二表共有时,写输出要求必须在字段名前加 表名和点。 * 例如:学生.学号 as 学号,姓名,班级,专业,分数*20 as 成绩 * 则输出为有学号、姓名、班级、专业、成绩等列数据的表。 * 输出要求如果有聚集函数或其他函数,必须遵循相关规则。 * 例如如果求聚集函数值,除聚集函数外只能有份组字段,不能同时有其他字段。 * 允许给出分组字段要求,只能按组输出统计数据。 * 在输出要求中如果涉及常量,输入数据时要求能根据数据类型加英文单引号或不加引号。 * 如果是数字量或者是字段名,不加引号,如果是字符类数据,必须加单引号。 * 例如:sum(收入) as 总收入,avg(收入) as 平均收入 * 如果需要打印,要求先通过桌面系统调用“printFormat1.java”程序, * 根据输入的格式文件名生成打印格式文件,在调用本程序时必须给定参数:打印格式文件名。 * 在调用本程序时必须给定参数:打印格式文件名。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery9 extends JFrame { static dataQuery9 frame = new dataQuery9(); static String 表名; static String 字典表名; static String 表名表; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField, aTextField2; static JButton b1, b2; static String s1 = ; static ResultSet rs; static int b = 0, c = 0; static int 列数; static int 表格列数; static String 列名; static String 指定的字段名 = , 字段名串 = , 字段名串1 = ; static String 关系表 = { { , 大于 }, { , 小于 }, { = , 等于 }, { = , 大于等于 }, { = , 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; static String 列数据类型; static String 列数据宽度; static int 字段号表; static int 左边距 = 80; static String 按钮集 = null; static String 要求按钮号表; static JButton printViewButton, printButton; public static void means(final String = ; 关系表 = 大于; 关系表 = ; 关系表 = 小于; 关系表 = = ; 关系表 = 等于; 关系表 = = ; 关系表 = 大于等于; 关系表 = = ; 关系表 = 小于等于; 关系表 = ; 关系表 = 不等于; 关系表 = like ; 关系表 = 包含; 关系表 = not like ; 关系表 = 不包含; String ; 按钮数 = 0; for (int i0 = 0; i0 按钮集01.length; i0++) 按钮集 = 按钮集01 ; if (parameter .length() 0) { 要求按钮号表 = parameter ;// 需要显示的按钮的顺序号 // 将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表 = 要求按钮号表.replaceAll(;, ;); 要求按钮号表 = 要求按钮号表.replaceAll(。, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); if (要求按钮号表.indexOf(;) 0) { // 如果有按钮更名要求 String s601 .indexOf(;) 0) { String s602 .split(;); 按钮集 ))] = s602 ; 要求按钮号表 = 要求按钮号表 + , + s602 ;// 只留号,去更名 按钮数++; } else { 要求按钮号表 = 要求按钮号表 + , + s601 ;// 只留号,原无更名 按钮数++; } } } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表 = 要求按钮号表 + , + s601 ; 按钮数++; } } } else { 要求按钮号表 = ; // 没输入要求按钮号,定全部按钮号 for (int i1 = 0; i1 按钮集.length; i1++) { if (i1 == 0) 要求按钮号表 = 要求按钮号表 + i1; else 要求按钮号表 = 要求按钮号表 + , + i1; 按钮数++; } } 要求按钮号表 = , + 要求按钮号表 + ,; 窗口宽 = main1.窗口宽; 窗口高 = main1.窗口高; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter );// 宽度参数 m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 表名 = parameter ; 连接条件 = parameter ; 打印格式文件名 = parameter ; 字段名字串 = parameter ; if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); String .length() 0) { 字段号表 = parameter .split(,); 列名 = new String ; for (int i = 0; i 字段号表.length; i++) { 列名 = s6 )]; 列名 = 列名 ; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; } else { 列名 = new String ; for (int i = 0; i s6.length; i++) { 列名 = s6 ; 列名 = 列名 ; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; s2 = * ; } String s11 = 表名; if (表名.indexOf(,) 0) { String ; } 表名表 = parameter ; 字典表名 = ; 打印格式文件名 = parameter ; 条件表达式 = parameter ; 输出要求 = parameter ; String .lastIndexOf(s11 + 字典表) = 0) 字典表名 = t1 ; } if (字典表名.length() 0) { try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + 字典表名; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int 列数0 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); // 记录数 String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); // 字段名 s15 = rs.getString(2).trim(); // 标签名 for (int j = 0; j 列名 .length; j++) { if (列名 .trim().equalsIgnoreCase(s14.trim())) { 列名 = s15; break; } else if ((列名 .trim() + ,).indexOf(. + s14 + ,) 0) { 列名 = 列名 .replace(s14, s15); break; } } } rs.close(); // 关闭查询结果集 con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } String ; 条件 = 条件表达式; } if (条件 .lastIndexOf(大于等于) 0) { 关系符0 = =; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(大于等于)); } else if (条件 .lastIndexOf(小于等于) 0) { 关系符0 = =; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(小于等于)); } else if (条件 .lastIndexOf(不等于) 0) { 关系符0 = !=; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(不等于)); } else if (条件 .lastIndexOf(大于) 0) { 关系符0 = ; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(大于)); } else if (条件 .lastIndexOf(小于) 0) { 关系符0 = ; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(小于)); } else if (条件 .lastIndexOf(等于) 0) { 关系符0 = =; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(等于)); } else if (条件 .lastIndexOf(不包含) 0) { 关系符0 = 不包含; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(不包含)); } else if (条件 .lastIndexOf(包含) 0) { 关系符0 = 包含; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(包含)); } if (连接符.length() 0) { if (条件 .lastIndexOf(大于等于) 0) { 关系符01 = =; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(大于等于)); } else if (条件 .lastIndexOf(小于等于) 0) { 关系符01 = =; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(小于等于)); } else if (条件 .lastIndexOf(不等于) 0) { 关系符01 = !=; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(不等于)); } else if (条件 .lastIndexOf(大于) 0) { 关系符01 = ; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(大于)); } else if (条件 .lastIndexOf(小于) 0) { 关系符01 = ; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(小于)); } else if (条件 .lastIndexOf(等于) 0) { 关系符01 = =; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(等于)); } else if (条件 .lastIndexOf(不包含) 0) { 关系符01 = 不包含; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(不包含)); } else if (条件 .lastIndexOf(包含) 0) { 关系符01 = 包含; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(包含)); } } try { con = main1.getConn();// 连接数据库 sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (连接条件.trim().length() 0) s1 = select + 字段名字串 + from + 表名 + where + 连接条件; else s1 = select + 字段名字串 + from + 表名; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i = 0; i 列数; i++) { if ((字段名.length() 0) (列名 .trim().equalsIgnoreCase(字段名.trim()))) 列序号 = i; else if ((列名 .trim() + ,) .indexOf(. + 字段名.trim() + ,) 0) 列序号 = i; if ((字段名1.length() 0) (列名 .trim().equalsIgnoreCase(字段名1.trim()))) 列序号1 = i; else if ((列名 .trim() + ,).indexOf(. + 字段名1.trim() + ,) 0) 列序号1 = i; 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; b++; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } if (连接条件.trim().length() 0) 连接条件 = 连接条件 + and ; frame.setTitle(查询部件程序 作者:程学先); // 窗口标题 frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); // 窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.getContentPane().setLayout(null); // 关闭窗口布局管理器 final JPanel panel = new JPanel(false); // 定义面板 panel.setLayout(null); // 关闭面板布局管理器 panel.setBounds(20, 20, 窗口宽 - 50, 窗口高 - 20); tableModel = new DefaultTableModel(表格数据, 列名 ); // 创建表格模型 table = new JTable(tableModel); // 创建指定表格模型的表格 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 60, 窗口宽 - 100, 窗口高 - 200); for (int i = 0; i 列数; i++) { TableColumn tc = table.getColumn(列名 );// 返回表格的列对象 tc.setPreferredWidth(列数据宽度 * 12); } panel.add(scrollPane); JLabel label1 = new JLabel(条件 ); label1.setBounds(左边距, 10, 条件 .length() * 15, 20); panel.add(label1); 左边距 = 左边距 + 条件 .length() * 15; aTextField = new JTextField(, 10); // 定义文本框,预设值 aTextField.setBounds(左边距, 10, 100, 20); panel.add(aTextField); 左边距 = 左边距 + 100; if (条件.length 1) { JLabel label3 = new JLabel(条件 ); // 用标签显示指定的字段名 label3.setBounds(左边距, 10, 条件 .length() * 15, 20); panel.add(label3); 左边距 = 左边距 + 条件 .length() * 15; aTextField2 = new JTextField(, 10); // 定义文本框,预设值 aTextField2.setBounds(左边距, 10, 150, 20); panel.add(aTextField2); } 按钮宽 = (窗口宽 - 360) / 按钮数; int 左边距 = 350; final JButton selectButton = new JButton(按钮集 ); // 定义查询按钮 selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; else s1 = s1 + where + 列名 ; if (((main1.图形数据类型.lastIndexOf(, + 列数据类型 + ,)) = 0) || ((main1.图形数据类型.lastIndexOf(, + 列数据类型 + ,)) = 0)) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } if (关系符0.lastIndexOf(包含) 0) { if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) s1 = s1 + 关系符0 + aTextField.getText().trim(); else s1 = s1 + 关系符0 + ' + aTextField.getText().trim() + '; } else { if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (关系符0.lastIndexOf(不包含) = 0) s1 = s1 + not like '% + aTextField.getText().trim() + %'; else s1 = s1 + like '% + aTextField.getText().trim() + %'; } if (条件.length 1) { if (关系符01.lastIndexOf(包含) 0) if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) s1 = s1 + and + 列名 + 关系符01 + aTextField2.getText().trim(); else s1 = s1 + and + 列名 + 关系符01 + ' + aTextField2.getText().trim() + '; else if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (关系符01.lastIndexOf(不包含) = 0) s1 = s1 + and + 列名 + not like '% + aTextField2.getText().trim() + %'; else s1 = s1 + and + 列名 + like '% + aTextField2.getText().trim() + %'; } if (parameter .trim().length() 0) { String .split(,); String s2 = ; for (int k = 0; k s0.length; k++) if (k s0.length - 1) s2 = s2 + 列名 )] + ,; else s2 = s2 + 列名 )]; s1 = s1 + group by + s2; } ResultSet rs = sta3.executeQuery(s1); int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); int 列数0 = rsmd3.getColumnCount(); // 获取列数 列数据宽度 = new int ; // 定义列数据宽度 String 列名0 = new String ; for (int i = 0; i 列数0; i++) { 列名0 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 列名0 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名0 .length()) 列数据宽度 = 列名0 .length(); if (列数据宽度 50) 列数据宽度 = 50; } String s4 = ; for (int i = 0; i 列数0; i++) { s4 = 列名0 ; for (int j = 0; j 列数; j++) { if (列名 .trim().equalsIgnoreCase(s4.trim())) { 列名0 = s4; break; } } } 表格数据 = new String ; c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数0) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); tableModel = new DefaultTableModel(表格数据, 列名0 ); // 列名 table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } printViewButton.setEnabled(true); printButton.setEnabled(true); } }); selectButton.setBounds(左边距, 30, 按钮宽, 20); if (要求按钮号表.indexOf(,0,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(selectButton); } printViewButton = new JButton(按钮集 ); printViewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPreview1.printView1(表格数据, 打印格式文件名); } }); printViewButton.setBounds(左边距, 30, 按钮宽, 20); if (要求按钮号表.indexOf(,1,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(printViewButton); printViewButton.setEnabled(false); } printButton = new JButton(按钮集 ); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPrint1.print1(表格数据, 打印格式文件名); } }); printButton.setBounds(左边距, 30, 按钮宽, 20); if (要求按钮号表.indexOf(,2,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(printButton); printButton.setEnabled(false); } final JButton exitButton = new JButton(按钮集 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(左边距, 30, 按钮宽, 20); if (要求按钮号表.indexOf(,3,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(exitButton); } frame.getContentPane().add(panel, null); // 安装面板 frame.setVisible(true); // 安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1 = str; int i = 1; while (s1.indexOf(,) != -1) { s1 = s1.substring(s1.indexOf(,) + 1, s1.length()); i++; } array = new String ; int j = 0; while (str.indexOf(,) != -1) { array = str.substring(0, str.indexOf(,)); str = str.substring(str.indexOf(,) + 1, str.length()); array = str; j++; } return array; } } 版本2 15.源码15,生成表格式报表格式文件 /* * 程序文件名:printFormat1.java * 作者:程学先 * 本程序用于辅助生成打印数据库中单数据表的表格式报表格式文件。打印内容只限数据表中数据。 * 程序功能:用于dataPrint1、printPreview1等程序生成格式文件 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import javax.swing.tree.DefaultMutableTreeNode; import java.io.*; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Vector; public class printFormat1 extends JFrame { private static printFormat1 frame1 = new printFormat1(); private static printFormat1 frame2 = new printFormat1(); private static printFormat1 frame3 = new printFormat1(); private static printFormat1 frame4 = new printFormat1(); private static printFormat1 frame5 = new printFormat1(); private static JPanel panel1 = new JPanel(); private static JPanel panel2 = new JPanel(); private static JPanel panel3 = new JPanel(); private static JPanel panel4 = new JPanel(); private static JPanel panel5 = new JPanel(); private static DefaultTableModel variabl19651; private static DefaultTableModel variabl19652; private static DefaultTableModel variabl19653; private static DefaultTableModel variabl19654; private static DefaultTableModel variabl19655; private static JTable variabl26551; private static JTable variabl26552; private static JTable variabl26553; private static JTable variabl26554; private static JTable variabl26555; private static JScrollPane scrollPane1 = new JScrollPane(); private static JScrollPane scrollPane2 = new JScrollPane(); private static JScrollPane scrollPane3 = new JScrollPane(); private static JScrollPane scrollPane4 = new JScrollPane(); private static JScrollPane scrollPane5 = new JScrollPane(); private static List list1 = new List(); private static List list2 = new List(); private static List list3 = new List(); private static List list4 = new List(); private static List list5 = new List(); private static JLabel fl0, fl1, fl2, fl3, fl4, fl5, fl6, fl7, fl8, fl9, fl10, fl11, fl12; private static JTextField fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, fa10, fa11, fa12; private static JLabel fla0, fla1, fla2, fla3, fla4, fla5, fla6, fla7, fla8, fla9, fla10, fla11, fla12; private static JTextField faa0, faa1, faa2, faa3, faa4, faa5, faa6, faa7, faa8, faa9, faa10, faa11, faa12; private static JLabel flb0, flb1, flb2, flb3, flb4, flb5, flb6, flb7, flb8, flb9, flb10, flb11, flb12; private static JTextField fab0, fab1, fab2, fab3, fab4, fab5, fab6, fab7, fab8, fab9, fab10, fab11, fab12; private static JLabel flc0, flc1, flc2, flc3, flc4, flc5, flc6, flc7, flc8, flc9, flc10, flc11, flc12; private static JTextField fac0, fac1, fac2, fac3, fac4, fac5, fac6, fac7, fac8, fac9, fac10, fac11, fac12; private static JLabel fld0, fld1, fld2, fld3, fld4, fld5, fld6, fld7, fld8, fld9, fld10, fld11, fld12; private static JTextField fad0, fad1, fad2, fad3, fad4, fad5, fad6, fad7, fad8, fad9, fad10, fad11, fad12; private static String variabl2327; private static int variabl1823 = -1, variabl1947 = 0, variabl2193 = 0, variabl1739 = 0, variabl2651 = 0; private static int variabl2127 = 0; private static String variabl2197; private static ArrayListString variabl1665 = new ArrayList(); private static String variabl1501; private static int variabl2157 = new String ; private static int ; private static File file1; static Connection con; static String url; static String variabl1275 = sqlserver; static String variabl1091 = sql1; private static Statement sta; static String s1 = , s2 = ; private static ResultSet rs; private static ResultSetMetaData rsmd; private static ArrayList variabl26031 = new ArrayList(); private static String variabl2629 = { 宋体, 楷体, 黑体, 仿宋_GB2312 }; public static void means(String ; frame1 = new printFormat1(); frame2 = new printFormat1(); frame3 = new printFormat1(); frame4 = new printFormat1(); frame5 = new printFormat1(); panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel(); panel4 = new JPanel(); panel5 = new JPanel(); scrollPane1 = new JScrollPane(); scrollPane2 = new JScrollPane(); scrollPane3 = new JScrollPane(); scrollPane4 = new JScrollPane(); scrollPane5 = new JScrollPane(); list1 = new List(); list2 = new List(); list3 = new List(); list4 = new List(); list5 = new List(); variabl1823 = -1; variabl1947 = 0; variabl2193 = 0; variabl1739 = 0; variabl2651 = 0; variabl2127 = 0; variabl1665 = new ArrayList(); variabl2157 = new String ; variabl21571 = new int ; variabl1275 = sqlserver; variabl1091 = sql1; s1 = ; s2 = ; variabl26031 = new ArrayList(); variabl2607 = new String ; variabl2629 = new String ; variabl2607 = 5; variabl2607 = 6; variabl2607 = 7; variabl2607 = 8; variabl2607 = 9; variabl2607 = 10; variabl2607 = 11; variabl2607 = 12; variabl2607 = 14; variabl2607 = 16; variabl2607 = 18; variabl2607 = 20; variabl2607 = 22; variabl2607 = 24; variabl2607 = 26; variabl2607 = 28; variabl2607 = 36; variabl2607 = 48; variabl2607 = 72; variabl2629 = 宋体; variabl2629 = 楷体; variabl2629 = 黑体; variabl2629 = 仿宋_GB2312; try { con = main1.getConn(); sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select + parameter + from + variabl2603; if (variabl2603.indexOf(,) 0) s1 = s1 + where + parameter ; rs = sta.executeQuery(s1); rs.last(); rsmd = rs.getMetaData(); variabl2651 = rsmd.getColumnCount(); variabl25171 = new String ; variabl1501 = new String ; variabl1489 = new int ; variabl1739 = 1; list1.removeAll(); variabl25171 = parameter .split(,); for (int i = 0; i variabl2651; i++) { variabl1501 = rsmd.getColumnTypeName(i + 1); variabl1489 = rsmd.getColumnDisplaySize(i + 1); list1.add(variabl25171 ); } rs.close(); sta.close(); con.close(); } catch (SQLException e1) { JOptionPane.showMessageDialog(null, 获取数据结构出错! + s1); } frame1.setTitle(打印报表标题设计页,每表打印一次。 作者:程学先); frame2.setTitle(表头设计页,每页打印一次。 作者:程学先); frame3.setTitle(报表表体内容设计页,每条记录打印一次。 作者:程学先); frame4.setTitle(打印报表页尾设计页,每页打印一次。 作者:程学先); frame5.setTitle(打印报表表尾设计页,每表打印一次。 作者:程学先); frame1.setBounds(10, 10, 1000, 660); frame2.setBounds(100, 10, 1000, 660); frame3.setBounds(200, 10, 1000, 660); frame4.setBounds(10, 120, 1000, 600); frame5.setBounds(200, 120, 1000, 600); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame3.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame4.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame5.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); panel1.setBounds(10, 10, 1000, 660); panel2.setBounds(100, 10, 1000, 660); panel3.setBounds(200, 10, 1000, 660); panel4.setBounds(10, 120, 1000, 600); panel5.setBounds(200, 120, 1000, 600); panel1.setLayout(null); panel2.setLayout(null); panel3.setLayout(null); panel4.setLayout(null); panel5.setLayout(null); String variabl251702 = { 字段标签, 行号, 列号, 宽度, 高度, 左边距, 字体, 字号, 有无下表格线, 有无右表格线 }; String variabl251704 = { 内容或变量, 变量名, 行号, 列号, 宽度, 高度, 左边距, 到顶距, 字体, 字号 }; String tableType = { TABLE }; DatabaseMetaData databaseMetaData = con.getMetaData(); ResultSet resultSet = databaseMetaData.getTables(null, null, %, tableType); while (resultSet.next()) { variabl26031.add(resultSet.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } } for (int i = 0; i variabl26031.size(); i++) list1.add(variabl26031.get(i).toString()); } }); fl10 = new JLabel(文件名); fl10.setBounds(250, 10, 50, 20); panel1.add(fl10); fa10 = new JTextField(, 20); fa10.setBounds(300, 10, 100, 20); panel1.add(fa10); fa10.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (fa10.getText().length() 1) { final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile() != null) { fa10.setText(fc.getSelectedFile().toString()); file1 = new File(fa10.getText()); try { if (file1.exists()) { FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); String tempStr = null; variabl1665.clear(); for (int i = 0; (tempStr = br.readLine()) != null; i++) { if (tempStr.substring(0, 2).equals(1,)) { variabl19651.addRow(tempStr.substring( 2, tempStr.length()).split(。)); } else if (tempStr.substring(0, 2).equals( 2,)) { variabl19652.addRow(tempStr.substring( 2, tempStr.length()).split(。)); } else if (tempStr.substring(0, 2).equals( 3,)) { variabl19653.addRow(tempStr.substring( 2, tempStr.length()).split(。)); } else if (tempStr.substring(0, 2).equals( 4,)) { variabl19654.addRow(tempStr.substring( 2, tempStr.length()).split(。)); } else if (tempStr.substring(0, 2).equals( 5,)) { variabl19655.addRow(tempStr.substring( 2, tempStr.length()).split(。)); } } } } catch (IOException e2) { JOptionPane.showMessageDialog(null, 打开文件错!); } } } } }); variabl19651 = new DefaultTableModel(variabl2197, variabl251701); variabl19652 = new DefaultTableModel(variabl2197, variabl251702); variabl19653 = new DefaultTableModel(variabl2197, variabl251703); variabl19654 = new DefaultTableModel(variabl2197, variabl251704); variabl19655 = new DefaultTableModel(variabl2197, variabl251705); variabl26551 = new JTable(variabl19651); variabl26552 = new JTable(variabl19652); variabl26553 = new JTable(variabl19653); variabl26554 = new JTable(variabl19654); variabl26555 = new JTable(variabl19655); variabl26551.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); variabl26552.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); variabl26553.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); variabl26554.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); variabl26555.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); variabl26551.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int variabl1823 = variabl26551.getSelectedRow(); for (int j = 0; j 10; j++) { if (variabl19651.getValueAt(variabl1823, j) != null) variabl2327 = variabl19651.getValueAt(variabl1823, j) .toString(); else variabl2327 = ; switch (j) { case 0: fa1.setText(variabl2327.toString()); break; case 1: fa2.setText(variabl2327.toString()); break; case 2: fa11.setText(variabl2327.toString()); break; case 3: fa12.setText(variabl2327.toString()); break; case 4: fa3.setText(variabl2327.toString()); break; case 5: fa4.setText(variabl2327.toString()); break; case 6: fa5.setText(variabl2327.toString()); break; case 7: fa6.setText(variabl2327.toString()); break; case 8: fa7.setText(variabl2327.toString()); break; case 9: fa8.setText(variabl2327.toString()); break; case 10: fa9.setText(variabl2327.toString()); break; } } } }); scrollPane1.setBounds(10, 40, 800, 400); scrollPane2.setBounds(10, 40, 800, 400); scrollPane3.setBounds(10, 40, 800, 400); scrollPane4.setBounds(10, 40, 800, 300); scrollPane5.setBounds(10, 40, 800, 300); scrollPane1.setViewportView(variabl26551); scrollPane2.setViewportView(variabl26552); scrollPane3.setViewportView(variabl26553); scrollPane4.setViewportView(variabl26554); scrollPane5.setViewportView(variabl26555); panel1.add(scrollPane1, BorderLayout.CENTER); panel2.add(scrollPane2, BorderLayout.CENTER); panel3.add(scrollPane3, BorderLayout.CENTER); panel4.add(scrollPane4, BorderLayout.CENTER); panel5.add(scrollPane5, BorderLayout.CENTER); fl1 = new JLabel(内容); fl1.setBounds(70, 460, 40, 20); panel1.add(fl1); fa1 = new JTextField(, 20); fa1.setBounds(110, 460, 100, 20); panel1.add(fa1); fa1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 1; list1.removeAll(); } }); fl2 = new JLabel(变量名); fl2.setBounds(230, 460, 50, 20); panel1.add(fl2); fa2 = new JTextField(, 20); fa2.setBounds(280, 460, 60, 20); panel1.add(fa2); fa2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 2; list1.removeAll(); } }); fl11 = new JLabel(行号); fl11.setBounds(370, 460, 40, 20); panel1.add(fl11); fa11 = new JTextField(, 20); fa11.setBounds(410, 460, 60, 20); panel1.add(fa11); fa11.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 11; list1.removeAll(); } }); fl12 = new JLabel(列号); fl12.setBounds(500, 460, 40, 20); panel1.add(fl12); fa12 = new JTextField(, 20); fa12.setBounds(540, 460, 60, 20); panel1.add(fa12); fa12.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 12; list1.removeAll(); } }); fl3 = new JLabel(宽度); fl3.setBounds(630, 460, 40, 20); panel1.add(fl3); fa3 = new JTextField(, 20); fa3.setBounds(670, 460, 60, 20); panel1.add(fa3); fa3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 3; list1.removeAll(); } }); fl4 = new JLabel(高度); fl4.setBounds(760, 460, 40, 20); panel1.add(fl4); fa4 = new JTextField(, 20); fa4.setBounds(800, 460, 60, 20); panel1.add(fa4); fa4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 4; list1.removeAll(); } }); fl5 = new JLabel(左边距); fl5.setBounds(60, 500, 50, 20); panel1.add(fl5); fa5 = new JTextField(, 20); fa5.setBounds(110, 500, 100, 20); panel1.add(fa5); fa5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 5; list1.removeAll(); } }); fl6 = new JLabel(到顶距); panel1.add(fl6); fa6 = new JTextField(, 20); panel1.add(fa6); fl6.setBounds(220, 500, 60, 20); fa6.setBounds(280, 500, 60, 20); fa6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 6; list1.removeAll(); } }); fl7 = new JLabel(字体); panel1.add(fl7); fa7 = new JTextField(, 20); panel1.add(fa7); fl7.setBounds(370, 500, 40, 20); fa7.setBounds(410, 500, 120, 20); fa7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 7; list1.removeAll(); for (int i = 0; i variabl2629.length; i++) { list1.add(variabl2629 ); } } }); fl8 = new JLabel(字号); panel1.add(fl8); fa8 = new JTextField(, 20); panel1.add(fa8); fl8.setBounds(560, 500, 40, 20); fa8.setBounds(600, 500, 100, 20); fa8.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 8; list1.removeAll(); for (int i = 0; i variabl2607.length; i++) { list1.add(variabl2607 ); } } }); list1.setBounds(840, 10, 120, 430); panel1.add(list1); list1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list1.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (variabl1739) { case 0: break; case 1: fa1.setText(list1.getSelectedItem()); break; case 2: fa2.setText(list1.getSelectedItem()); break; case 3: fa3.setText(list1.getSelectedItem()); break; case 4: fa4.setText(list1.getSelectedItem()); break; case 5: fa5.setText(list1.getSelectedItem()); break; case 6: fa6.setText(list1.getSelectedItem()); break; case 7: fa7.setText(list1.getSelectedItem()); break; case 8: fa8.setText(list1.getSelectedItem()); break; case 11: fa11.setText(list1.getSelectedItem()); break; case 12: fa12.setText(list1.getSelectedItem()); break; } } } }); final JButton addButton = new JButton(添加到表格中); addButton.setBounds(50, 540, 120, 20); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int variabl1823 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i variabl19651.getRowCount(); i++) { if ((variabl19651.getValueAt(i, 0) != null) (variabl19651.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(fa1.getText().trim()))) { variabl1823 = i; break; } } if (variabl1823 0) { String ; int variabl26491 = new int ; for (int i = 0; i variabl2059; i++) { for (int j = 0; j 10; j++) variabl2649 = variabl19651.getValueAt(i, j) .toString().trim(); for (int j = 4; j 10; j++) { if (j != 8) { if (variabl2649 .length() 0) variabl26491 = Integer .valueOf(variabl2649 ); else variabl26491 = 0; } } for (int j = 4; j 8; j++) { if (j != 5) variabl26491 = variabl26491 * variabl26491 ; else variabl26491 = (int) (variabl26491 * variabl26491 * 1.3); variabl2649 = + variabl26491 ; } } variabl19651.setRowCount(0); for (int i = 0; i variabl2059; i++) variabl19651.addRow(variabl2649 ); } }); panel1.add(countButton); final JButton creButton = new JButton(表格内容存盘); creButton.setBounds(530, 540, 120, 20); creButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { char x1 = 10, x2 = 13, x3 = '', x4 = ','; file1 = new File(fa10.getText()); FileOutputStream fs; try { fs = new FileOutputStream(file1); for (int i = 0; i variabl19651.getRowCount(); i++) { String s3 = 1,, s4 = ; for (int j = 0; j 10; j++) { if ((variabl19651.getValueAt(i, j) != null) (variabl19651.getValueAt(i, j) .toString().length() 0)) s3 = s3 + variabl19651.getValueAt(i, j) .toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } for (int i = 0; i variabl19652.getRowCount(); i++) { String s3 = 2,, s4 = ; for (int j = 0; j 10; j++) { if ((variabl19652.getValueAt(i, j) != null) (variabl19652.getValueAt(i, j) .toString().length() 0)) s3 = s3 + variabl19652.getValueAt(i, j) .toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } for (int i = 0; i variabl19653.getRowCount(); i++) { String s3 = 3,, s4 = ; for (int j = 0; j 7; j++) { if ((variabl19653.getValueAt(i, j) != null) (variabl19653.getValueAt(i, j) .toString().length() 0)) s3 = s3 + variabl19653.getValueAt(i, j) .toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } for (int i = 0; i variabl19654.getRowCount(); i++) { String s3 = 4,, s4 = ; for (int j = 0; j 10; j++) { if ((variabl19654.getValueAt(i, j) != null) (variabl19654.getValueAt(i, j) .toString().length() 0)) s3 = s3 + variabl19654.getValueAt(i, j) .toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } for (int i = 0; i variabl19655.getRowCount(); i++) { String s3 = 5,, s4 = ; for (int j = 0; j 10; j++) { if ((variabl19655.getValueAt(i, j) != null) (variabl19655.getValueAt(i, j) .toString().length() 0)) s3 = s3 + variabl19655.getValueAt(i, j) .toString() + 。; else s3 = s3 + 。; } fs.write((s3 + x1).getBytes()); } fs.close(); } catch (IOException e2) { JOptionPane.showMessageDialog(null, 写文件错。); } } }); panel1.add(creButton); final JButton clearButton = new JButton(清参数文本框); clearButton.setBounds(650, 540, 120, 20); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fa1.setText(); fa2.setText(0); fa3.setText(0); fa4.setText(0); fa5.setText(0); fa6.setText(0); fa7.setText(); fa8.setText(0); fa9.setText(); fa11.setText(0); fa12.setText(0); } }); panel1.add(clearButton); final JButton exitButton = new JButton(退出); exitButton.setBounds(770, 540, 120, 20); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel1.setVisible(false); frame1.setVisible(false); frame1.dispose(); frame2.setVisible(false); frame2.dispose(); frame3.setVisible(false); frame3.dispose(); frame4.setVisible(false); frame4.dispose(); frame5.setVisible(false); frame5.dispose(); } }); panel1.add(exitButton); fla1 = new JLabel(标签名称); fla1.setBounds(50, 460, 60, 20); panel2.add(fla1); faa1 = new JTextField(, 20); faa1.setBounds(110, 460, 100, 20); panel2.add(faa1); faa1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 1; list2.removeAll(); for (int i = 0; i variabl2651; i++) { list2.add(variabl25171 ); } } }); fla11 = new JLabel(行号); fla11.setBounds(240, 460, 40, 20); panel2.add(fla11); faa11 = new JTextField(, 20); faa11.setBounds(280, 460, 60, 20); panel2.add(faa11); faa11.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 11; list2.removeAll(); } }); fla12 = new JLabel(列号); fla12.setBounds(370, 460, 40, 20); panel2.add(fla12); faa12 = new JTextField(, 20); faa12.setBounds(410, 460, 60, 20); panel2.add(faa12); faa12.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 12; list2.removeAll(); } }); fla2 = new JLabel(宽度); fla2.setBounds(500, 460, 40, 20); panel2.add(fla2); faa2 = new JTextField(, 20); faa2.setBounds(540, 460, 60, 20); panel2.add(faa2); faa2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 2; list2.removeAll(); } }); fla3 = new JLabel(高度); fla3.setBounds(630, 460, 40, 20); panel2.add(fla3); faa3 = new JTextField(, 20); faa3.setBounds(670, 460, 60, 20); panel2.add(faa3); faa3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 3; list2.removeAll(); } }); fla4 = new JLabel(左边距); fla4.setBounds(750, 460, 50, 20); panel2.add(fla4); faa4 = new JTextField(, 20); faa4.setBounds(800, 460, 60, 20); panel2.add(faa4); faa4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 4; list2.removeAll(); } }); fla5 = new JLabel(字体); fla5.setBounds(70, 500, 40, 20); panel2.add(fla5); faa5 = new JTextField(, 20); faa5.setBounds(110, 500, 100, 20); panel2.add(faa5); faa5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 5; list2.removeAll(); for (int i = 0; i variabl2629.length; i++) { list2.add(variabl2629 ); } } }); fla6 = new JLabel(字号); panel2.add(fla6); faa6 = new JTextField(, 20); panel2.add(faa6); fla6.setBounds(240, 500, 40, 20); faa6.setBounds(280, 500, 60, 20); faa6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 6; list2.removeAll(); for (int i = 0; i variabl2607.length; i++) { list2.add(variabl2607 ); } } }); fla7 = new JLabel(有无下表格线); panel2.add(fla7); faa7 = new JTextField(, 20); panel2.add(faa7); fla7.setBounds(350, 500, 80, 20); faa7.setBounds(430, 500, 120, 20); faa7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 7; list2.removeAll(); list2.add(有); list2.add(无); } }); fla8 = new JLabel(有无右表格线); panel2.add(fla8); faa8 = new JTextField(, 20); panel2.add(faa8); fla8.setBounds(560, 500, 80, 20); faa8.setBounds(640, 500, 100, 20); faa8.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 8; list2.removeAll(); list2.add(有); list2.add(无); } }); faa1.setText(); faa2.setText(0); faa3.setText(0); faa4.setText(0); faa5.setText(0); faa6.setText(0); faa7.setText(); faa8.setText(0); faa11.setText(1); faa12.setText(1); list2.setBounds(840, 10, 120, 430); panel2.add(list2); list2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list2.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (variabl1739) { case 1: faa1.setText(list2.getSelectedItem()); variabl2127 = list2.getSelectedIndex(); if ((,ntext,text,memo,image,long,lob,blob,clob,ole,varbinary,varchar,nvarchar,xml .lastIndexOf(, + variabl1501 )) 0) { if (variabl1489 variabl25171 .length()) faa2.setText( + variabl1489 ); else faa2.setText( + variabl25171 .length()); faa3.setText(1); } faa5.setText(宋体); faa6.setText(12); faa7.setText(有); faa8.setText(有); break; case 2: faa2.setText(list2.getSelectedItem()); break; case 3: faa3.setText(list2.getSelectedItem()); break; case 4: faa4.setText(list2.getSelectedItem()); break; case 5: faa5.setText(list2.getSelectedItem()); break; case 6: faa6.setText(list2.getSelectedItem()); break; case 7: faa7.setText(list2.getSelectedItem()); break; case 8: faa8.setText(list2.getSelectedItem()); break; case 11: faa11.setText(list2.getSelectedItem()); break; case 12: faa12.setText(list2.getSelectedItem()); break; } } } }); variabl26552.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int variabl1823 = variabl26552.getSelectedRow(); for (int j = 0; j 10; j++) { if (variabl19652.getValueAt(variabl1823, j) != null) variabl2327 = variabl19652.getValueAt(variabl1823, j) .toString(); else variabl2327 = ; switch (j) { case 0: faa1.setText(variabl2327.toString()); break; case 1: faa11.setText(variabl2327.toString()); break; case 2: faa12.setText(variabl2327.toString()); break; case 3: faa2.setText(variabl2327.toString()); break; case 4: faa3.setText(variabl2327.toString()); break; case 5: faa4.setText(variabl2327.toString()); break; case 6: faa5.setText(variabl2327.toString()); break; case 7: faa6.setText(variabl2327.toString()); break; case 8: faa7.setText(variabl2327.toString()); break; case 9: faa8.setText(variabl2327.toString()); break; } } } }); final JButton addButton1 = new JButton(添加到表格中); addButton1.setBounds(50, 540, 170, 20); addButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int variabl1823 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i variabl19652.getRowCount(); i++) { if ((variabl19652.getValueAt(i, 0) != null) (variabl19652.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(faa1.getText().trim()))) { variabl1823 = i; break; } } if (variabl1823 0) { String ; int variabl26491 = new int ; for (int i = 0; i variabl2059; i++) { for (int j = 0; j 10; j++) variabl2649 = variabl19652.getValueAt(i, j) .toString().trim(); for (int j = 3; j 8; j++) { if (j != 6) { if (variabl2649 .length() 0) variabl26491 = Integer .valueOf(variabl2649 ); else variabl26491 = 0; } } for (int j = 3; j 6; j++) { if (j == 4) variabl26491 = (int) (variabl26491 * variabl26491 * 1.3); else variabl26491 = variabl26491 * variabl26491 ; variabl2649 = + variabl26491 ; } } variabl19652.setRowCount(0); for (int i = 0; i variabl2059; i++) variabl19652.addRow(variabl2649 ); } }); panel2.add(countButton1); final JButton clearButton1 = new JButton(清参数文本框); clearButton1.setBounds(730, 540, 170, 20); clearButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { faa1.setText(); faa2.setText(0); faa3.setText(0); faa4.setText(0); faa5.setText(0); faa6.setText(0); faa7.setText(); faa8.setText(0); faa11.setText(1); faa12.setText(1); } }); panel2.add(clearButton1); flb1 = new JLabel(字段名称); flb1.setBounds(10, 460, 60, 20); panel3.add(flb1); fab1 = new JTextField(, 20); fab1.setBounds(70, 460, 100, 20); panel3.add(fab1); fab1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 1; list3.removeAll(); for (int i = 0; i variabl2651; i++) { list3.add(variabl25171 ); } } }); flb2 = new JLabel(宽度); flb2.setBounds(170, 460, 40, 20); panel3.add(flb2); fab2 = new JTextField(, 20); fab2.setBounds(210, 460, 60, 20); panel3.add(fab2); fab2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 2; list3.removeAll(); } }); flb3 = new JLabel(每行高度); flb3.setBounds(270, 460, 60, 20); panel3.add(flb3); fab3 = new JTextField(, 20); fab3.setBounds(330, 460, 60, 20); panel3.add(fab3); fab3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 3; list3.removeAll(); } }); flb4 = new JLabel(字体); flb4.setBounds(390, 460, 40, 20); panel3.add(flb4); fab4 = new JTextField(, 20); fab4.setBounds(430, 460, 100, 20); panel3.add(fab4); fab4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 4; list3.removeAll(); for (int i = 0; i variabl2629.length; i++) { list3.add(variabl2629 ); } } }); flb5 = new JLabel(字号); panel3.add(flb5); fab5 = new JTextField(, 20); panel3.add(fab5); flb5.setBounds(530, 460, 40, 20); fab5.setBounds(570, 460, 60, 20); fab5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 5; list3.removeAll(); for (int i = 0; i variabl2607.length; i++) { list3.add(variabl2607 ); } } }); flb6 = new JLabel(有无下表格线); panel3.add(flb6); fab6 = new JTextField(, 20); panel3.add(fab6); flb6.setBounds(630, 460, 80, 20); fab6.setBounds(710, 460, 60, 20); fab6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 6; list3.removeAll(); list3.add(有); list3.add(无); } }); flb7 = new JLabel(有无右表格线); panel3.add(flb7); fab7 = new JTextField(, 20); panel3.add(fab7); flb7.setBounds(770, 460, 80, 20); fab7.setBounds(850, 460, 60, 20); fab7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 7; list3.removeAll(); list3.add(有); list3.add(无); } }); list3.setBounds(840, 10, 120, 430); panel3.add(list3); list3.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list3.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (variabl1739) { case 1: fab1.setText(list3.getSelectedItem()); variabl2127 = list3.getSelectedIndex(); if ((,ntext,text,memo,image,long,lob,blob,clob,ole,varbinary,varchar,nvarchar,xml .lastIndexOf(, + variabl1501 )) 0) { if (variabl1489 variabl25171 .length()) fab2.setText( + variabl1489 ); else fab2.setText( + variabl25171 .length()); } fab3.setText(1); fab4.setText(宋体); fab5.setText(12); fab6.setText(有); fab7.setText(有); break; case 2: fab2.setText(list3.getSelectedItem()); break; case 3: fab3.setText(list3.getSelectedItem()); break; case 4: fab4.setText(list3.getSelectedItem()); break; case 5: fab5.setText(list3.getSelectedItem()); break; case 6: fab6.setText(list3.getSelectedItem()); break; case 7: fab7.setText(list3.getSelectedItem()); break; } } } }); variabl26553.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int variabl1823 = variabl26553.getSelectedRow(); for (int j = 0; j 7; j++) { if (variabl19653.getValueAt(variabl1823, j) != null) variabl2327 = variabl19653.getValueAt(variabl1823, j) .toString(); else variabl2327 = ; switch (j) { case 0: fab1.setText(variabl2327.toString()); break; case 1: fab2.setText(variabl2327.toString()); break; case 2: fab3.setText(variabl2327.toString()); break; case 3: fab4.setText(variabl2327.toString()); break; case 4: fab5.setText(variabl2327.toString()); break; case 5: fab6.setText(variabl2327.toString()); break; case 6: fab7.setText(variabl2327.toString()); break; } } } }); final JButton addButton2 = new JButton(添加到表格中); addButton2.setBounds(50, 540, 170, 20); addButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int variabl1823 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i variabl19653.getRowCount(); i++) { if ((variabl19653.getValueAt(i, 0) != null) (variabl19653.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(fab1.getText().trim()))) { variabl1823 = i; break; } } if (variabl1823 0) { String ; int variabl26491 = new int ; for (int i = 0; i variabl2059; i++) { for (int j = 0; j 7; j++) { variabl2649 = variabl19653.getValueAt(i, j) .toString().trim(); } for (int j = 1; j 5; j++) { if (j != 3) { if (variabl2649 .length() 0) variabl26491 = Integer .valueOf(variabl2649 ); else variabl26491 = 0; } } variabl26491 = variabl26491 * variabl26491 ; variabl2649 = + variabl26491 ; variabl26491 = variabl26491 * variabl26491 ; variabl2649 = + variabl26491 ; } variabl19653.setRowCount(0); for (int i = 0; i variabl2059; i++) variabl19653.addRow(variabl2649 ); } }); panel3.add(countButton2); final JButton clearButton2 = new JButton(清参数文本框); clearButton2.setBounds(730, 540, 170, 20); clearButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fab1.setText(); fab2.setText(0); fab3.setText(1); fab4.setText(宋体); fab5.setText(0); fab6.setText(有); fab7.setText(有); } }); panel3.add(clearButton2); flc1 = new JLabel(内容); flc1.setBounds(70, 360, 40, 20); panel4.add(flc1); fac1 = new JTextField(, 20); fac1.setBounds(110, 360, 100, 20); panel4.add(fac1); fac1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 1; list4.removeAll(); } }); flc2 = new JLabel(变量名); flc2.setBounds(230, 360, 50, 20); panel4.add(flc2); fac2 = new JTextField(, 20); fac2.setBounds(280, 360, 60, 20); panel4.add(fac2); fac2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 2; list4.removeAll(); } }); flc11 = new JLabel(行号); flc11.setBounds(370, 360, 40, 20); panel4.add(flc11); fac11 = new JTextField(, 20); fac11.setBounds(410, 360, 60, 20); panel4.add(fac11); fac11.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 11; list4.removeAll(); } }); flc12 = new JLabel(列号); flc12.setBounds(500, 360, 40, 20); panel4.add(flc12); fac12 = new JTextField(, 20); fac12.setBounds(540, 360, 60, 20); panel4.add(fac12); fac12.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 12; list4.removeAll(); } }); flc3 = new JLabel(宽度); flc3.setBounds(630, 360, 40, 20); panel4.add(flc3); fac3 = new JTextField(, 20); fac3.setBounds(670, 360, 60, 20); panel4.add(fac3); fac3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 3; list4.removeAll(); } }); flc4 = new JLabel(高度); flc4.setBounds(760, 360, 40, 20); panel4.add(flc4); fac4 = new JTextField(, 20); fac4.setBounds(800, 360, 60, 20); panel4.add(fac4); fac4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 4; list4.removeAll(); } }); flc5 = new JLabel(左边距); flc5.setBounds(60, 400, 50, 20); panel4.add(flc5); fac5 = new JTextField(, 20); fac5.setBounds(110, 400, 100, 20); panel4.add(fac5); fac5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 5; list4.removeAll(); } }); flc6 = new JLabel(到顶距); panel4.add(flc6); fac6 = new JTextField(, 20); panel4.add(fac6); flc6.setBounds(220, 400, 60, 20); fac6.setBounds(280, 400, 60, 20); fac6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 6; list4.removeAll(); } }); flc7 = new JLabel(字体); panel4.add(flc7); fac7 = new JTextField(, 20); panel4.add(fac7); flc7.setBounds(370, 400, 40, 20); fac7.setBounds(410, 400, 120, 20); fac7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 7; list4.removeAll(); for (int i = 0; i variabl2629.length; i++) { list4.add(variabl2629 ); } } }); flc8 = new JLabel(字号); panel4.add(flc8); fac8 = new JTextField(, 20); panel4.add(fac8); flc8.setBounds(560, 400, 40, 20); fac8.setBounds(600, 400, 100, 20); fac8.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 8; list4.removeAll(); for (int i = 0; i variabl2607.length; i++) { list4.add(variabl2607 ); } } }); list4.setBounds(840, 10, 120, 330); panel4.add(list4); list4.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list4.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (variabl1739) { case 1: fac1.setText(list4.getSelectedItem()); break; case 2: fac2.setText(list4.getSelectedItem()); break; case 3: fac3.setText(list4.getSelectedItem()); break; case 4: fac4.setText(list4.getSelectedItem()); break; case 5: fac5.setText(list4.getSelectedItem()); break; case 6: fac6.setText(list4.getSelectedItem()); break; case 7: fac7.setText(list4.getSelectedItem()); break; case 8: fac8.setText(list4.getSelectedItem()); break; case 11: fac11.setText(list4.getSelectedItem()); break; case 12: fac12.setText(list4.getSelectedItem()); break; } } } }); variabl26554.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int variabl1823 = variabl26554.getSelectedRow(); for (int j = 0; j 10; j++) { if (variabl19654.getValueAt(variabl1823, j) != null) variabl2327 = variabl19654.getValueAt(variabl1823, j) .toString(); else variabl2327 = ; switch (j) { case 0: fac1.setText(variabl2327.toString()); break; case 1: fac2.setText(variabl2327.toString()); break; case 2: fac11.setText(variabl2327.toString()); break; case 3: fac12.setText(variabl2327.toString()); break; case 4: fac3.setText(variabl2327.toString()); break; case 5: fac4.setText(variabl2327.toString()); break; case 6: fac5.setText(variabl2327.toString()); break; case 7: fac6.setText(variabl2327.toString()); break; case 8: fac7.setText(variabl2327.toString()); break; case 9: fac8.setText(variabl2327.toString()); break; case 10: fac9.setText(variabl2327.toString()); break; } } } }); final JButton addButton4 = new JButton(添加到表格中); addButton4.setBounds(50, 440, 170, 20); addButton4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int variabl1823 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i variabl19654.getRowCount(); i++) { if ((variabl19654.getValueAt(i, 0) != null) (variabl19654.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(fac1.getText().trim()))) { variabl1823 = i; break; } } if (variabl1823 0) { String ; int variabl26491 = new int ; for (int i = 0; i variabl2059; i++) { for (int j = 0; j 10; j++) variabl2649 = variabl19654.getValueAt(i, j) .toString().trim(); for (int j = 4; j 10; j++) { if (j != 8) { if (variabl2649 .length() 0) variabl26491 = Integer .valueOf(variabl2649 ); else variabl26491 = 0; } } for (int j = 4; j 8; j++) { if (j != 5) variabl26491 = variabl26491 * variabl26491 ; else variabl26491 = (int) (variabl26491 * variabl26491 * 1.3); variabl2649 = + variabl26491 ; } } variabl19654.setRowCount(0); for (int i = 0; i variabl2059; i++) variabl19654.addRow(variabl2649 ); } }); panel4.add(countButton4); final JButton clearButton4 = new JButton(清参数文本框); clearButton4.setBounds(730, 440, 170, 20); clearButton4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fac1.setText(); fac2.setText(0); fac3.setText(0); fac4.setText(0); fac5.setText(0); fac6.setText(0); fac7.setText(); fac8.setText(0); fac9.setText(); fac11.setText(0); fac12.setText(0); } }); panel4.add(clearButton4); /* 表尾页 */ fld1 = new JLabel(内容); fld1.setBounds(70, 360, 40, 20); panel5.add(fld1); fad1 = new JTextField(, 20); fad1.setBounds(110, 360, 100, 20); panel5.add(fad1); fad1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 1; list5.removeAll(); } }); fld2 = new JLabel(变量名); fld2.setBounds(230, 360, 50, 20); panel5.add(fld2); fad2 = new JTextField(, 20); fad2.setBounds(280, 360, 60, 20); panel5.add(fad2); fad2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 2; list5.removeAll(); } }); fld11 = new JLabel(行号); fld11.setBounds(370, 360, 40, 20); panel5.add(fld11); fad11 = new JTextField(, 20); fad11.setBounds(410, 360, 60, 20); panel5.add(fad11); fad11.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 11; list5.removeAll(); } }); fld12 = new JLabel(列号); fld12.setBounds(500, 360, 40, 20); panel5.add(fld12); fad12 = new JTextField(, 20); fad12.setBounds(540, 360, 60, 20); panel5.add(fad12); fad12.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 12; list5.removeAll(); } }); fld3 = new JLabel(宽度); fld3.setBounds(630, 360, 40, 20); panel5.add(fld3); fad3 = new JTextField(, 20); fad3.setBounds(670, 360, 60, 20); panel5.add(fad3); fad3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 3; list5.removeAll(); } }); fld4 = new JLabel(高度); fld4.setBounds(760, 360, 40, 20); panel5.add(fld4); fad4 = new JTextField(, 20); fad4.setBounds(800, 360, 60, 20); panel5.add(fad4); fad4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 4; list5.removeAll(); } }); fld5 = new JLabel(左边距); fld5.setBounds(60, 400, 50, 20); panel5.add(fld5); fad5 = new JTextField(, 20); fad5.setBounds(110, 400, 100, 20); panel5.add(fad5); fad5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 5; list5.removeAll(); } }); fld6 = new JLabel(到顶距); panel5.add(fld6); fad6 = new JTextField(, 20); panel5.add(fad6); fld6.setBounds(220, 400, 60, 20); fad6.setBounds(280, 400, 60, 20); fad6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 6; list5.removeAll(); } }); fld7 = new JLabel(字体); panel5.add(fld7); fad7 = new JTextField(, 20); panel5.add(fad7); fld7.setBounds(370, 400, 40, 20); fad7.setBounds(410, 400, 120, 20); fad7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 7; list5.removeAll(); for (int i = 0; i variabl2629.length; i++) { list5.add(variabl2629 ); } } }); fld8 = new JLabel(字号); panel5.add(fld8); fad8 = new JTextField(, 20); panel5.add(fad8); fld8.setBounds(560, 400, 40, 20); fad8.setBounds(600, 400, 100, 20); fad8.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739 = 8; list5.removeAll(); for (int i = 0; i variabl2607.length; i++) { list5.add(variabl2607 ); } } }); list5.setBounds(840, 10, 170, 330); panel5.add(list5); list5.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (list5.getSelectedIndex() = 0) { int w1, w2, h1, h2; switch (variabl1739) { case 1: fad1.setText(list5.getSelectedItem()); break; case 2: fad2.setText(list5.getSelectedItem()); break; case 3: fad3.setText(list5.getSelectedItem()); break; case 4: fad4.setText(list5.getSelectedItem()); break; case 5: fad5.setText(list5.getSelectedItem()); break; case 6: fad6.setText(list5.getSelectedItem()); break; case 7: fad7.setText(list5.getSelectedItem()); break; case 8: fad8.setText(list5.getSelectedItem()); break; case 11: fad11.setText(list5.getSelectedItem()); break; case 12: fad12.setText(list5.getSelectedItem()); break; } } } }); variabl26555.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int variabl1823 = variabl26555.getSelectedRow(); for (int j = 0; j 10; j++) { if (variabl19655.getValueAt(variabl1823, j) != null) variabl2327 = variabl19655.getValueAt(variabl1823, j) .toString(); else variabl2327 = ; switch (j) { case 0: fad1.setText(variabl2327.toString()); break; case 1: fad2.setText(variabl2327.toString()); break; case 2: fad11.setText(variabl2327.toString()); break; case 3: fad12.setText(variabl2327.toString()); break; case 4: fad3.setText(variabl2327.toString()); break; case 5: fad4.setText(variabl2327.toString()); break; case 6: fad5.setText(variabl2327.toString()); break; case 7: fad6.setText(variabl2327.toString()); break; case 8: fad7.setText(variabl2327.toString()); break; case 9: fad8.setText(variabl2327.toString()); break; case 10: fad9.setText(variabl2327.toString()); break; } } } }); final JButton addButton5 = new JButton(添加到表格中); addButton5.setBounds(50, 440, 170, 20); addButton5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int variabl1823 = -1, m = 0, n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i variabl19655.getRowCount(); i++) { if ((variabl19655.getValueAt(i, 0) != null) (variabl19655.getValueAt(i, 0).toString().trim() .equalsIgnoreCase(fad1.getText().trim()))) { variabl1823 = i; break; } } if (variabl1823 0) { String ; int variabl26491 = new int ; for (int i = 0; i variabl2059; i++) { for (int j = 0; j 10; j++) variabl2649 = variabl19655.getValueAt(i, j) .toString().trim(); for (int j = 4; j 10; j++) { if (j != 8) { if (variabl2649 .length() 0) variabl26491 = Integer .valueOf(variabl2649 ); else variabl26491 = 0; } } for (int j = 4; j 8; j++) { if (j != 5) variabl26491 = variabl26491 * variabl26491 ; else variabl26491 = (int) (variabl26491 * variabl26491 * 1.12); variabl2649 = + variabl26491 ; } } variabl19655.setRowCount(0); for (int i = 0; i variabl2059; i++) variabl19655.addRow(variabl2649 ); } }); panel5.add(countButton5); final JButton clearButton5 = new JButton(清参数文本框); clearButton5.setBounds(730, 440, 170, 20); clearButton5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fad1.setText(); fad2.setText(0); fad3.setText(0); fad4.setText(0); fad5.setText(0); fad6.setText(0); fad7.setText(); fad8.setText(0); fad9.setText(); fad11.setText(0); fad12.setText(0); } }); panel5.add(clearButton5); frame5.add(panel5); frame4.add(panel4); frame3.add(panel3); frame2.add(panel2); frame1.add(panel1); frame5.setVisible(true); frame4.setVisible(true); frame3.setVisible(true); frame2.setVisible(true); frame1.setVisible(true); } } 16.源码16,部件程序:表格式报表打印预览 /* * 程序文件名:dataPreview1.java * 作者:程传庆 * 程序功能:根据打印格式文件内容打印预览所传入的表格数据报表。 */ import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.GeneralPath; import java.awt.geom.Point2D; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Random; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.Timer; import javax.swing.UIManager; public class dataPreview1 extends JComponent { private static JFrame frame1; private static String variabl1553; private static String s1 = , s2 = ; private static int variabl1853 = 0, variabl2651 = 0; private static int variabl2533 = new struct2 ; variabl2661 = Integer.valueOf(tableTitle.get(0).tableTitle ); variabl2661 = variabl2661 / 2; for (int i = 0; i tableTitle.size(); i++) variabl2533 = tableTitle.get(i); g3.setFont(new Font(variabl2533 .tableTitle , Font.PLAIN, Integer .valueOf(variabl2533 .tableTitle ))); for (int i = 0; i tableTitle.size(); i++) { x1 = variabl2661; y1 = variabl2657; w1 = Integer.valueOf(variabl2533 .tableTitle ); h1 = Integer.valueOf(variabl2533 .tableTitle ); g3.drawLine(x1, y1, x1 + w1, y1); g3.drawLine(x1, y1, x1, y1 + h1); g3.drawString(variabl2533 .tableTitle , variabl2661 + 2, variabl2657 + h1); if (variabl2533 .tableTitle .equals(有)) g3.drawLine(x1, y1 + h1, x1 + w1, y1 + h1); if (variabl2533 .tableTitle .equals(有)) g3.drawLine(x1 + w1, y1, x1 + w1, y1 + h1); variabl2661 = variabl2661 + w1; if ((i tableTitle.size() - 1) (Integer.valueOf(variabl2533 .tableTitle ) Integer .valueOf(variabl2533 .tableTitle ))) variabl2657 = variabl2657 + h1; } variabl2657 = variabl2657 + h1; } protected void paintComponent(Graphics g1) { g = g1; g3 = (Graphics2D) g; struct1 ; variabl2657 = 0; variabl2661 = 0; for (int i = 0; i title.size(); i++) { variabl2535 = title.get(i); g3.setFont(new Font(variabl2535 .title , Font.PLAIN, Integer .valueOf(variabl2535 .title ))); x1 = Integer.valueOf(variabl2535 .title ); y1 = Integer.valueOf(variabl2535 .title ); g3.drawString(variabl2535 .title , x1, y1); variabl2657 = y1 + Integer.valueOf(variabl2535 .title ); } title(); struct3 ; int ; int ; int ; for (int i = 0; i table1.size(); i++) { variabl2685 = table1.get(i); w10 = Integer.valueOf(variabl2685 .table1 ); h10 = Integer.valueOf(variabl2685 .table1 ); h20 = Integer.valueOf(variabl2685 .table1 ); } y1 = variabl2657; g3.setFont(new Font(variabl2685 .table1 , Font.PLAIN, Integer .valueOf(variabl2685 .table1 ))); for (int j = 0; j variabl1853; j++) { x1 = Integer.valueOf(tableTitle.get(0).tableTitle ) / 2; g3.drawLine(x1, y1, x1, y1 + h1); for (int i = 0; i table1.size(); i++) { if (variabl2197 == null) variabl2197 = ; g3.drawString(variabl2197 , x1 + 2, y1 + h20 ); if (variabl2685 .table1 .equals(有)) g3.drawLine(x1, y1 + h10 , x1 + w10 , y1 + h10 ); if (variabl2685 .table1 .equals(有)) g3.drawLine(x1 + w10 , y1, x1 + w10 , y1 + h10 ); x1 = x1 + w10 ; } y1 = y1 + h10 ; if (y1 = variabl2681) { struct4 ; for (int i1 = 0; i1 table2.size(); i1++) { variabl2653 = table2.get(i1); g3.setFont(new Font(variabl2653 .table2 , Font.PLAIN, Integer.valueOf(variabl2653 .table2 ))); x1 = Integer.valueOf(variabl2653 .table2 ); y1 = Integer.valueOf(variabl2653 .table2 ); g3.drawString(variabl2653 .table2 , x1, y1); variabl2657 = y1 + Integer.valueOf(variabl2653 .table2 ); } y1 = 640; break; } } y1 = y1 + h10 ; struct5 ; for (int i = 0; i table3.size(); i++) { variabl2665 = table3.get(i); g3.setFont(new Font(variabl2665 .table3 , Font.PLAIN, Integer .valueOf(variabl2665 .table3 ))); x1 = Integer.valueOf(variabl2665 .table3 ); y1 = y1 + Integer.valueOf(variabl2665 .table3 ) / 2; g3.drawString(variabl2665 .table3 , x1, y1); } } /** 主程序,创建界面 */ static void printView1(String variabl21971, String variabl1537) { s1 = ; s2 = ; variabl1853 = 0; variabl2651 = 0; title = new ArrayListstruct1(); tableTitle = new ArrayListstruct2(); table1 = new ArrayListstruct3(); table2 = new ArrayListstruct4(); table3 = new ArrayListstruct5(); variabl2681 = 600; x1 = 0; y1 = 0; w1 = 0; h1 = 0; variabl2661 = 0; variabl2657 = 0; variabl1553 = variabl1537; frame1 = new JFrame(报表预览程序 作者:程传庆); frame1.setBounds(10, 10, 1000, 1000); frame1.add(new dataPreview1()); frame1.setVisible(true); File file1 = new File(variabl1553); try { if (file1.exists()) { FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); String tempStr = null; for (int i = 0; (tempStr = br.readLine()) != null; i++) { if (tempStr.substring(0, 2).equals(1,)) { title.add(new struct1(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(2,)) { tableTitle.add(new struct2(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(3,)) { table1.add(new struct3(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(4,)) { table2.add(new struct4(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(5,)) { table3.add(new struct5(tempStr.substring(2, tempStr.length()).split(。))); } } } } catch (IOException e2) { JOptionPane.showMessageDialog(null, 打开文件错!); } String s3 = ; for (int i = 0; i table1.size(); i++) { if (s3.length() == 0) s3 = table1.get(i).table1 ; else s3 = s3 + , + table1.get(i).table1 ; } variabl1853 = variabl21971.length; variabl2651 = variabl21971 .length; variabl2197 = new String ; for (int i = 0; i variabl1853; i++) { for (int j = 0; j variabl2651; j++) variabl2197 = variabl21971 ; } } } 17.源码17.部件程序,表格式报表打印。 /* * 程序文件名:dataPrint1.java * 作者:程学先 * 程序功能:根据打印格式文件内容打印预览所传入的表格数据报表。 */ import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.print.PageFormat; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JFrame; public class dataPrint1 extends JFrame { private static String variabl1553; private static int variabl1853 = 0, variabl2651 = 0; private static String variabl2197; private static ArrayListstruct1 title = new ArrayListstruct1(); private static ArrayListstruct2 tableTitle = new ArrayListstruct2(); private static ArrayListstruct3 table1 = new ArrayListstruct3(); private static ArrayListstruct4 table2 = new ArrayListstruct4(); private static ArrayListstruct5 table3 = new ArrayListstruct5(); private static int variabl2681 = 600; private static int x1 = 0, y1 = 0, w1 = 0, h1 = 0, variabl2661 = 0, variabl2657 = 0; private PageFormat pf; private static Graphics2D g2; static void title() { struct2 ; variabl2661 = Integer.valueOf(tableTitle.get(0).tableTitle ); variabl2661 = variabl2661 / 2; for (int i = 0; i tableTitle.size(); i++) variabl2533 = tableTitle.get(i); g2.setFont(new Font(variabl2533 .tableTitle , Font.PLAIN, Integer .valueOf(variabl2533 .tableTitle ))); for (int i = 0; i tableTitle.size(); i++) { x1 = variabl2661; y1 = variabl2657; w1 = Integer.valueOf(variabl2533 .tableTitle ); h1 = Integer.valueOf(variabl2533 .tableTitle ); g2.drawLine(x1, y1, x1 + w1, y1); g2.drawLine(x1, y1, x1, y1 + h1); g2.drawString(variabl2533 .tableTitle , variabl2661 + 2, variabl2657 + h1); if (variabl2533 .tableTitle .equals(有)) g2.drawLine(x1, y1 + h1, x1 + w1, y1 + h1); if (variabl2533 .tableTitle .equals(有)) g2.drawLine(x1 + w1, y1, x1 + w1, y1 + h1); variabl2661 = variabl2661 + w1; if ((i tableTitle.size() - 1) (Integer.valueOf(variabl2533 .tableTitle ) Integer .valueOf(variabl2533 .tableTitle ))) variabl2657 = variabl2657 + h1; } variabl2657 = variabl2657 + h1; } public static void print1(String variabl21971, String variabl1537) { variabl1853 = 0; variabl2651 = 0; title = new ArrayListstruct1(); tableTitle = new ArrayListstruct2(); table1 = new ArrayListstruct3(); table2 = new ArrayListstruct4(); table3 = new ArrayListstruct5(); variabl2681 = 600; x1 = 0; y1 = 0; w1 = 0; h1 = 0; variabl2661 = 0; variabl2657 = 0; variabl1553 = variabl1537; dataPrint1 frame = new dataPrint1(); frame.setTitle(报表打印程序 作者:程学先); frame.pf = new PageFormat(); frame.pf.setOrientation(PageFormat.LANDSCAPE); File file1 = new File(variabl1553); try { if (file1.exists()) { FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); String tempStr = null; for (int i = 0; (tempStr = br.readLine()) != null; i++) { if (tempStr.substring(0, 2).equals(1,)) { title.add(new struct1(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(2,)) { tableTitle.add(new struct2(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(3,)) { table1.add(new struct3(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(4,)) { table2.add(new struct4(tempStr.substring(2, tempStr.length()).split(。))); } else if (tempStr.substring(0, 2).equals(5,)) { table3.add(new struct5(tempStr.substring(2, tempStr.length()).split(。))); } } } } catch (IOException e2) { JOptionPane.showMessageDialog(null, 打开文件错!); } String s3 = ; for (int i = 0; i table1.size(); i++) { if (s3.length() == 0) s3 = table1.get(i).table1 ; else s3 = s3 + , + table1.get(i).table1 ; } variabl1853 = variabl21971.length; variabl2651 = variabl21971 .length; variabl2197 = new String ; for (int i = 0; i variabl1853; i++) { for (int j = 0; j variabl2651; j++) variabl2197 = variabl21971 ; } final PrinterJob job = PrinterJob.getPrinterJob(); if (!job.printDialog()) return; job.setPrintable(new Printable() { public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { if (pageIndex 1) { g2 = (Graphics2D) graphics; g2.setStroke(new BasicStroke(1f)); struct1 ; variabl2657 = 0; variabl2661 = 0; for (int i = 0; i title.size(); i++) { variabl2535 = title.get(i); g2.setFont(new Font(variabl2535 .title , Font.PLAIN, Integer .valueOf(variabl2535 .title ))); x1 = Integer.valueOf(variabl2535 .title ); y1 = Integer.valueOf(variabl2535 .title ); g2.drawString(variabl2535 .title , x1, y1); variabl2657 = y1 + Integer.valueOf(variabl2535 .title ); } title(); struct3 ; int ; int ; int ; for (int i = 0; i table1.size(); i++) { variabl2685 = table1.get(i); w10 = Integer.valueOf(variabl2685 .table1 ); h10 = Integer.valueOf(variabl2685 .table1 ); h20 = Integer.valueOf(variabl2685 .table1 ); } y1 = variabl2657; for (int j = 0; j variabl1853; j++) { x1 = Integer.valueOf(tableTitle.get(0).tableTitle ) / 2; g2.drawLine(x1, y1, x1, y1 + h1); for (int i = 0; i table1.size(); i++) { if (variabl2197 == null) variabl2197 = ; g2.drawString(variabl2197 , x1 + 2, y1 + h20 ); if (variabl2685 .table1 .equals(有)) g2.drawLine(x1, y1 + h10 , x1 + w10 , y1 + h10 ); if (variabl2685 .table1 .equals(有)) g2.drawLine(x1 + w10 , y1, x1 + w10 , y1 + h10 ); x1 = x1 + w10 ; } y1 = y1 + h10 ; if (y1 = variabl2681) { struct4 ; for (int i1 = 0; i1 table2.size(); i1++) { variabl2653 = table2.get(i1); g2.setFont(new Font( variabl2653 .table2 , Font.PLAIN, Integer.valueOf(variabl2653 .table2 ))); x1 = Integer.valueOf(variabl2653 .table2 ); y1 = Integer.valueOf(variabl2653 .table2 ); g2.drawString(variabl2653 .table2 , x1, y1); variabl2657 = y1 + Integer .valueOf(variabl2653 .table2 ); } y1 = 640; break; } } y1 = y1 + h10 ; struct5 ; for (int i = 0; i table3.size(); i++) { variabl2665 = table3.get(i); g2.setFont(new Font(variabl2665 .table3 , Font.PLAIN, Integer .valueOf(variabl2665 .table3 ))); x1 = Integer.valueOf(variabl2665 .table3 ); y1 = y1 + Integer.valueOf(variabl2665 .table3 ) / 2; g2.drawString(variabl2665 .table3 , x1, y1); } return Printable.PAGE_EXISTS; } else { return Printable.NO_SUCH_PAGE; } } }); try { job.print(); } catch (Exception e1) { e1.printStackTrace(); } frame.dispose(); } } 18.源码18.部件程序,定查询条件表达式的多数据表单一条件或二条件查询程序,可变换标签,可分组统计,可按格式打印报表。 /** * 程序文件名:dataQuery9.java * 作者:程学先 * 完成时间:2013年11月27日 * 部件功能:在参数中直接给定查询条件表达式的主题部分和输出要求多表单条件或二条件查询程序, * 程序允许利用字典表做标签的变换。 * 可按格式文件组织打印。运行时程序提供单个或二个文本框供输入查询数据,之后组织查询。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery9 extends JFrame { static dataQuery9 frame = new dataQuery9(); static String variabl2603; static String variabl1873; static String variabl2429; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField, aTextField2; static JButton b1, b2; static String s1 = ; static ResultSet rs; static int b = 0, c = 0; static int variabl2651; static int variabl2113; static String variabl2517; static String variabl1269 = , variabl1787 = , variabl17871 = ; static String variabl2319 = { { , 大于 }, { , 小于 }, { = , 等于 }, { = , 大于等于 }, { = , 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; static String variabl1501; static String variabl1489; static int variabl1735; static int variabl2337 = 80; static String variabl2405 = null; static String variabl1187; static JButton printViewButton, printButton; public static void means(final String = ; variabl2319 = 大于; variabl2319 = ; variabl2319 = 小于; variabl2319 = = ; variabl2319 = 等于; variabl2319 = = ; variabl2319 = 大于等于; variabl2319 = = ; variabl2319 = 小于等于; variabl2319 = ; variabl2319 = 不等于; variabl2319 = like ; variabl2319 = 包含; variabl2319 = not like ; variabl2319 = 不包含; String ; variabl2851 = 0; for (int i0 = 0; i0 variabl240501.length; i0++) variabl2405 = variabl240501 ; if (parameter .length() 0) { variabl1187 = parameter ; variabl1187 = variabl1187.replaceAll(;, ;); variabl1187 = variabl1187.replaceAll(。, ;); variabl1187 = variabl1187.replaceAll(:, ;); variabl1187 = variabl1187.replaceAll(:, ;); if (variabl1187.indexOf(;) 0) { String s601 .indexOf(;) 0) { String s602 .split(;); variabl2405 ))] = s602 ; variabl1187 = variabl1187 + , + s602 ; variabl2851++; } else { variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { String s601 ; else variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { variabl1187 = ; for (int i1 = 0; i1 variabl2405.length; i1++) { if (i1 == 0) variabl1187 = variabl1187 + i1; else variabl1187 = variabl1187 + , + i1; variabl2851++; } } variabl1187 = , + variabl1187 + ,; variabl2483 = main1.variabl2483; variabl2503 = main1.variabl2503; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter ); m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2603 = parameter ; variabl2049 = parameter ; variabl1079 = parameter ; variabl1325 = parameter ; if (variabl1325.lastIndexOf(,) == variabl1325.length() - 1) variabl1325 = variabl1325.substring(0, variabl1325.length() - 1); String .length() 0) { variabl1735 = parameter .split(,); variabl2517 = new String ; for (int i = 0; i variabl1735.length; i++) { variabl2517 = s6 )]; variabl2517 = variabl2517 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; } else { variabl2517 = new String ; for (int i = 0; i s6.length; i++) { variabl2517 = s6 ; variabl2517 = variabl2517 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; s2 = * ; } String s11 = variabl2603; if (variabl2603.indexOf(,) 0) { String ; } variabl2429 = parameter ; variabl1873 = ; variabl1079 = parameter ; variabl1413 = parameter ; variabl2101 = parameter ; String .lastIndexOf(s11 + 字典表) = 0) variabl1873 = t1 ; } if (variabl1873.length() 0) { try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + variabl1873; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int variabl26510 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); s15 = rs.getString(2).trim(); for (int j = 0; j variabl2517 .length; j++) { if (variabl2517 .trim().equalsIgnoreCase( s14.trim())) { variabl2517 = s15; break; } else if ((variabl2517 .trim() + ,).indexOf(. + s14 + ,) 0) { variabl2517 = variabl2517 .replace(s14, s15); break; } } } rs.close(); con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } String ; variabl2669 = variabl1413; } if (variabl2669 .lastIndexOf(大于等于) 0) { variabl22590 = =; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(大于等于)); } else if (variabl2669 .lastIndexOf(小于等于) 0) { variabl22590 = =; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(小于等于)); } else if (variabl2669 .lastIndexOf(不等于) 0) { variabl22590 = !=; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(不等于)); } else if (variabl2669 .lastIndexOf(大于) 0) { variabl22590 = ; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(大于)); } else if (variabl2669 .lastIndexOf(小于) 0) { variabl22590 = ; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(小于)); } else if (variabl2669 .lastIndexOf(等于) 0) { variabl22590 = =; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(等于)); } else if (variabl2669 .lastIndexOf(不包含) 0) { variabl22590 = 不包含; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(不包含)); } else if (variabl2669 .lastIndexOf(包含) 0) { variabl22590 = 包含; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(包含)); } if (variabl2485.length() 0) { if (variabl2669 .lastIndexOf(大于等于) 0) { variabl225901 = =; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(大于等于)); } else if (variabl2669 .lastIndexOf(小于等于) 0) { variabl225901 = =; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(小于等于)); } else if (variabl2669 .lastIndexOf(不等于) 0) { variabl225901 = !=; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(不等于)); } else if (variabl2669 .lastIndexOf(大于) 0) { variabl225901 = ; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(大于)); } else if (variabl2669 .lastIndexOf(小于) 0) { variabl225901 = ; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(小于)); } else if (variabl2669 .lastIndexOf(等于) 0) { variabl225901 = =; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(等于)); } else if (variabl2669 .lastIndexOf(不包含) 0) { variabl225901 = 不包含; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(不包含)); } else if (variabl2669 .lastIndexOf(包含) 0) { variabl225901 = 包含; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(包含)); } } try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2049.trim().length() 0) s1 = select + variabl1325 + from + variabl2603 + where + variabl2049; else s1 = select + variabl1325 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { if ((variabl2385.length() 0) (variabl2517 .trim() .equalsIgnoreCase(variabl2385.trim()))) variabl2345 = i; else if ((variabl2517 .trim() + ,).indexOf(. + variabl2385.trim() + ,) 0) variabl2345 = i; if ((variabl23851.length() 0) (variabl2517 .trim() .equalsIgnoreCase(variabl23851.trim()))) variabl23451 = i; else if ((variabl2517 .trim() + ,).indexOf(. + variabl23851.trim() + ,) 0) variabl23451 = i; variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; b++; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); con.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } if (variabl2049.trim().length() 0) variabl2049 = variabl2049 + and ; frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20, variabl2483 - 50, variabl2503 - 20); tableModel = new DefaultTableModel(variabl2197, variabl2517 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 60, variabl2483 - 100, variabl2503 - 200); for (int i = 0; i variabl2651; i++) { TableColumn tc = table.getColumn(variabl2517 ); tc.setPreferredWidth(variabl1489 * 12); } panel.add(scrollPane); JLabel label1 = new JLabel(variabl2669 ); label1.setBounds(variabl2337, 10, variabl2669 .length() * 15, 20); panel.add(label1); variabl2337 = variabl2337 + variabl2669 .length() * 15; aTextField = new JTextField(, 10); aTextField.setBounds(variabl2337, 10, 100, 20); panel.add(aTextField); variabl2337 = variabl2337 + 100; if (variabl2669.length 1) { JLabel label3 = new JLabel(variabl2669 ); label3.setBounds(variabl2337, 10, variabl2669 .length() * 15, 20); panel.add(label3); variabl2337 = variabl2337 + variabl2669 .length() * 15; aTextField2 = new JTextField(, 10); aTextField2.setBounds(variabl2337, 10, 150, 20); panel.add(aTextField2); } variabl2339 = (variabl2483 - 360) / variabl2851; int variabl2337 = 350; final JButton selectButton = new JButton(variabl2405 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String ; else s1 = s1 + where + variabl2517 ; if (((main1.variabl1539.lastIndexOf(, + variabl1501 + ,)) = 0) || ((main1.variabl1539.lastIndexOf(, + variabl1501 + ,)) = 0)) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } if (variabl22590.lastIndexOf(包含) 0) { if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) s1 = s1 + variabl22590 + aTextField.getText().trim(); else s1 = s1 + variabl22590 + ' + aTextField.getText().trim() + '; } else { if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (variabl22590.lastIndexOf(不包含) = 0) s1 = s1 + not like '% + aTextField.getText().trim() + %'; else s1 = s1 + like '% + aTextField.getText().trim() + %'; } if (variabl2669.length 1) { if (variabl225901.lastIndexOf(包含) 0) if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) s1 = s1 + and + variabl2517 + variabl225901 + aTextField2.getText().trim(); else s1 = s1 + and + variabl2517 + variabl225901 + ' + aTextField2.getText().trim() + '; else if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (variabl225901.lastIndexOf(不包含) = 0) s1 = s1 + and + variabl2517 + not like '% + aTextField2.getText().trim() + %'; else s1 = s1 + and + variabl2517 + like '% + aTextField2.getText().trim() + %'; } if (parameter .trim().length() 0) { String .split(,); String s2 = ; for (int k = 0; k s0.length; k++) if (k s0.length - 1) s2 = s2 + variabl2517 )] + ,; else s2 = s2 + variabl2517 )]; s1 = s1 + group by + s2; } ResultSet rs = sta3.executeQuery(s1); int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); int variabl26510 = rsmd3.getColumnCount(); variabl1489 = new int ; String variabl25170 = new String ; for (int i = 0; i variabl26510; i++) { variabl25170 = rsmd3.getColumnName(i + 1); variabl25170 = rsmd3.getColumnName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl25170 .length()) variabl1489 = variabl25170 .length(); if (variabl1489 50) variabl1489 = 50; } String s4 = ; for (int i = 0; i variabl26510; i++) { s4 = variabl25170 ; for (int j = 0; j variabl2651; j++) { if (variabl2517 .trim().equalsIgnoreCase( s4.trim())) { variabl25170 = s4; break; } } } variabl2197 = new String ; c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl26510) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); con.close(); tableModel = new DefaultTableModel(variabl2197, variabl25170 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } printViewButton.setEnabled(true); printButton.setEnabled(true); } }); selectButton.setBounds(variabl2337, 30, variabl2339, 20); if (variabl1187.indexOf(,0,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(selectButton); } printViewButton = new JButton(variabl2405 ); printViewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPreview1.printView1(variabl2197, variabl1079); } }); printViewButton.setBounds(variabl2337, 30, variabl2339, 20); if (variabl1187.indexOf(,1,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(printViewButton); printViewButton.setEnabled(false); } printButton = new JButton(variabl2405 ); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPrint1.print1(variabl2197, variabl1079); } }); printButton.setBounds(variabl2337, 30, variabl2339, 20); if (variabl1187.indexOf(,2,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(printButton); printButton.setEnabled(false); } final JButton exitButton = new JButton(variabl2405 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(variabl2337, 30, variabl2339, 20); if (variabl1187.indexOf(,3,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(exitButton); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1 = str; int i = 1; while (s1.indexOf(,) != -1) { s1 = s1.substring(s1.indexOf(,) + 1, s1.length()); i++; } array = new String ; int j = 0; while (str.indexOf(,) != -1) { array = str.substring(0, str.indexOf(,)); str = str.substring(str.indexOf(,) + 1, str.length()); array = str; j++; } return array; } }
个人分类: 生活点滴|1644 次阅读|0 个评论
管理信息系统软件生产线源码9-14
求新 2018-5-28 20:06
版本1 9.源码9,公共表格数据显示程序 /* * 作者:程传庆 * 功能:共用查询结果显示程序。 * 完成日期:2013年10月11日 * 调用本程序命令格式:tableTenance.tableModel(窗口宽,窗口高,表格列名,列宽度,表格数据,表列数据类型); * 程序功能:以表格形式显示数据,可进行对单字段排序也可对多字段排序之后显示表格数据, * 还可以对传送过来的数据做打印预览或打印操作。按字段宽度以固定方式定义打印格式。 * 打印预览调用dataPreview0.java程序实现,打印通过调用JAVA自身表格类的打印程序实现。 * 这些打印功能比较简单,只用于打印要求不高的场合,要求较高的打印请调用专门打印部件程序实现。 * 排序通过“索引”按钮程序实现,操作时先在表格中点击欲排序的某一列任意位置, * 再点击“索引”按钮,实现按该列排序显示。如果还想在满足所选第一列字段排序的情况下再按新字段排序, * 可通过“接续索引”按钮实现。 * “接续索引”的意义是在前面所有排序相同情况下再按新的某一列排序。 * 操作时先点击已排序外某一列任意位置,再点击“接续索引”按钮实现按多字段从小到大排序。 * 本程序还用于单记录数据维护部件程序,如果记录条数很多,一条条移动指针位置效率很低。 * 可以调用本程序,以表格形式显示全部记录,拖动滚动条,将指针快速移动到需要记录位置, * 再点击本程序“退出”按钮,在返回主程序同时将“当前行行号”数值返回主程序, * 再点击“上一条”或“下一条”按钮,实现将指针快速移动到新的记录上。 * 要求按钮号表数据两边预加逗号 */ import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public class tableTenance extends JFrame { static String 表格数据1; static String 排序数据; static String 排序备份; static String 备份数据; static int 记录条数; static int 起始序号 = 0, 终了序号 = 0, 当前列号 = 0, 上次列号 = 0; static int 表格列数; static JButton sortButton1, sortButton, printButton, exitButton; static String 列名0; static int 列名3, int 表列数据类型) { 列名0 = new String ; 列宽度0 = new int ; for (int i = 0; i 列名3.length; i++) { 列名0 = 列名3 ; 列宽度0 = 列宽度 ; } 起始序号 = 0; 终了序号 = 0; 当前列号 = 0; 上次列号 = 0; if (窗口高度 600) 窗口高度 = 600; final tableTenance frame = new tableTenance(); // 创建窗体 final JTable table; final DefaultTableModel model; frame.setTitle(表格式显示部件 作者:程传庆); // 设置窗体标题 frame.setBounds(10, 10, 窗口宽度, 窗口高度); // 设置窗体的位置和大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.setVisible(true); // 显示窗体 final JScrollPane scrollPane = new JScrollPane(); // 创建滚动面板 scrollPane.setBounds(10, 10, 窗口宽度 - 20, 窗口高度 - 100); // 定义滚动面板大小位置 frame.setLayout(null); frame.getContentPane().add(scrollPane); // 在窗体中央添加滚动面板 int j = 5; int 按钮宽 = (窗口宽度 - 50) / j; int 按钮左边距 = 5; 表格列数 = 列名0.length; 记录条数 = 表格数据.length; rowValues = new String ; // 准备添加到表格的一行记录 备份数据 = new String ; 表格数据1 = new String ; int b = 0; for (int c = 0; c 记录条数; c++) for (b = 0; b 表格列数; b++) { 备份数据 = 表格数据 ; 表格数据1 = 表格数据 ; } model = new DefaultTableModel(表格数据1, 列名0); // 建立表格模型 table = new JTable(model); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); for (int i = 0; i 列名0.length; i++) { TableColumn tc = table.getColumn(列名0 );// 返回表格的列对象 JTableHeader header = table.getTableHeader(); if (列宽度 列名0 .length()) 列宽度 = 列名0 .length(); tc.setPreferredWidth(列宽度 * 9); tc.setMaxWidth(列宽度 * 9); } scrollPane.setViewportView(table); // 把表格添加到滚动面板中 table.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { main1.当前行行号 = table.getSelectedRow(); } }); 排序数据 = new String ; 排序备份 = new String ; for (b = 0; b 表格列数; b++) { for (int c = 0; c 记录条数; c++) { if (备份数据 == null) 排序数据 = ; else 排序数据 = 备份数据 ; } if (表列数据类型 .compareTo(int) == 0) { for (int c = 0; c 记录条数; c++) { 排序数据 = 0000000000 + 排序数据 ; 排序数据 = 排序数据 .substring(排序数据 .length() - 10); } } else if ((表列数据类型 .compareTo(float) == 0) || (表列数据类型 .compareTo(numeric) == 0)) { for (int c = 0; c 记录条数; c++) { 排序数据 = 0000000000 + 排序数据 ; int k1 = 排序数据 .lastIndexOf('.'); if (k1 == -1) { // 原数为整数,无小数点 k1 = 排序数据 .length(); 排序数据 = 排序数据 + .000000; } else 排序数据 = 排序数据 + 000000; 排序数据 = 排序数据 .substring(k1 - 10, k1 + 1) + 排序数据 .substring(k1 + 1, k1 + 6); } } } for (int c = 0; c 记录条数; c++) 排序数据 = + c; for (int c = 0; c 记录条数; c++) for (b = 0; b 表格列数 + 1; b++) 排序备份 = 排序数据 ; 起始序号 = 0; 终了序号 = 0; sortButton = new JButton(排序); // 定义排序按钮 sortButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rowValues = new String ; if (sortButton.getText().trim().equals(排序)) { if (table.getSelectedColumn() 0) JOptionPane.showMessageDialog(null, 请先点击要排序的某一列,再按本按钮!); else { sortButton.setText(还原); sortButton1.setEnabled(true); 上次列号 = table.getSelectedColumn(); 当前列号 = table.getSelectedColumn(); } String s; int i, j, k = 0; for (int c = 0; c 记录条数; c++) { for (i = 0; i 记录条数 - c - 1; i++) { if (排序数据 .compareTo(排序数据 ) 0) for (j = 0; j = 表格列数; j++) { s = 排序数据 ; 排序数据 = 排序数据 ; 排序数据 = s; } } } model.setRowCount(0); for (int c = 0; c 记录条数; c++) { int n = Integer.parseInt(排序数据 ); for (int b = 0; b 表格列数; b++) { 表格数据1 = 备份数据 ; rowValues = 备份数据 ; } model.addRow(rowValues); } } else { sortButton.setText(排序); sortButton1.setEnabled(false); model.setRowCount(0); for (int c = 0; c 记录条数; c++) { for (int b = 0; b 表格列数; b++) { rowValues = 备份数据 ; 排序数据 = 排序备份 ; } model.addRow(rowValues); 排序数据 = 排序备份 ; } } } }); sortButton.setBounds(按钮左边距, 窗口高度 - 80, 按钮宽 - 10, 20); frame.add(sortButton); 按钮左边距 = 按钮左边距 + 按钮宽; sortButton1 = new JButton(接续排序); sortButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { 当前列号 = table.getSelectedColumn(); String s = , s1 = 排序数据 ; int n1 = 0, n2 = 0; int i, j, k = 0; for (int c = 0; c 记录条数; c++) { if ((c == 记录条数 - 1) || (s1.compareTo(排序数据 ) != 0)) { if (c 记录条数 - 1) s1 = 排序数据 ; n2 = c; for (i = n1; i n2; i++) { for (j = n1; j n2 + n1 - i; j++) { if (排序数据 .compareTo(排序数据 ) 0) for (k = 0; k = 表格列数; k++) { s = 排序数据 ; 排序数据 = 排序数据 ; 排序数据 = s; } } } n1 = n2 + 1; } } 上次列号 = 当前列号; model.setRowCount(0); for (int c = 0; c 记录条数; c++) { int n = Integer.parseInt(排序数据 ); for (int b = 0; b 表格列数; b++) { rowValues = 备份数据 ; } model.addRow(rowValues); } } }); sortButton1.setBounds(按钮左边距, 窗口高度 - 80, 按钮宽 - 5, 20); frame.add(sortButton1); 按钮左边距 = 按钮左边距 + 按钮宽; sortButton1.setEnabled(false); JButton printButton0 = new JButton(打印预览); printButton0.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { dataPreview0.printView1(列名0, 备份数据, 列宽度0, 表格预览); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 打印预览失败!); } } }); printButton0.setBounds(按钮左边距, 窗口高度 - 80, 按钮宽 - 5, 20); frame.add(printButton0); // 加入打印预览按钮 按钮左边距 = 按钮左边距 + 按钮宽; printButton = new JButton(打印); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { table.print(); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 打印失败!); } } }); printButton.setBounds(按钮左边距, 窗口高度 - 80, 按钮宽 - 5, 20); frame.add(printButton); ; // 加入打印按钮 按钮左边距 = 按钮左边距 + 按钮宽; exitButton = new JButton(退 出); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // main1.当前行行号=table.getSelectedRow(); // System.out.println(main1.当前行行号=+main1.当前行行号); frame.setVisible(false); return; } }); exitButton.setBounds(按钮左边距, 窗口高度 - 80, 按钮宽 - 5, 20); frame.add(exitButton); 按钮左边距 = 按钮左边距 + 按钮宽; } } 10.源码10,公共程序:单数据表的表格式报表打印预览 /* * 作者:程传庆 * 程序功能:单数据表的表格式报表打印预览,内容只限表格数据中数据。 * 要求在上级程序中生成表格数据,根据所传过来字段数据与所定义的宽度以固定格式实现打印。 * 主要参数:String 字段宽度,String 标题 * 调用命令:dataPreview0.printView1(列名,表格数据,字段宽度,标题); */ import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JComponent; import javax.swing.JFrame; public class dataPreview0 extends JComponent { private static JFrame frameView; private static int 列名; private static int 标题字号 = 32; private static int x1 = 0, y1 = 0, w1 = 0, h1 = 0; private static Graphics2D g3; private static int 页宽 = 800; protected void paintComponent(Graphics g) { g3 = (Graphics2D) g; g3 = (Graphics2D) g; g3.setFont(new Font(宋体, Font.PLAIN, 标题字号)); g3.drawString(表格标题, (页宽 - 表格标题.length()) / 2, 30); int 表格宽度 = 0; for (int i = 0; i 字段宽度.length; i++) 表格宽度 = 表格宽度 + 字段宽度 ; int 表格字号 = (页宽 - 80) / 表格宽度; x1 = 30; y1 = 标题字号 + 50; h1 = (int) (表格字号 * 1.2); g3.setFont(new Font(宋体, Font.PLAIN, 表格字号)); for (int i = 0; i 列名.length; i++) { w1 = 字段宽度 * 表格字号; g3.drawLine(x1, y1, x1 + w1, y1); g3.drawLine(x1, y1, x1, y1 + h1); g3.drawString(列名 , x1 + 4, y1 + 表格字号); g3.drawLine(x1, y1 + h1, x1 + w1, y1 + h1); g3.drawLine(x1 + w1, y1, x1 + w1, y1 + h1); x1 = x1 + w1; } y1 = y1 + h1; h1 = (int) (表格字号 * 1.2); for (int i = 0; i 表格数据.length; i++) { x1 = 30; g3.drawLine(x1, y1, x1, y1 + h1); for (int j = 0; j 列名.length; j++) { w1 = 字段宽度 * 表格字号; if (表格数据 == null) 表格数据 = ; g3.drawString(表格数据 , x1 + 4, y1 + 表格字号); g3.drawLine(x1, y1 + h1, x1 + w1, y1 + h1); g3.drawLine(x1 + w1, y1, x1 + w1, y1 + h1); x1 = x1 + w1; } y1 = y1 + h1; } } public static void printView1(String 字段宽度1, String 标题) { 表格标题 = 标题; 表格数据 = new String ; 列名 = new String ; 字段宽度 = new int ; for (int i = 0; i 表格数据1.length; i++) for (int j = 0; j 列名1.length; j++) 表格数据 = 表格数据1 ; for (int j = 0; j 列名1.length; j++) { 列名 = 列名1 ; 字段宽度 = 字段宽度1 ; } frameView = new JFrame(报表预览程序 作者:程传庆); frameView.setBounds(10, 10, 1000, 1000); frameView.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frameView.add(new dataPreview0()); frameView.setVisible(true); } } 11.源码11.部件程序,利用二个指定的字段和表达式进行单数据表二固定条件查询。 /** * 程序文件名:dataQuery5.java * 作者:程学先 * 完成时间:2013年11月27日 * 部件功能:利用二个指定的字段和表达式进行单数据表二固定条件查询。 * 被调用语句:datadataQuery5.means(parameter); * 必须提供的参数:“数据表表名”、“查询字段号1”、“查询字段号2”、“关系符1” * “关系符2”,这些参数由主程序带入。 * 操作方法与注意事项:因为该部件要求对指定的字段和指定的表达式查询,所以在“数据表表名”、 * “查询字段号1”、“查询字段号2”处各只允许输入一个参数,且必须输入一个参数。 * “关系符1”、“关系符2”的参数各只能从{大于、小于、等于、大于等于、 * 小于等于、不等于、包含、不包含}中选择一个,如果输入错误 * 会导致程序显示错误或无法进行查询。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery5 extends JFrame { static dataQuery5 frame = new dataQuery5(); static String 表名 = ; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField, aTextField2; static JButton b1, b2; static String s1 = ; static ResultSet rs; static int b = 0, c = 0; static int 列数; static int 表格列数; static String 表格列名; static String 列数据类型; static String 列数据宽度; static int 字段号表; static int 左边距 = 80; static String 打印格式文件名; static Connection con; // 连接数据库 static ResultSetMetaData rsmd3; static Statement sta3; static int 窗口宽 = 1000, 窗口高 = 700; static JButton printViewButton, printButton; static String parameter) { frame = new dataQuery5(); 表名 = ; scrollPane = new JScrollPane(); s1 = ; b = 0; c = 0; 关系符 = ; 关系符1 = ; 左边距 = 80; 窗口宽 = 1000; 窗口高 = 700; 关系表 = ; 关系表 = 大于; 关系表 = ; 关系表 = 小于; 关系表 = = ; 关系表 = 等于; 关系表 = = ; 关系表 = 大于等于; 关系表 = = ; 关系表 = 小于等于; 关系表 = ; 关系表 = 不等于; 关系表 = like ; 关系表 = 包含; 关系表 = not like ; 关系表 = 不包含; String ; 按钮数 = 0; for (int i0 = 0; i0 按钮集01.length; i0++) 按钮集 = 按钮集01 ; if (parameter .length() 0) { 要求按钮号表 = parameter ;// 需要显示的按钮的顺序号 // 将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表 = 要求按钮号表.replaceAll(;, ;); 要求按钮号表 = 要求按钮号表.replaceAll(。, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); if (要求按钮号表.indexOf(;) 0) { // 如果有按钮更名要求 String s601 .indexOf(;) 0) { String s602 .split(;); 按钮集 ))] = s602 ; 要求按钮号表 = 要求按钮号表 + , + s602 ;// 只留号,去更名 按钮数++; } else { 要求按钮号表 = 要求按钮号表 + , + s601 ;// 只留号,原无更名 按钮数++; } } } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表 = 要求按钮号表 + , + s601 ; 按钮数++; } } } else { 要求按钮号表 = ; // 没输入要求按钮号,定全部按钮号 for (int i1 = 0; i1 按钮集.length; i1++) { if (i1 == 0) 要求按钮号表 = 要求按钮号表 + i1; else 要求按钮号表 = 要求按钮号表 + , + i1; 按钮数++; } } 要求按钮号表 = , + 要求按钮号表 + ,; 窗口宽 = main1.窗口宽; 窗口高 = main1.窗口高; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter );// 宽度参数 m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 列序号 = Integer.valueOf(parameter ); 列序号1 = Integer.valueOf(parameter ); 关系符 = parameter ; 关系符1 = parameter ; 表名 = parameter ; // 数据表名 打印格式文件名 = parameter ; 字段名字串 = parameter ; if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); String ; String 指定的字段名1 = s6 ; String s2 = ; if (parameter .length() 0) { 字段号表 = parameter .split(,); 列名 = new String ; for (int i = 0; i 字段号表.length; i++) { 列名 = s6 )]; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; } else { 列名 = new String ; for (int i = 0; i s6.length; i++) { 列名 = s6 ; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; s2 = * ; } try { con = main1.getConn();// 连接数据库 sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = sta3.executeQuery(select + s2 + from + 表名); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 列序号 = -1; 列序号1 = -1; for (int i = 0; i 列数; i++) { 列数据类型 = rsmd3.getColumnTypeName(i + 1); // 获取列数据类型名存到数组中 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; if ((, + 列名 + ,).lastIndexOf(, + 指定的字段名 + ,) = 0) 列序号 = i; if ((, + 列名 + ,).lastIndexOf(. + 指定的字段名 + ,) = 0) 列序号 = i; if ((, + 列名 + ,).lastIndexOf(, + 指定的字段名1 + ,) = 0) 列序号1 = i; if ((, + 列名 + ,).lastIndexOf(. + 指定的字段名1 + ,) = 0) 列序号1 = i; b++; } if (列序号 0) { JOptionPane.showMessageDialog(null, 查询要求字段未包含在所选字段号表中,没法查询!); return; } if (列序号1 0) { JOptionPane.showMessageDialog(null, 查询要求字段未包含在所选字段号表中,没法查询!); return; } int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } frame.setTitle(查询部件程序 作者:程学先); // 窗口标题 frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 + 20); // 窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.getContentPane().setLayout(null); // 关闭窗口布局管理器 final JPanel panel = new JPanel(false); // 定义面板 panel.setLayout(null); // 关闭面板布局管理器 panel.setBounds(20, 20, 窗口宽 - 50, 窗口高 + 20); tableModel = new DefaultTableModel(表格数据, 列名); // 创建表格模型 table = new JTable(tableModel); // 创建指定表格模型的表格 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 scrollPane.getViewport().add(table, null); // 表格加滚动条 scrollPane.setBounds(30, 70, 窗口宽 - 100, 窗口高 - 150); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i = 0; i 列数; i++) { TableColumn tc = table.getColumn(列名 );// 返回表格的列对象 tc.setPreferredWidth(列数据宽度 * 12); } panel.add(scrollPane); // 滚动条加到面板中 JLabel label1 = new JLabel(列名 ); // 用标签显示指定的字段名 列名 label1.setBounds(左边距, 10, 列名 .length() * 15, 20); panel.add(label1); 左边距 = 左边距 + 列名 .length() * 15; JLabel label2 = new JLabel(关系符);// 用标签显示指定表达式 label2.setBounds(左边距, 10, 关系符.length() * 15, 20); panel.add(label2); 左边距 = 左边距 + 关系符.length() * 15; aTextField = new JTextField(, 10); // 定义文本框,预设值 aTextField.setBounds(左边距, 10, 150, 20); panel.add(aTextField); 左边距 = 左边距 + 150; JLabel label3 = new JLabel(列名 ); // 用标签显示指定的字段名 label3.setBounds(左边距, 10, 列名 .length() * 15, 20); panel.add(label3); 左边距 = 左边距 + 列名 .length() * 15; JLabel label4 = new JLabel(关系符1);// 用标签显示指定表达式 label4.setBounds(左边距, 10, 关系符1.length() * 15, 20); panel.add(label4); 左边距 = 左边距 + 关系符1.length() * 15; aTextField2 = new JTextField( , 10); aTextField2.setBounds(左边距, 10, 150, 20); panel.add(aTextField2); 按钮宽 = (窗口宽 - 380) / 按钮数; int 左边距 = 350; final JButton selectButton = new JButton(按钮集 ); // 查询 selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String 关系符0 = , 关系符01 = ; try { con = main1.getConn();// 连接数据库 sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for (int i = 0; i 关系表.length; i++) { if (关系表 .trim().equals(关系符.trim())) { 关系符0 = 关系表 ; } if (关系表 .trim().equals(关系符1.trim())) { 关系符01 = 关系表 ; } } String s1 = select * from + 表名 + where + 列名 ; String s2 = 列数据类型 ; String s3 = aTextField.getText().trim(); // 数据值 String s4 = 关系符0; if ((main1.图形数据类型.lastIndexOf(s2)) = 0) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if (main1.数字数据类型.lastIndexOf(, + s2 + ,) = 0) { // 数字数据类型 if (s4.indexOf(like) = 0) { JOptionPane.showMessageDialog(null, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else { s1 = s1 + s4 + s3.trim(); } } else if (main1.文本数据类型.lastIndexOf(s2) = 0) { // 判断如果是大数据类型 if (s4.indexOf(like) = 0) { s3 = '% + s3 + %'; s1 = s1 + s4 + s3; } else { JOptionPane.showMessageDialog(null, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { // 如果查询对象是字符类型、日期类型 if (s4.indexOf(like) = 0) s3 = % + s3 + %; else { if ((s2.indexOf(datetime) = 0) (s3.length() 10)) { JOptionPane.showMessageDialog(null, 日期时间类型进行查询时数据格式必须为yyyy-yy-dd, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length() 11)) s3 = s3 + 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length() 11)) s3 = s3 + 00:00:00.00; else if ((s2.indexOf(datetimeoffset) = 0) (s3.length() 11)) s3 = s3 + 00:00:00.000 +08:00; } s1 = s1 + s4 + ' + s3 + '; } s1 = s1 + and + 列名 + ; s2 = 列数据类型 ; s3 = aTextField2.getText().trim(); // 数据值 s4 = 关系符01; if ((main1.图形数据类型.lastIndexOf(s2)) = 0) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if (main1.数字数据类型.lastIndexOf(, + s2 + ,) = 0) { // 数字数据类型 if (s4.indexOf(like) = 0) { JOptionPane.showMessageDialog(null, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else { s1 = s1 + s4 + s3.trim(); } } else if (main1.文本数据类型.lastIndexOf(s2) = 0) { // 判断如果是大数据类型 if (s4.indexOf(like) = 0) { s3 = '% + s3 + %'; s1 = s1 + s4 + s3; } else { JOptionPane.showMessageDialog(null, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { // 如果查询对象是字符类型、日期类型 if (s4.indexOf(like) = 0) s3 = % + s3 + %; else { if ((s2.indexOf(datetime) = 0) (s3.length() 10)) { JOptionPane.showMessageDialog(null, 日期时间类型进行查询时数据格式必须为yyyy-yy-dd, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length() 11)) s3 = s3 + 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length() 11)) s3 = s3 + 00:00:00.00; else if ((s2.indexOf(datetimeoffset) = 0) (s3.length() 11)) s3 = s3 + 00:00:00.000 +08:00; } s1 = s1 + s4 + ' + s3 + '; } ResultSet rs = sta3.executeQuery(s1); int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 tableModel = new DefaultTableModel(表格数据, 列名); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.setViewportView(table); printViewButton.setEnabled(true); printButton.setEnabled(true); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,0,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(selectButton); } printViewButton = new JButton(按钮集 ); printViewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPreview1.printView1(表格数据, 打印格式文件名); } }); printViewButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,1,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(printViewButton); printViewButton.setEnabled(false); } printButton = new JButton(按钮集 ); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPrint1.print1(表格数据, 打印格式文件名); } }); printButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,2,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(printButton); printButton.setEnabled(false); } final JButton exitButton = new JButton(按钮集 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,3,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(exitButton); } frame.getContentPane().add(panel, null); // 安装面板 frame.setVisible(true); // 安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 12.源码12.部件程序,利用二个指定的字段和表达式进行多数据表二固定条件查询。 /** * 程序文件名:dataQuery6.java * 作者:程学先 * 完成时间:2013年12月3日 * 部件功能:利用二个指定的字段和表达式进行多数据二固定条件查询。 * 被调用语句:datadataQuery6.means(parameter); * 必须提供的参数:“数据表表名”、“查询字段号1”、“查询字段号2”、“关系符1” * “关系符2”,这些参数由主程序带入。 * 操作方法与注意事项:因为该部件要求对指定的字段和指定的表达式查询, * 在“表名集”中允许输入多个数据表表名,彼此间用逗号分隔。 * 在“查询字段号1”、“查询字段号2”处各只允许输入一个参数,且必须输入一个参数。 * “关系符1”、“关系符2”的参数各只能从{大于、小于、等于、大于等于、 * 小于等于、不等于、包含、不包含}中选择一个,如果输入错误 * 会导致程序显示错误或无法进行查询。 * 可以联系代码表进行查询。如果涉及代码表,在填表名时,应当先在列表框中选主表,再依次选代码表。 * 可涉及字典表,将根据字典表给定的对应关系变换标签,在填表名时不要输入字典表的名称。 * 但是,要求在当前数据库中有一个表的名字为某某某字典表,即表名最后3个字是“字典表”,本程序将根据该表变换。 * 要求该表中只有二个字段,第一个字段(命名为字段名)中内容为所查询的数据表中字段名, * 第二个字段(命名为标签名)内容为变换后的标签名。 * 在当前数据库中最好不要有第二个名字中带“字典名”的表,如果必须有,请恰当取名,使本程序需要的字典表 * 在表名表中排在前面。 * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery6 extends JFrame { static dataQuery6 frame = new dataQuery6(); static String 表名; static String 字典表名; static String 表名表; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField, aTextField2; static JButton b1, b2; static String s1 = ; static ResultSet rs; static int b = 0, c = 0; static int 列数; static int 表格列数; static String 列名; static String 指定的字段名 = , 字段名串 = , 字段名串1 = ; static String 关系表 = { { , 大于 }, { , 小于 }, { = , 等于 }, { = , 大于等于 }, { = , 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; static String 列数据类型; static String 列数据宽度; static int 字段号表; static String 关系符, 关系符0, 关系符1, 关系符01; static int 列序号 = 0, 列序号1 = 0; static String 连接条件; static String 字段名字串; static int 左边距 = 80; static Connection con; // 连接数据库 static ResultSetMetaData rsmd3; static Statement sta3; static int 窗口宽 = 1000, 窗口高 = 600;// 窗口高 static int 按钮数 = 0, 按钮宽 = 0; static String parameter) { frame = new dataQuery6(); 表名 = ; scrollPane = new JScrollPane(); s1 = ; b = 0; c = 0; 关系符 = ; 关系符1 = ; 关系符0 = ; 关系符01 = ; 左边距 = 80; 窗口宽 = 1000; 窗口高 = 700; 关系表 = ; 关系表 = 大于; 关系表 = ; 关系表 = 小于; 关系表 = = ; 关系表 = 等于; 关系表 = = ; 关系表 = 大于等于; 关系表 = = ; 关系表 = 小于等于; 关系表 = ; 关系表 = 不等于; 关系表 = like ; 关系表 = 包含; 关系表 = not like ; 关系表 = 不包含; String ; 按钮数 = 0; for (int i0 = 0; i0 按钮集01.length; i0++) 按钮集 = 按钮集01 ; if (parameter .length() 0) { 要求按钮号表 = parameter ;// 需要显示的按钮的顺序号 // 将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表 = 要求按钮号表.replaceAll(;, ;); 要求按钮号表 = 要求按钮号表.replaceAll(。, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); if (要求按钮号表.indexOf(;) 0) { // 如果有按钮更名要求 String s601 .indexOf(;) 0) { String s602 .split(;); 按钮集 ))] = s602 ; 要求按钮号表 = 要求按钮号表 + , + s602 ;// 只留号,去更名 按钮数++; } else { 要求按钮号表 = 要求按钮号表 + , + s601 ;// 只留号,原无更名 按钮数++; } } } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表 = 要求按钮号表 + , + s601 ; 按钮数++; } } } else { 要求按钮号表 = ; // 没输入要求按钮号,定全部按钮号 for (int i1 = 0; i1 按钮集.length; i1++) { if (i1 == 0) 要求按钮号表 = 要求按钮号表 + i1; else 要求按钮号表 = 要求按钮号表 + , + i1; 按钮数++; } } 要求按钮号表 = , + 要求按钮号表 + ,; 窗口宽 = main1.窗口宽; 窗口高 = main1.窗口高; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter );// 宽度参数 m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 关系符 = parameter ; 关系符1 = parameter ; 列序号 = Integer.valueOf(parameter ); 列序号1 = Integer.valueOf(parameter ); 表名 = parameter ; 连接条件 = parameter ; 列名 = new String ; if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); String ; String 指定的字段名1 = s6 ; String s2 = ; if (parameter .length() 0) { 字段号表 = parameter .split(,); 列名 = new String ; for (int i = 0; i 字段号表.length; i++) { 列名 = s6 )]; 列名 = 列名 ; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; } else { 列名 = new String ; for (int i = 0; i s6.length; i++) { 列名 = s6 ; 列名 = s6 ; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } s2 = * ; } String s11 = 表名; if (表名.indexOf(,) 0) { String ; } 表名表 = parameter ; String .lastIndexOf(s11 + 字典表) = 0) 字典表名 = t1 ; } if (字典表名.length() 0) { try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + 字典表名; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int 列数0 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); // 记录数 String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); // 字段名 s15 = rs.getString(2).trim(); // 标签名 for (int j = 0; j 列名 .length; j++) { if (列名 .trim().equalsIgnoreCase(s14.trim())) { 列名 = s15; break; } else if ((列名 .trim() + ,).indexOf(. + s14 + ,) 0) { 列名 = 列名 .replace(s14, s15); break; } } } rs.close(); // 关闭查询结果集 con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } try { con = main1.getConn();// 连接数据库 sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (连接条件.trim().length() 0) s1 = select + 字段名字串 + from + 表名 + where + 连接条件; else s1 = select + 字段名字串 + from + 表名; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 列序号 = -1; 列序号1 = -1; for (int i = 0; i 列数; i++) { 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; if ((, + 列名 + ,).lastIndexOf(, + 指定的字段名 + ,) = 0) 列序号 = i; if ((, + 列名 + ,).lastIndexOf(. + 指定的字段名 + ,) = 0) 列序号 = i; if ((, + 列名 + ,).lastIndexOf(, + 指定的字段名1 + ,) = 0) 列序号1 = i; if ((, + 列名 + ,).lastIndexOf(. + 指定的字段名1 + ,) = 0) 列序号1 = i; b++; } if (列序号 0) { JOptionPane.showMessageDialog(null, 查询要求字段未包含在所选字段号表中,没法查询!); return; } if (列序号1 0) { JOptionPane.showMessageDialog(null, 查询要求字段未包含在所选字段号表中,没法查询!); return; } int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } frame.setTitle(查询部件程序 作者:程学先); // 窗口标题 frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10); // 窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.getContentPane().setLayout(null); // 关闭窗口布局管理器 final JPanel panel = new JPanel(false); // 定义面板 panel.setLayout(null); // 关闭面板布局管理器 panel.setBounds(20, 20, 窗口宽 - 50, 窗口高 - 20); tableModel = new DefaultTableModel(表格数据, 列名 ); // 创建表格模型 table = new JTable(tableModel); // 创建指定表格模型的表格 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 60, 窗口宽 - 100, 窗口高 - 200); for (int i = 0; i 列数; i++) { TableColumn tc = table.getColumn(列名 );// 返回表格的列对象 tc.setPreferredWidth(列数据宽度 * 12); } panel.add(scrollPane); JLabel label1 = new JLabel(列名 ); label1.setBounds(左边距, 10, 列名 .length() * 15, 20); panel.add(label1); 左边距 = 左边距 + 列名 .length() * 15; JLabel label2 = new JLabel(关系符); label2.setBounds(左边距, 10, 关系符.length() * 15, 20); panel.add(label2); 左边距 = 左边距 + 关系符.length() * 15; aTextField = new JTextField(, 10); aTextField.setBounds(左边距, 10, 150, 20); panel.add(aTextField); 左边距 = 左边距 + 150; JLabel label3 = new JLabel(列名 ); label3.setBounds(左边距, 10, 列名 .length() * 15, 20); panel.add(label3); 左边距 = 左边距 + 列名 .length() * 15; JLabel label4 = new JLabel(关系符1); label4.setBounds(左边距, 10, 关系符1.length() * 15, 20); panel.add(label4); 左边距 = 左边距 + 关系符1.length() * 15; aTextField2 = new JTextField(, 10); aTextField2.setBounds(左边距, 10, 150, 20); panel.add(aTextField2); 按钮宽 = (窗口宽 - 630) / 按钮数; int 左边距 = 600; final JButton selectButton = new JButton(按钮集 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for (int i = 0; i 关系表.length; i++) { if (关系表 .trim().equalsIgnoreCase(关系符.trim())) { 关系符0 = 关系表 ; } if (关系表 .trim().equalsIgnoreCase(关系符1.trim())) { 关系符01 = 关系表 ; } } if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); s1 = select + 字段名字串 + from + 表名; if (连接条件.trim().length() 0) s1 = s1 + where + 连接条件 + and + 列名 ; else s1 = s1 + where + 列名 ; String s2 = 列数据类型 ; String s3 = aTextField.getText().trim(); // 数据值 String s4 = 关系符0; if ((main1.图形数据类型.lastIndexOf(s2)) = 0) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if (main1.数字数据类型.lastIndexOf(, + s2 + ,) = 0) { // 数字数据类型 if (s4.indexOf(like) = 0) { JOptionPane.showMessageDialog(null, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else { s1 = s1 + s4 + s3.trim(); } } else if (main1.文本数据类型.lastIndexOf(s2) = 0) { // 判断如果是大数据类型 if (s4.indexOf(like) = 0) { s3 = '% + s3 + %'; s1 = s1 + s4 + s3; } else { JOptionPane.showMessageDialog(null, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { // 如果查询对象是字符类型、日期类型 if (s4.indexOf(like) = 0) s3 = % + s3 + %; else { if ((s2.indexOf(datetime) = 0) (s3.length() 10)) { JOptionPane.showMessageDialog(null, 日期时间类型进行查询时数据格式必须为yyyy-yy-dd, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length() 11)) s3 = s3 + 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length() 11)) s3 = s3 + 00:00:00.00; else if ((s2.indexOf(datetimeoffset) = 0) (s3.length() 11)) s3 = s3 + 00:00:00.000 +08:00; } s1 = s1 + s4 + ' + s3 + '; } s1 = s1 + and + 列名 + ; s2 = 列数据类型 ; s3 = aTextField2.getText().trim(); // 数据值 s4 = 关系符01; if ((main1.图形数据类型.lastIndexOf(s2)) = 0) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if (main1.数字数据类型.lastIndexOf(, + s2 + ,) = 0) { // 数字数据类型 if (s4.indexOf(like) = 0) { JOptionPane.showMessageDialog(null, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else { s1 = s1 + s4 + s3.trim(); } } else if (main1.文本数据类型.lastIndexOf(s2) = 0) { // 判断如果是大数据类型 if (s4.indexOf(like) = 0) { s3 = '% + s3 + %'; s1 = s1 + s4 + s3; } else { JOptionPane.showMessageDialog(null, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { // 如果查询对象是字符类型、日期类型 if (s4.indexOf(like) = 0) s3 = % + s3 + %; else { if ((s2.indexOf(datetime) = 0) (s3.length() 10)) { JOptionPane.showMessageDialog(null, 日期时间类型进行查询时数据格式必须为yyyy-yy-dd, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length() 11)) s3 = s3 + 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length() 11)) s3 = s3 + 00:00:00.00; else if ((s2.indexOf(datetimeoffset) = 0) (s3.length() 11)) s3 = s3 + 00:00:00.000 +08:00; } s1 = s1 + s4 + ' + s3 + '; } System.out.println(s1); ResultSet rs = sta3.executeQuery(s1); int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); 表格数据 = new String ; c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); tableModel = new DefaultTableModel(表格数据, 列名 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(左边距, 10, 按钮宽, 20); if (要求按钮号表.indexOf(,0,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(selectButton); } final JButton exitButton = new JButton(按钮集 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(左边距, 10, 按钮宽, 20); if (要求按钮号表.indexOf(,1,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(exitButton); // 加入退出按钮 } frame.getContentPane().add(panel, null); // 安装面板 frame.setVisible(true); // 安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1 = str; int i = 1; while (s1.indexOf(,) != -1) { s1 = s1.substring(s1.indexOf(,) + 1, s1.length()); i++; } array = new String ; int j = 0; while (str.indexOf(,) != -1) { array = str.substring(0, str.indexOf(,)); str = str.substring(str.indexOf(,) + 1, str.length()); array = str; j++; } return array; } } 13.源码13.部件程序,多表通用二条件查询程序。 /** * 程序文件名:dataQuery7.java * 作者:程学先 * 完成时间:2013年12月3日 * 部件功能:多表通用二条件查询程序。 * 提供二组组合框供任意选择二个字段、任意二个关系符,随意组成二条件的组合进行单数据表或多数据表查询。 * 由主程序调用。被调用语句:datadataQuery7.means(parameter); * 必须提供的参数:“表名集”,可以为多个数据表,包括可以有代码表,表名间用逗号分隔。这些参数由主程序带入。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery7 extends JFrame { static dataQuery7 frame = new dataQuery7(); static String 表名; static String 字典表名; static String 表名表; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField, aTextField2; static JButton b1, b2; static Choice choice, choice1; static Choice choice0, choice01; static String s1 = ; static ResultSet rs; static int b = 0, c = 0; static int 列数; static int 表格列数; static String 列名; static String 指定的字段名 = , 字段名串 = , 字段名串1 = ; static String 关系表 = { { , 大于 }, { , 小于 }, { = , 等于 }, { = , 大于等于 }, { = , 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; static String 列数据类型; static String 列数据宽度; static int 字段号表; static Connection con; // 连接数据库 static ResultSetMetaData rsmd3; static Statement sta3; static int 窗口宽 = 1000, 窗口高 = 600;// 窗口高 static int 按钮数 = 0, 按钮宽 = 0; static String parameter) { frame = new dataQuery7(); 表名 = ; scrollPane = new JScrollPane(); s1 = ; b = 0; c = 0; 关系符 = ; 关系符1 = ; 关系符0 = ; 关系符01 = ; 左边距 = 80; 窗口宽 = 1000; 窗口高 = 700; 关系表 = ; 关系表 = 大于; 关系表 = ; 关系表 = 小于; 关系表 = = ; 关系表 = 等于; 关系表 = = ; 关系表 = 大于等于; 关系表 = = ; 关系表 = 小于等于; 关系表 = ; 关系表 = 不等于; 关系表 = like ; 关系表 = 包含; 关系表 = not like ; 关系表 = 不包含; String ; 按钮数 = 0; for (int i0 = 0; i0 按钮集01.length; i0++) 按钮集 = 按钮集01 ; if (parameter .length() 0) { 要求按钮号表 = parameter ;// 需要显示的按钮的顺序号 // 将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表 = 要求按钮号表.replaceAll(;, ;); 要求按钮号表 = 要求按钮号表.replaceAll(。, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); if (要求按钮号表.indexOf(;) 0) { // 如果有按钮更名要求 String s601 .indexOf(;) 0) { String s602 .split(;); 按钮集 ))] = s602 ; 要求按钮号表 = 要求按钮号表 + , + s602 ;// 只留号,去更名 按钮数++; } else { 要求按钮号表 = 要求按钮号表 + , + s601 ;// 只留号,原无更名 按钮数++; } } } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表 = 要求按钮号表 + , + s601 ; 按钮数++; } } } else { 要求按钮号表 = ; // 没输入要求按钮号,定全部按钮号 for (int i1 = 0; i1 按钮集.length; i1++) { if (i1 == 0) 要求按钮号表 = 要求按钮号表 + i1; else 要求按钮号表 = 要求按钮号表 + , + i1; 按钮数++; } } 要求按钮号表 = , + 要求按钮号表 + ,; 窗口宽 = main1.窗口宽; 窗口高 = main1.窗口高; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter );// 宽度参数 m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 表名 = parameter ; 连接条件 = parameter ; 表名表 = parameter ; 列名 = new String ; if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); String .length() 0) { 字段号表 = parameter .split(,); 列名 = new String ; for (int i = 0; i 字段号表.length; i++) { 列名 = s6 )]; 列名 = 列名 ; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; } else { 列名 = new String ; for (int i = 0; i s6.length; i++) { 列名 = s6 ; 列名 = 列名 ; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; s2 = * ; } String s11 = 表名; if (表名.indexOf(,) 0) { String ; } String .lastIndexOf(s11 + 字典表) = 0) 字典表名 = t1 ; } if (字典表名.length() 0) { try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + 字典表名; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int 列数0 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); // 记录数 String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); // 字段名 s15 = rs.getString(2).trim(); // 标签名 for (int j = 0; j 列名 .length; j++) { if (列名 .trim().equalsIgnoreCase(s14.trim())) { 列名 = s15; break; } else if ((列名 .trim() + ,).indexOf(. + s14 + ,) 0) { 列名 = 列名 .replace(s14, s15); break; } } } rs.close(); // 关闭查询结果集 con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } try { con = main1.getConn();// 连接数据库 sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (连接条件.trim().length() 0) s1 = select + 字段名字串 + from + 表名 + where + 连接条件; else s1 = select + 字段名字串 + from + 表名; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i = 0; i 列数; i++) { 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; b++; } int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } frame.setTitle(查询部件程序 作者:程学先); // 窗口标题 frame.setBounds(10, 10, 窗口宽 - 10, 窗口高); // 窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.getContentPane().setLayout(null); // 关闭窗口布局管理器 final JPanel panel = new JPanel(false); // 定义面板 panel.setLayout(null); // 关闭面板布局管理器 panel.setBounds(20, 20, 窗口宽 - 50, 窗口高 - 10); tableModel = new DefaultTableModel(表格数据, 列名 ); // 创建表格模型 table = new JTable(tableModel); // 创建指定表格模型的表格 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); // 滚动条加到表格中 scrollPane.setBounds(30, 70, 窗口宽 - 100, 窗口高 - 200); for (int i = 0; i 列数; i++) { TableColumn tc = table.getColumn(列名 );// 返回表格的列对象 tc.setPreferredWidth(列数据宽度 * 12); } panel.add(scrollPane); 左边距 = 30; JLabel label1 = new JLabel(请选字段名:); label1.setBounds(左边距 + 20, 10, 80, 20); panel.add(label1); 左边距 = 左边距 + 100; choice = new Choice(); for (int i = 0; i 列数; i++) { choice.add(列名 ); } choice.setBounds(左边距, 10, 100, 60); panel.add(choice); 左边距 = 左边距 + 100; choice1 = new Choice(); for (int i = 0; i 8; i++) { choice1.add(关系表 ); } choice1.setBounds(左边距, 10, 80, 60); panel.add(choice1); 左边距 = 左边距 + 100; aTextField = new JTextField(, 10); aTextField.setBounds(左边距, 10, 150, 20); panel.add(aTextField); 左边距 = 左边距 + 150; JLabel label01 = new JLabel(请选字段名:); label01.setBounds(左边距 + 20, 10, 80, 20); panel.add(label01); 左边距 = 左边距 + 100; choice0 = new Choice(); for (int i = 0; i 列数; i++) { choice0.add(列名 ); } choice0.setBounds(左边距, 10, 100, 60); panel.add(choice0); 左边距 = 左边距 + 100; choice01 = new Choice(); for (int i = 0; i 8; i++) { choice01.add(关系表 ); } choice01.setBounds(左边距, 10, 80, 60); panel.add(choice01); 左边距 = 左边距 + 80; aTextField2 = new JTextField(, 10); aTextField2.setBounds(左边距, 10, 150, 20); panel.add(aTextField2); 按钮宽 = (窗口宽 - 630) / 按钮数; int 左边距 = 600; final JButton selectButton = new JButton(按钮集 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { 列序号 = choice.getSelectedIndex(); 关系符 = choice1.getSelectedItem(); 列序号1 = choice0.getSelectedIndex(); 关系符1 = choice01.getSelectedItem(); try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for (int i = 0; i 关系表.length; i++) { if (关系表 .trim().equalsIgnoreCase(关系符.trim())) { 关系符0 = 关系表 ; } if (关系表 .trim().equalsIgnoreCase(关系符1.trim())) { 关系符01 = 关系表 ; } } if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); s1 = select + 字段名字串 + from + 表名; if (连接条件.trim().length() 0) s1 = s1 + where + 连接条件 + and + 列名 ; else s1 = s1 + where + 列名 ; String s3 = aTextField.getText().trim(); // 数据值 if (((main1.图形数据类型.lastIndexOf(, + 列数据类型 + ,)) = 0) || ((main1.图形数据类型.lastIndexOf(, + 列数据类型 + ,)) = 0)) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } if (关系符.lastIndexOf(包含) 0) { if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) s1 = s1 + 关系符0 + s3; else s1 = s1 + 关系符0 + ' + s3 + '; } else { if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (关系符.lastIndexOf(不包含) = 0) s1 = s1 + not like '% + s3 + %'; else s1 = s1 + like '% + s3 + %'; } s3 = aTextField2.getText().trim(); if (关系符1.lastIndexOf(包含) 0) if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) s1 = s1 + and + 列名 + 关系符01 + s3; else s1 = s1 + and + 列名 + 关系符01 + ' + s3 + '; else if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (关系符1.lastIndexOf(不包含) = 0) s1 = s1 + and + 列名 + not like '% + s3 + %'; else s1 = s1 + and + 列名 + like '% + s3 + %'; ResultSet rs = sta3.executeQuery(s1); int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 表格数据 = new String ; c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); tableModel = new DefaultTableModel(表格数据, 列名 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,0,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(selectButton); } final JButton exitButton = new JButton(按钮集 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,1,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(exitButton); } frame.getContentPane().add(panel, null); // 安装面板 frame.setVisible(true); // 安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1 = str; int i = 1; while (s1.indexOf(,) != -1) { s1 = s1.substring(s1.indexOf(,) + 1, s1.length()); i++; } array = new String ; int j = 0; while (str.indexOf(,) != -1) { array = str.substring(0, str.indexOf(,)); str = str.substring(str.indexOf(,) + 1, str.length()); array = str; j++; } return array; } } 14.源码14.部件程序,给定查询条件表达式的多数据表单一条件或二条件查询程序,可求总计数据,可按格式打印报表。 /** * 程序文件名:dataQuery8.java * 作者:程学先 * 完成时间:2013年11月27日 * 部件功能:在参数中直接给定查询条件表达式的主题部分和输出要求多表单条件或二条件查询程序, * 可按格式文件组织打印。运行时程序提供单个或二个文本框供输入查询数据,之后组织查询。 * 被调用语句:datadataQuery8.means(parameter);由主程序调用。 * 必须提供的参数:“表名集”、“条件表达式”。 * 条件表达式可以由一个也可以由二个条件式构成。如果二个条件,之间可以用“与”或“或者”联系。 * 每个条件式都由一个字段名加一个关系符再加一个问号组成。其格式为 ?。 * 例如:“姓名等于?”、“简历包含?”、“学号等于?与分数大于等于?”等。 * 关系符只能从{大于、 小于、等于、大于等于、小于等于、不等于、包含、不包含}中选择一个, * 如果输入错误会导致程序显示错误或无法进行查询。 * 数据表表名可以是一个表,可以是多个表,可以含代码表。 * 必须借本系统菜单生成程序应用鼠标从列表框中选择表名,不能手工填写表名。 * 选表时,每新加一个表,都注意要和前面某个表有一个相同字段名。 * 例如输入顺序是:数据表1、代码表1、代码表2、数据表2、代码表3等。 * 其中代码表1、代码表2是数据表1的代码表,代码表3是数据表2的代码表。数据表1和数据表2有同名字段。 * 问号可以用中文问号也可以用英文问号,每个条件中必须在最后有一个问号。 * 条件表达式不得超过2个,其中最多一个“与”或一个“或者”。 * 查询结果可以与其他部件程序一样根据所选择字段输出,如果填写了输出要求,也可以根据输出要求输出。 * 输出要求parameter 中填写由字段名或简单的加减乘除表达式构成的SQL语句能识别的子句。 * 注意如果是多表,当字段名为二表共有时,写输出要求必须在字段名前加 表名和点。 * 例如:学生.学号 as 学号,姓名,班级,专业,分数*20 as 成绩 * 则输出为有学号、姓名、班级、专业、成绩等列数据的表。 * 输出要求如果有聚集函数或其他函数,必须遵循相关规则。例如如果求聚集函数值就不能同时有任何字段值, * 因为没有分组,只能输出一行统计数据。 * 在输出要求中如果涉及常量,输入数据时要求能根据数据类型加英文单引号或不加引号。 * 如果是数字量或者是字段名,不加引号,如果是字符类数据,必须加单引号。 * 例如:sum(收入) as 总收入,avg(收入) as 平均收入 * 如果需要打印,要求先通过桌面系统调用“printFormat1.java”程序, * 根据输入的格式文件名生成打印格式文件 * 在调用本程序时必须给定参数:打印格式文件名。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery8 extends JFrame { static dataQuery8 frame = new dataQuery8(); static String 表名 = ; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField, aTextField2; static JButton b1, b2; static String s1 = ; static ResultSet rs; static int b = 0, c = 0; static int 列数; static int 表格列数; static String 表格列名; static String 列数据类型; static String 列数据宽度; static int 字段号表; static String 条件表达式, 连接条件; static String 表格数据;// 存放表格数据的数组 static String 按钮集 = null; static String 要求按钮号表; static JButton printViewButton, printButton; public static void means(String = ; 关系表 = 大于; 关系表 = ; 关系表 = 小于; 关系表 = = ; 关系表 = 等于; 关系表 = = ; 关系表 = 大于等于; 关系表 = = ; 关系表 = 小于等于; 关系表 = ; 关系表 = 不等于; 关系表 = like ; 关系表 = 包含; 关系表 = not like ; 关系表 = 不包含; String ; 按钮数 = 0; for (int i0 = 0; i0 按钮集01.length; i0++) 按钮集 = 按钮集01 ; if (parameter .length() 0) { 要求按钮号表 = parameter ;// 需要显示的按钮的顺序号 // 将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表 = 要求按钮号表.replaceAll(;, ;); 要求按钮号表 = 要求按钮号表.replaceAll(。, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); 要求按钮号表 = 要求按钮号表.replaceAll(:, ;); if (要求按钮号表.indexOf(;) 0) { // 如果有按钮更名要求 String s601 .indexOf(;) 0) { String s602 .split(;); 按钮集 ))] = s602 ; 要求按钮号表 = 要求按钮号表 + , + s602 ;// 只留号,去更名 按钮数++; } else { 要求按钮号表 = 要求按钮号表 + , + s601 ;// 只留号,原无更名 按钮数++; } } } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表 = 要求按钮号表 + , + s601 ; 按钮数++; } } } else { 要求按钮号表 = ; // 没输入要求按钮号,定全部按钮号 for (int i1 = 0; i1 按钮集.length; i1++) { if (i1 == 0) 要求按钮号表 = 要求按钮号表 + i1; else 要求按钮号表 = 要求按钮号表 + , + i1; 按钮数++; } } 要求按钮号表 = , + 要求按钮号表 + ,; 窗口宽 = main1.窗口宽; 窗口高 = main1.窗口高; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter );// 宽度参数 m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } 窗口宽 = m1; 窗口高 = m2; } } catch (Exception e2) { } 表名 = parameter ; // 数据表名 打印格式文件名 = parameter ; 条件表达式 = parameter ; 字段名字串 = parameter ; if (字段名字串.lastIndexOf(,) == 字段名字串.length() - 1) 字段名字串 = 字段名字串.substring(0, 字段名字串.length() - 1); String .length() 0) { 字段号表 = parameter .split(,); 列名 = new String ; for (int i = 0; i 字段号表.length; i++) { 列名 = s6 )]; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; } else { 列名 = new String ; for (int i = 0; i s6.length; i++) { 列名 = s6 ; if (s2.length() 0) s2 = s2 + , + 列名 ; else s2 = 列名 ; } 字段名字串 = s2; s2 = * ; } 连接条件 = parameter ; 输出要求 = parameter ; // System.out.println(输出要求=+输出要求); String ; 条件 = 条件表达式; } if (条件 .lastIndexOf(大于等于) 0) { 关系符0 = =; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(大于等于)); } else if (条件 .lastIndexOf(小于等于) 0) { 关系符0 = =; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(小于等于)); } else if (条件 .lastIndexOf(不等于) 0) { 关系符0 = !=; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(不等于)); } else if (条件 .lastIndexOf(大于) 0) { 关系符0 = ; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(大于)); } else if (条件 .lastIndexOf(小于) 0) { 关系符0 = ; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(小于)); } else if (条件 .lastIndexOf(等于) 0) { 关系符0 = =; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(等于)); } else if (条件 .lastIndexOf(不包含) 0) { 关系符0 = 不包含; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(不包含)); } else if (条件 .lastIndexOf(包含) 0) { 关系符0 = 包含; 字段名 = 条件 .substring(0, 条件 .lastIndexOf(包含)); } if (连接符.length() 0) { if (条件 .lastIndexOf(大于等于) 0) { 关系符01 = =; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(大于等于)); } else if (条件 .lastIndexOf(小于等于) 0) { 关系符01 = =; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(小于等于)); } else if (条件 .lastIndexOf(不等于) 0) { 关系符01 = !=; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(不等于)); } else if (条件 .lastIndexOf(大于) 0) { 关系符01 = ; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(大于)); } else if (条件 .lastIndexOf(小于) 0) { 关系符01 = ; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(小于)); } else if (条件 .lastIndexOf(等于) 0) { 关系符01 = =; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(等于)); } else if (条件 .lastIndexOf(不包含) 0) { 关系符01 = 不包含; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(不包含)); } else if (条件 .lastIndexOf(包含) 0) { 关系符01 = 包含; 字段名1 = 条件 .substring(0, 条件 .lastIndexOf(包含)); } } try { con = main1.getConn();// 连接数据库 sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (连接条件.trim().length() 0) s1 = select + 字段名字串 + from + 表名 + where + 连接条件; else s1 = select + 字段名字串 + from + 表名; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i = 0; i 列数; i++) { if ((字段名.length() 0) (列名 .trim().equals(字段名.trim()))) 列序号 = i; else if (列名 .substring(列名 .lastIndexOf(.) + 1, 列名 .length()) .trim().equals(字段名.trim())) 列序号 = i; if ((字段名.length() 0) (列名 .trim().equals(字段名1.trim()))) 列序号1 = i; else if (列名 .substring(列名 .lastIndexOf(.) + 1, 列名 .length()) .trim().equals(字段名1.trim())) 列序号1 = i; 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; b++; } int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); 表格数据 = new String ; rs.absolute(1); c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } if (连接条件.trim().length() 0) 连接条件 = 连接条件 + and ; frame.setTitle(查询部件程序 作者:程学先); // 窗口标题 frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 + 20); // 窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.getContentPane().setLayout(null); // 关闭窗口布局管理器 final JPanel panel = new JPanel(false); // 定义面板 panel.setLayout(null); // 关闭面板布局管理器 panel.setBounds(20, 20, 窗口宽 - 50, 窗口高 + 20); tableModel = new DefaultTableModel(表格数据, 列名); // 创建表格模型 table = new JTable(tableModel); // 创建指定表格模型的表格 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 scrollPane.getViewport().add(table, null); // 表格加滚动条 scrollPane.setBounds(30, 70, 窗口宽 - 100, 窗口高 - 150); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i = 0; i 列数; i++) { TableColumn tc = table.getColumn(列名 );// 返回表格的列对象 tc.setPreferredWidth(列数据宽度 * 12); } panel.add(scrollPane); JLabel label1 = new JLabel(条件 ); label1.setBounds(左边距, 10, 条件 .length() * 15, 20); panel.add(label1); 左边距 = 左边距 + 条件 .length() * 15; aTextField = new JTextField(, 10); // 定义文本框,预设值 aTextField.setBounds(左边距, 10, 150, 20); panel.add(aTextField); 左边距 = 左边距 + 150; if (条件.length 1) { JLabel label3 = new JLabel(条件 ); // 用标签显示指定的字段名 label3.setBounds(左边距, 10, 条件 .length() * 15, 20); panel.add(label3); 左边距 = 左边距 + 条件 .length() * 15; aTextField2 = new JTextField(, 10); // 定义文本框,预设值 aTextField2.setBounds(左边距, 10, 150, 20); panel.add(aTextField2); } 按钮宽 = (窗口宽 - 360) / 按钮数; int 左边距 = 350; final JButton selectButton = new JButton(按钮集 ); // 定义查询按钮 selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (输出要求.trim().length() 0) s1 = select + 输出要求 + from + 表名; else s1 = select + 字段名字串 + from + 表名; if (连接条件.trim().length() 0) s1 = s1 + where + 连接条件 + 列名 ; else s1 = s1 + where + 列名 ; if (((main1.图形数据类型.lastIndexOf(, + 列数据类型 + ,)) = 0) || ((main1.图形数据类型.lastIndexOf(, + 列数据类型 + ,)) = 0)) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } if (关系符0.lastIndexOf(包含) 0) { if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) s1 = s1 + 关系符0 + aTextField.getText().trim(); else s1 = s1 + 关系符0 + ' + aTextField.getText().trim() + '; } else { if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (关系符0.lastIndexOf(不包含) = 0) s1 = s1 + not like '% + aTextField.getText().trim() + %'; else s1 = s1 + like '% + aTextField.getText().trim() + %'; } if (条件.length 1) { if (关系符01.lastIndexOf(包含) 0) if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) s1 = s1 + and + 字段名1 + 关系符01 + aTextField2.getText().trim(); else s1 = s1 + and + 字段名1 + 关系符01 + ' + aTextField2.getText().trim() + '; else if (main1.数字数据类型.lastIndexOf(, + 列数据类型 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (关系符01.lastIndexOf(不包含) = 0) s1 = s1 + and + 字段名1 + not like '% + aTextField2.getText().trim() + %'; else s1 = s1 + and + 字段名1 + like '% + aTextField2.getText().trim() + %'; } ResultSet rs = sta3.executeQuery(s1); int rowNumber = 0; // 记录条数 rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); 列数 = rsmd3.getColumnCount(); // 获取列数 列数据宽度 = new int ; // 定义列数据宽度 列名 = new String ; for (int i = 0; i 列数; i++) { 列名 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 = 列名 .length(); if (列数据宽度 50) 列数据宽度 = 50; } 表格数据 = new String ; c = 0; // 行号 b = 0; // 列号 while (c rowNumber) { rs.absolute(c + 1); while (b 列数) { 表格数据 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); // 关闭查询结果集 sta3.close(); // 关闭连接 con.close(); tableModel = new DefaultTableModel(表格数据, 列名); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.setViewportView(table); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i = 0; i 列数; i++) { TableColumn tc = table.getColumn(列名 );// 返回表格的列对象 tc.setPreferredWidth(列数据宽度 * 12); } printViewButton.setEnabled(true); printButton.setEnabled(true); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,0,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(selectButton); } printViewButton = new JButton(按钮集 ); printViewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPreview1.printView1(表格数据, 打印格式文件名); } }); printViewButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,1,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(printViewButton); printViewButton.setEnabled(false); } printButton = new JButton(按钮集 ); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPrint1.print1(表格数据, 打印格式文件名); } }); printButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,2,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(printButton); printButton.setEnabled(false); } final JButton exitButton = new JButton(按钮集 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(左边距, 40, 按钮宽, 20); if (要求按钮号表.indexOf(,3,) = 0) { 左边距 = 左边距 + 按钮宽; panel.add(exitButton); } frame.getContentPane().add(panel, null); // 安装面板 frame.setVisible(true); // 安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 版本2 9.源码9,公共表格数据显示程序 /* * 作者:程传庆 * 功能:共用查询结果显示程序。 * 完成日期:2013年10月11日 */ import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public class tableTenance extends JFrame { static String variabl21971; static String variabl1753; static String variabl1631; static String variabl1701; static int variabl1853; static int variabl1901 = 0, variabl1691 = 0, variabl1739 = 0, variabl1899 = 0; static int variabl2113; static JButton sortButton1, sortButton, printButton, exitButton; static String variabl25170; static int variabl25173, int variabl1169) { variabl25170 = new String ; variabl24750 = new int ; for (int i = 0; i variabl25173.length; i++) { variabl25170 = variabl25173 ; variabl24750 = variabl2475 ; } variabl1901 = 0; variabl1691 = 0; variabl1739 = 0; variabl1899 = 0; if (variabl1783 600) variabl1783 = 600; final tableTenance frame = new tableTenance(); final JTable table; final DefaultTableModel model; frame.setTitle(表格式显示部件 作者:程传庆); frame.setBounds(10, 10, variabl1727, variabl1783); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true); final JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(10, 10, variabl1727 - 20, variabl1783 - 100); frame.setLayout(null); frame.getContentPane().add(scrollPane); int j = 5; int variabl2339 = (variabl1727 - 50) / j; int variabl1423 = 5; variabl2113 = variabl25170.length; variabl1853 = variabl2197.length; rowValues = new String ; variabl1701 = new String ; variabl21971 = new String ; int b = 0; for (int c = 0; c variabl1853; c++) for (b = 0; b variabl2113; b++) { variabl1701 = variabl2197 ; variabl21971 = variabl2197 ; } model = new DefaultTableModel(variabl21971, variabl25170); table = new JTable(model); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); for (int i = 0; i variabl25170.length; i++) { TableColumn tc = table.getColumn(variabl25170 ); JTableHeader header = table.getTableHeader(); if (variabl2475 variabl25170 .length()) variabl2475 = variabl25170 .length(); tc.setPreferredWidth(variabl2475 * 9); tc.setMaxWidth(variabl2475 * 9); } scrollPane.setViewportView(table); table.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { main1.variabl1327 = table.getSelectedRow(); } }); variabl1753 = new String ; variabl1631 = new String ; for (b = 0; b variabl2113; b++) { for (int c = 0; c variabl1853; c++) { if (variabl1701 == null) variabl1753 = ; else variabl1753 = variabl1701 ; } if (variabl1169 .compareTo(int) == 0) { for (int c = 0; c variabl1853; c++) { variabl1753 = 0000000000 + variabl1753 ; variabl1753 = variabl1753 .substring(variabl1753 .length() - 10); } } else if ((variabl1169 .compareTo(float) == 0) || (variabl1169 .compareTo(numeric) == 0)) { for (int c = 0; c variabl1853; c++) { variabl1753 = 0000000000 + variabl1753 ; int k1 = variabl1753 .lastIndexOf('.'); if (k1 == -1) { k1 = variabl1753 .length(); variabl1753 = variabl1753 + .000000; } else variabl1753 = variabl1753 + 000000; variabl1753 = variabl1753 .substring(k1 - 10, k1 + 1) + variabl1753 .substring(k1 + 1, k1 + 6); } } } for (int c = 0; c variabl1853; c++) variabl1753 = + c; for (int c = 0; c variabl1853; c++) for (b = 0; b variabl2113 + 1; b++) variabl1631 = variabl1753 ; variabl1901 = 0; variabl1691 = 0; sortButton = new JButton(排序); sortButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rowValues = new String ; if (sortButton.getText().trim().equals(排序)) { if (table.getSelectedColumn() 0) JOptionPane.showMessageDialog(null, 请先点击要排序的某一列,再按本按钮!); else { sortButton.setText(还原); sortButton1.setEnabled(true); variabl1899 = table.getSelectedColumn(); variabl1739 = table.getSelectedColumn(); } String s; int i, j, k = 0; for (int c = 0; c variabl1853; c++) { for (i = 0; i variabl1853 - c - 1; i++) { if (variabl1753 .compareTo(variabl1753 ) 0) for (j = 0; j = variabl2113; j++) { s = variabl1753 ; variabl1753 = variabl1753 ; variabl1753 = s; } } } model.setRowCount(0); for (int c = 0; c variabl1853; c++) { int n = Integer.parseInt(variabl1753 ); for (int b = 0; b variabl2113; b++) { variabl21971 = variabl1701 ; rowValues = variabl1701 ; } model.addRow(rowValues); } } else { sortButton.setText(排序); sortButton1.setEnabled(false); model.setRowCount(0); for (int c = 0; c variabl1853; c++) { for (int b = 0; b variabl2113; b++) { rowValues = variabl1701 ; variabl1753 = variabl1631 ; } model.addRow(rowValues); variabl1753 = variabl1631 ; } } } }); sortButton.setBounds(variabl1423, variabl1783 - 80, variabl2339 - 10, 20); frame.add(sortButton); variabl1423 = variabl1423 + variabl2339; sortButton1 = new JButton(接续排序); sortButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { variabl1739 = table.getSelectedColumn(); String s = , s1 = variabl1753 ; int n1 = 0, n2 = 0; int i, j, k = 0; for (int c = 0; c variabl1853; c++) { if ((c == variabl1853 - 1) || (s1.compareTo(variabl1753 ) != 0)) { if (c variabl1853 - 1) s1 = variabl1753 ; n2 = c; for (i = n1; i n2; i++) { for (j = n1; j n2 + n1 - i; j++) { if (variabl1753 .compareTo(variabl1753 ) 0) for (k = 0; k = variabl2113; k++) { s = variabl1753 ; variabl1753 = variabl1753 ; variabl1753 = s; } } } n1 = n2 + 1; } } variabl1899 = variabl1739; model.setRowCount(0); for (int c = 0; c variabl1853; c++) { int n = Integer.parseInt(variabl1753 ); for (int b = 0; b variabl2113; b++) { rowValues = variabl1701 ; } model.addRow(rowValues); } } }); sortButton1.setBounds(variabl1423, variabl1783 - 80, variabl2339 - 5, 20); frame.add(sortButton1); variabl1423 = variabl1423 + variabl2339; sortButton1.setEnabled(false); JButton printButton0 = new JButton(打印预览); printButton0.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { dataPreview0.printView1(variabl25170, variabl1701, variabl24750, 表格预览); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 打印预览失败!); } } }); printButton0.setBounds(variabl1423, variabl1783 - 80, variabl2339 - 5, 20); frame.add(printButton0); variabl1423 = variabl1423 + variabl2339; printButton = new JButton(打印); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { table.print(); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 打印失败!); } } }); printButton.setBounds(variabl1423, variabl1783 - 80, variabl2339 - 5, 20); frame.add(printButton); variabl1423 = variabl1423 + variabl2339; exitButton = new JButton(退 出); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.setVisible(false); return; } }); exitButton .setBounds(variabl1423, variabl1783 - 80, variabl2339 - 5, 20); frame.add(exitButton); variabl1423 = variabl1423 + variabl2339; } } 10.源码10,公共程序:单数据表的表格式报表打印预览 /* * 作者:程传庆 * 程序功能:单数据表的表格式报表打印预览,内容只限表格数据中数据。 * 要求在上级程序中生成表格数据,根据所传过来字段数据与所定义的宽度以固定格式实现打印。 */ import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JComponent; import javax.swing.JFrame; public class dataPreview0 extends JComponent { private static JFrame frameView; private static int variabl2517; private static int variabl1613 = 32; private static int x1 = 0, y1 = 0, w1 = 0, h1 = 0; private static Graphics2D g3; private static int variabl2557 = 800; protected void paintComponent(Graphics g) { g3 = (Graphics2D) g; g3 = (Graphics2D) g; g3.setFont(new Font(宋体, Font.PLAIN, variabl1613)); g3.drawString(variabl1685, (variabl2557 - variabl1685.length()) / 2, 30); int variabl2067 = 0; for (int i = 0; i variabl1819.length; i++) variabl2067 = variabl2067 + variabl1819 ; int variabl1981 = (variabl2557 - 80) / variabl2067; x1 = 30; y1 = variabl1613 + 50; h1 = (int) (variabl1981 * 1.2); g3.setFont(new Font(宋体, Font.PLAIN, variabl1981)); for (int i = 0; i variabl2517.length; i++) { w1 = variabl1819 * variabl1981; g3.drawLine(x1, y1, x1 + w1, y1); g3.drawLine(x1, y1, x1, y1 + h1); g3.drawString(variabl2517 , x1 + 4, y1 + variabl1981); g3.drawLine(x1, y1 + h1, x1 + w1, y1 + h1); g3.drawLine(x1 + w1, y1, x1 + w1, y1 + h1); x1 = x1 + w1; } y1 = y1 + h1; h1 = (int) (variabl1981 * 1.2); for (int i = 0; i variabl2197.length; i++) { x1 = 30; g3.drawLine(x1, y1, x1, y1 + h1); for (int j = 0; j variabl2517.length; j++) { w1 = variabl1819 * variabl1981; if (variabl2197 == null) variabl2197 = ; g3.drawString(variabl2197 , x1 + 4, y1 + variabl1981); g3.drawLine(x1, y1 + h1, x1 + w1, y1 + h1); g3.drawLine(x1 + w1, y1, x1 + w1, y1 + h1); x1 = x1 + w1; } y1 = y1 + h1; } } public static void printView1(String variabl18191, String variabl2535) { variabl1685 = variabl2535; variabl2197 = new String ; variabl2517 = new String ; variabl1819 = new int ; for (int i = 0; i variabl21971.length; i++) for (int j = 0; j variabl25171.length; j++) variabl2197 = variabl21971 ; for (int j = 0; j variabl25171.length; j++) { variabl2517 = variabl25171 ; variabl1819 = variabl18191 ; } frameView = new JFrame(报表预览程序 作者:程传庆); frameView.setBounds(10, 10, 1000, 1000); frameView.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frameView.add(new dataPreview0()); frameView.setVisible(true); } } 11.源码11.部件程序,利用二个指定的字段和表达式进行单数据表二固定条件查询。 /** * 程序文件名:dataQuery5.java * 作者:程学先 * 完成时间:2013年11月27日 * 部件功能:利用二个指定的字段和表达式进行单数据表二固定条件查询。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery5 extends JFrame { static dataQuery5 frame = new dataQuery5(); static String variabl2603=; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField,aTextField2; static JButton b1,b2; static String s1=; static ResultSet rs; static int b=0,c=0; static int variabl2651; static int variabl2113; static String variabl1913; static String variabl1501; static String variabl1489; static int variabl1735; static int variabl2337=80; static String variabl1079; static Connection con; static ResultSetMetaData rsmd3; static Statement sta3; static int variabl2483 = 1000, variabl2503 = 700; static JButton printViewButton,printButton; static String parameter) { frame = new dataQuery5(); variabl2603=; scrollPane = new JScrollPane(); s1=; b=0;c=0; variabl2259=;variabl22591=; variabl2337=80;variabl2483 = 1000; variabl2503 = 700; variabl2319 = ; variabl2319 =大于; variabl2319 = ; variabl2319 =小于; variabl2319 = = ; variabl2319 =等于; variabl2319 = = ; variabl2319 =大于等于; variabl2319 = = ; variabl2319 =小于等于; variabl2319 = ; variabl2319 =不等于; variabl2319 = like ; variabl2319 =包含; variabl2319 = not like ; variabl2319 =不包含; String ; variabl2851=0; for (int i0=0;i0variabl240501.length;i0++) variabl2405 = variabl240501 ; if (parameter .length()0){ variabl1187=parameter ; variabl1187=variabl1187.replaceAll(;,;); variabl1187=variabl1187.replaceAll(。,;); variabl1187=variabl1187.replaceAll(:,;); variabl1187=variabl1187.replaceAll(:,;); if (variabl1187.indexOf(;)0){ String s601 .indexOf(;)0){ String s602 .split(;); variabl2405 ))]=s602 ; variabl1187=variabl1187+,+s602 ; variabl2851++; } else { variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { String s601 ; else variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { variabl1187=; for (int i1=0;i1variabl2405.length;i1++){ if (i1==0) variabl1187=variabl1187+i1; else variabl1187=variabl1187+,+i1; variabl2851++; } } variabl1187=,+variabl1187+,; variabl2483=main1.variabl2483; variabl2503=main1.variabl2503; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ; m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } variabl2483=m1 ; variabl2503=m2 ; } }catch(Exception e2){} variabl2345=Integer.valueOf(parameter ); variabl23451=Integer.valueOf(parameter ); variabl2259=parameter ; variabl22591=parameter ; variabl2603=parameter ; variabl1079=parameter ; variabl1325=parameter ; if (variabl1325.lastIndexOf(,)==variabl1325.length()-1 ) variabl1325=variabl1325.substring(0,variabl1325.length()-1); String ; String variabl12691=s6 ; String s2=; if (parameter .length()0){ variabl1735=parameter .split(,); variabl2517=new String ; for (int i=0;ivariabl1735.length;i++){ variabl2517 =s6 )]; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; } else { variabl2517=new String ; for (int i=0;is6.length;i++){ variabl2517 =s6 ; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; s2= * ; } try { con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=sta3.executeQuery(select +s2+ from +variabl2603); rsmd3 = rs.getMetaData(); variabl2651=rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; variabl2345=-1; variabl23451=-1; for (int i=0;ivariabl2651;i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 =variabl2517 .length(); if (variabl1489 50) variabl1489 =50; if ((,+variabl2517 +,).lastIndexOf(,+variabl1269+,)=0) variabl2345=i; if ((,+variabl2517 +,).lastIndexOf(.+variabl1269+,)=0) variabl2345=i; if ((,+variabl2517 +,).lastIndexOf(,+variabl12691+,)=0) variabl23451=i; if ((,+variabl2517 +,).lastIndexOf(.+variabl12691+,)=0) variabl23451=i; b++; } if (variabl23450){ JOptionPane.showMessageDialog( null, 查询要求字段未包含在所选字段号表中,没法查询!); return; } if (variabl234510){ JOptionPane.showMessageDialog( null, 查询要求字段未包含在所选字段号表中,没法查询!); return; } int rowNumber=0; rs.last(); rowNumber=rs.getRow(); variabl2197=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); } catch(SQLException e) { JOptionPane.showMessageDialog( null, 连接数据库出错!); } frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 10,variabl2483-10,variabl2503+20); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20,variabl2483-50,variabl2503+20); tableModel = new DefaultTableModel(variabl2197,variabl2517); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 70,variabl2483-100,variabl2503-150); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i=0;ivariabl2651;i++) { TableColumn tc = table.getColumn(variabl2517 ); tc.setPreferredWidth(variabl1489 *12); } panel.add(scrollPane); JLabel label1=new JLabel(variabl2517 ); label1.setBounds(variabl2337, 10 , variabl2517 .length()*15, 20); panel.add(label1); variabl2337=variabl2337+variabl2517 .length()*15; JLabel label2=new JLabel(variabl2259); label2.setBounds(variabl2337, 10 ,variabl2259.length()*15, 20); panel.add(label2); variabl2337=variabl2337+variabl2259.length()*15; aTextField = new JTextField(, 10); aTextField.setBounds(variabl2337, 10 ,150, 20); panel.add(aTextField); variabl2337=variabl2337+150; JLabel label3=new JLabel(variabl2517 ); label3.setBounds(variabl2337, 10 , variabl2517 .length()*15, 20); panel.add(label3); variabl2337=variabl2337+variabl2517 .length()*15; JLabel label4=new JLabel(variabl22591); label4.setBounds(variabl2337, 10 ,variabl22591.length()*15, 20); panel.add(label4); variabl2337=variabl2337+variabl22591.length()*15; aTextField2 = new JTextField( , 10); aTextField2.setBounds(variabl2337, 10 ,150, 20); panel.add(aTextField2); variabl2339=(variabl2483-380)/variabl2851; int variabl2337=350; final JButton selectButton = new JButton(variabl2405 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String variabl22590=,variabl225901=; try{ con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for(int i=0;ivariabl2319.length;i++){ if(variabl2319 .trim().equals(variabl2259.trim())){ variabl22590=variabl2319 ; } if(variabl2319 .trim().equals(variabl22591.trim())){ variabl225901=variabl2319 ; } } String s1=select * from +variabl2603+ where +variabl2517 ; String s2=variabl1501 ; String s3=aTextField.getText().trim(); String s4=variabl22590; if ((main1.variabl1539.lastIndexOf(s2))=0){ JOptionPane.showMessageDialog(null,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if(main1.variabl1545.lastIndexOf(,+s2+,)=0){ if(s4.indexOf(like)=0){ JOptionPane.showMessageDialog(null,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else{ s1=s1+s4+s3.trim(); } } else if(main1.variabl1537.lastIndexOf(s2)=0){ if(s4.indexOf(like)=0){ s3= '%+s3+%'; s1=s1+s4+s3; } else{ JOptionPane.showMessageDialog(null,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { if(s4.indexOf(like)=0) s3=%+s3+%; else { if ((s2.indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(null,日期时间类型进行查询时数据格式必须为yyyy-yy-dd,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((s2.indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.000 +08:00; } s1=s1+s4+'+s3+'; } s1=s1+ and +variabl2517 + ; s2=variabl1501 ; s3=aTextField2.getText().trim(); s4=variabl225901; if ((main1.variabl1539.lastIndexOf(s2))=0){ JOptionPane.showMessageDialog(null,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if(main1.variabl1545.lastIndexOf(,+s2+,)=0){ if(s4.indexOf(like)=0){ JOptionPane.showMessageDialog(null,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else{ s1=s1+s4+s3.trim(); } } else if(main1.variabl1537.lastIndexOf(s2)=0){ if(s4.indexOf(like)=0){ s3= '%+s3+%'; s1=s1+s4+s3; } else{ JOptionPane.showMessageDialog(null,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { if(s4.indexOf(like)=0) s3=%+s3+%; else { if ((s2.indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(null,日期时间类型进行查询时数据格式必须为yyyy-yy-dd,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((s2.indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.000 +08:00; } s1=s1+s4+'+s3+'; } ResultSet rs=sta3.executeQuery(s1); int rowNumber=0; rs.last(); rowNumber=rs.getRow(); rsmd3 = rs.getMetaData(); variabl2651=rsmd3.getColumnCount(); variabl2197=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); tableModel = new DefaultTableModel(variabl2197,variabl2517); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.setViewportView(table); printViewButton.setEnabled(true); printButton.setEnabled(true); } catch(Exception e1) { JOptionPane.showMessageDialog( null, 查询数据出错!+s1); } } }); selectButton.setBounds(variabl2337, 40 ,variabl2339, 20); if (variabl1187.indexOf(,0,)=0) { variabl2337=variabl2337+variabl2339; panel.add(selectButton); } printViewButton = new JButton(variabl2405 ); printViewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPreview1.printView1(variabl2197,variabl1079); } }); printViewButton.setBounds(variabl2337, 40 ,variabl2339, 20); if (variabl1187.indexOf(,1,)=0) { variabl2337=variabl2337+variabl2339; panel.add(printViewButton); printViewButton.setEnabled(false); } printButton = new JButton(variabl2405 ); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPrint1.print1(variabl2197,variabl1079); } }); printButton.setBounds(variabl2337, 40 ,variabl2339, 20); if (variabl1187.indexOf(,2,)=0) { variabl2337=variabl2337+variabl2339; panel.add(printButton); printButton.setEnabled(false); } final JButton exitButton = new JButton(variabl2405 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(variabl2337, 40 ,variabl2339, 20); if (variabl1187.indexOf(,3,)=0) { variabl2337=variabl2337+variabl2339; panel.add(exitButton); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 12.源码12.部件程序,利用二个指定的字段和表达式进行多数据表二固定条件查询。 /** * 程序文件名:dataQuery6.java * 作者:程学先 * 完成时间:2013年12月3日 * 部件功能:利用二个指定的字段和表达式进行多数据二固定条件查询。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery6 extends JFrame { static dataQuery6 frame = new dataQuery6(); static String variabl2603; static String variabl1873; static String variabl2429; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField, aTextField2; static JButton b1, b2; static String s1 = ; static ResultSet rs; static int b = 0, c = 0; static int variabl2651; static int variabl2113; static String variabl2517; static String variabl1269 = , variabl1787 = , variabl17871 = ; static String variabl2319 = { { , 大于 }, { , 小于 }, { = , 等于 }, { = , 大于等于 }, { = , 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; static String variabl1501; static String variabl1489; static int variabl1735; static String variabl2259, variabl22590, variabl22591, variabl225901; static int variabl2345 = 0, variabl23451 = 0; static String variabl2049; static String variabl1325; static int variabl2337 = 80; static Connection con; static ResultSetMetaData rsmd3; static Statement sta3; static int variabl2483 = 1000, variabl2503 = 600; static int variabl2851 = 0, variabl2339 = 0; static String parameter) { frame = new dataQuery6(); variabl2603 = ; scrollPane = new JScrollPane(); s1 = ; b = 0; c = 0; variabl2259 = ; variabl22591 = ; variabl22590 = ; variabl225901 = ; variabl2337 = 80; variabl2483 = 1000; variabl2503 = 700; variabl2319 = ; variabl2319 = 大于; variabl2319 = ; variabl2319 = 小于; variabl2319 = = ; variabl2319 = 等于; variabl2319 = = ; variabl2319 = 大于等于; variabl2319 = = ; variabl2319 = 小于等于; variabl2319 = ; variabl2319 = 不等于; variabl2319 = like ; variabl2319 = 包含; variabl2319 = not like ; variabl2319 = 不包含; String ; variabl2851 = 0; for (int i0 = 0; i0 variabl240501.length; i0++) variabl2405 = variabl240501 ; if (parameter .length() 0) { variabl1187 = parameter ; variabl1187 = variabl1187.replaceAll(;, ;); variabl1187 = variabl1187.replaceAll(。, ;); variabl1187 = variabl1187.replaceAll(:, ;); variabl1187 = variabl1187.replaceAll(:, ;); if (variabl1187.indexOf(;) 0) { String s601 .indexOf(;) 0) { String s602 .split(;); variabl2405 ))] = s602 ; variabl1187 = variabl1187 + , + s602 ; variabl2851++; } else { variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { String s601 ; else variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { variabl1187 = ; for (int i1 = 0; i1 variabl2405.length; i1++) { if (i1 == 0) variabl1187 = variabl1187 + i1; else variabl1187 = variabl1187 + , + i1; variabl2851++; } } variabl1187 = , + variabl1187 + ,; variabl2483 = main1.variabl2483; variabl2503 = main1.variabl2503; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter ); m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2259 = parameter ; variabl22591 = parameter ; variabl2345 = Integer.valueOf(parameter ); variabl23451 = Integer.valueOf(parameter ); variabl2603 = parameter ; variabl2049 = parameter ; variabl2517 = new String ; if (variabl1325.lastIndexOf(,) == variabl1325.length() - 1) variabl1325 = variabl1325.substring(0, variabl1325.length() - 1); String ; String variabl12691 = s6 ; String s2 = ; if (parameter .length() 0) { variabl1735 = parameter .split(,); variabl2517 = new String ; for (int i = 0; i variabl1735.length; i++) { variabl2517 = s6 )]; variabl2517 = variabl2517 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; } else { variabl2517 = new String ; for (int i = 0; i s6.length; i++) { variabl2517 = s6 ; variabl2517 = s6 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } s2 = * ; } String s11 = variabl2603; if (variabl2603.indexOf(,) 0) { String ; } variabl2429 = parameter ; String .lastIndexOf(s11 + 字典表) = 0) variabl1873 = t1 ; } if (variabl1873.length() 0) { try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + variabl1873; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int variabl26510 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); s15 = rs.getString(2).trim(); for (int j = 0; j variabl2517 .length; j++) { if (variabl2517 .trim().equalsIgnoreCase( s14.trim())) { variabl2517 = s15; break; } else if ((variabl2517 .trim() + ,).indexOf(. + s14 + ,) 0) { variabl2517 = variabl2517 .replace(s14, s15); break; } } } rs.close(); con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2049.trim().length() 0) s1 = select + variabl1325 + from + variabl2603 + where + variabl2049; else s1 = select + variabl1325 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; variabl2345 = -1; variabl23451 = -1; for (int i = 0; i variabl2651; i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; if ((, + variabl2517 + ,).lastIndexOf(, + variabl1269 + ,) = 0) variabl2345 = i; if ((, + variabl2517 + ,).lastIndexOf(. + variabl1269 + ,) = 0) variabl2345 = i; if ((, + variabl2517 + ,).lastIndexOf(, + variabl12691 + ,) = 0) variabl23451 = i; if ((, + variabl2517 + ,).lastIndexOf(. + variabl12691 + ,) = 0) variabl23451 = i; b++; } if (variabl2345 0) { JOptionPane.showMessageDialog(null, 查询要求字段未包含在所选字段号表中,没法查询!); return; } if (variabl23451 0) { JOptionPane.showMessageDialog(null, 查询要求字段未包含在所选字段号表中,没法查询!); return; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); con.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20, variabl2483 - 50, variabl2503 - 20); tableModel = new DefaultTableModel(variabl2197, variabl2517 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 60, variabl2483 - 100, variabl2503 - 200); for (int i = 0; i variabl2651; i++) { TableColumn tc = table.getColumn(variabl2517 ); tc.setPreferredWidth(variabl1489 * 12); } panel.add(scrollPane); JLabel label1 = new JLabel(variabl2517 ); label1.setBounds(variabl2337, 10, variabl2517 .length() * 15, 20); panel.add(label1); variabl2337 = variabl2337 + variabl2517 .length() * 15; JLabel label2 = new JLabel(variabl2259); label2.setBounds(variabl2337, 10, variabl2259.length() * 15, 20); panel.add(label2); variabl2337 = variabl2337 + variabl2259.length() * 15; aTextField = new JTextField(, 10); aTextField.setBounds(variabl2337, 10, 150, 20); panel.add(aTextField); variabl2337 = variabl2337 + 150; JLabel label3 = new JLabel(variabl2517 ); label3.setBounds(variabl2337, 10, variabl2517 .length() * 15, 20); panel.add(label3); variabl2337 = variabl2337 + variabl2517 .length() * 15; JLabel label4 = new JLabel(variabl22591); label4.setBounds(variabl2337, 10, variabl22591.length() * 15, 20); panel.add(label4); variabl2337 = variabl2337 + variabl22591.length() * 15; aTextField2 = new JTextField(, 10); aTextField2.setBounds(variabl2337, 10, 150, 20); panel.add(aTextField2); variabl2339 = (variabl2483 - 630) / variabl2851; int variabl2337 = 600; final JButton selectButton = new JButton(variabl2405 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for (int i = 0; i variabl2319.length; i++) { if (variabl2319 .trim().equalsIgnoreCase( variabl2259.trim())) { variabl22590 = variabl2319 ; } if (variabl2319 .trim().equalsIgnoreCase( variabl22591.trim())) { variabl225901 = variabl2319 ; } } if (variabl1325.lastIndexOf(,) == variabl1325.length() - 1) variabl1325 = variabl1325.substring(0, variabl1325.length() - 1); s1 = select + variabl1325 + from + variabl2603; if (variabl2049.trim().length() 0) s1 = s1 + where + variabl2049 + and + variabl2517 ; else s1 = s1 + where + variabl2517 ; String s2 = variabl1501 ; String s3 = aTextField.getText().trim(); String s4 = variabl22590; if ((main1.variabl1539.lastIndexOf(s2)) = 0) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if (main1.variabl1545.lastIndexOf(, + s2 + ,) = 0) { if (s4.indexOf(like) = 0) { JOptionPane.showMessageDialog(null, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else { s1 = s1 + s4 + s3.trim(); } } else if (main1.variabl1537.lastIndexOf(s2) = 0) { if (s4.indexOf(like) = 0) { s3 = '% + s3 + %'; s1 = s1 + s4 + s3; } else { JOptionPane.showMessageDialog(null, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { if (s4.indexOf(like) = 0) s3 = % + s3 + %; else { if ((s2.indexOf(datetime) = 0) (s3.length() 10)) { JOptionPane.showMessageDialog(null, 日期时间类型进行查询时数据格式必须为yyyy-yy-dd, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length() 11)) s3 = s3 + 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length() 11)) s3 = s3 + 00:00:00.00; else if ((s2.indexOf(datetimeoffset) = 0) (s3.length() 11)) s3 = s3 + 00:00:00.000 +08:00; } s1 = s1 + s4 + ' + s3 + '; } s1 = s1 + and + variabl2517 + ; s2 = variabl1501 ; s3 = aTextField2.getText().trim(); s4 = variabl225901; if ((main1.variabl1539.lastIndexOf(s2)) = 0) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if (main1.variabl1545.lastIndexOf(, + s2 + ,) = 0) { if (s4.indexOf(like) = 0) { JOptionPane.showMessageDialog(null, 数字数据类型不能进行模式匹配!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else { s1 = s1 + s4 + s3.trim(); } } else if (main1.variabl1537.lastIndexOf(s2) = 0) { if (s4.indexOf(like) = 0) { s3 = '% + s3 + %'; s1 = s1 + s4 + s3; } else { JOptionPane.showMessageDialog(null, 文本类大数据类型只能用包含或不包含进行查询, 提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { if (s4.indexOf(like) = 0) s3 = % + s3 + %; else { if ((s2.indexOf(datetime) = 0) (s3.length() 10)) { JOptionPane.showMessageDialog(null, 日期时间类型进行查询时数据格式必须为yyyy-yy-dd, 提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length() 11)) s3 = s3 + 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length() 11)) s3 = s3 + 00:00:00.00; else if ((s2.indexOf(datetimeoffset) = 0) (s3.length() 11)) s3 = s3 + 00:00:00.000 +08:00; } s1 = s1 + s4 + ' + s3 + '; } System.out.println(s1); ResultSet rs = sta3.executeQuery(s1); int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl2197 = new String ; c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); con.close(); tableModel = new DefaultTableModel(variabl2197, variabl2517 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(variabl2337, 10, variabl2339, 20); if (variabl1187.indexOf(,0,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(selectButton); } final JButton exitButton = new JButton(variabl2405 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(variabl2337, 10, variabl2339, 20); if (variabl1187.indexOf(,1,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(exitButton); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1 = str; int i = 1; while (s1.indexOf(,) != -1) { s1 = s1.substring(s1.indexOf(,) + 1, s1.length()); i++; } array = new String ; int j = 0; while (str.indexOf(,) != -1) { array = str.substring(0, str.indexOf(,)); str = str.substring(str.indexOf(,) + 1, str.length()); array = str; j++; } return array; } } 13.源码13.部件程序,多表通用二条件查询程序。 /** * 程序文件名:dataQuery7.java * 作者:程学先 * 完成时间:2013年12月3日 * 部件功能:多表通用二条件查询程序。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery7 extends JFrame { static dataQuery7 frame = new dataQuery7(); static String variabl2603; static String variabl1873; static String variabl2429; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField, aTextField2; static JButton b1, b2; static Choice choice, choice1; static Choice choice0, choice01; static String s1 = ; static ResultSet rs; static int b = 0, c = 0; static int variabl2651; static int variabl2113; static String variabl2517; static String variabl1269 = , variabl1787 = , variabl17871 = ; static String variabl2319 = { { , 大于 }, { , 小于 }, { = , 等于 }, { = , 大于等于 }, { = , 小于等于 }, { , 不等于 }, { like , 包含 }, { not like , 不包含 } }; static String variabl1501; static String variabl1489; static int variabl1735; static Connection con; static ResultSetMetaData rsmd3; static Statement sta3; static int variabl2483 = 1000, variabl2503 = 600; static int variabl2851 = 0, variabl2339 = 0; static String parameter) { frame = new dataQuery7(); variabl2603 = ; scrollPane = new JScrollPane(); s1 = ; b = 0; c = 0; variabl2259 = ; variabl22591 = ; variabl22590 = ; variabl225901 = ; variabl2337 = 80; variabl2483 = 1000; variabl2503 = 700; variabl2319 = ; variabl2319 = 大于; variabl2319 = ; variabl2319 = 小于; variabl2319 = = ; variabl2319 = 等于; variabl2319 = = ; variabl2319 = 大于等于; variabl2319 = = ; variabl2319 = 小于等于; variabl2319 = ; variabl2319 = 不等于; variabl2319 = like ; variabl2319 = 包含; variabl2319 = not like ; variabl2319 = 不包含; String ; variabl2851 = 0; for (int i0 = 0; i0 variabl240501.length; i0++) variabl2405 = variabl240501 ; if (parameter .length() 0) { variabl1187 = parameter ; variabl1187 = variabl1187.replaceAll(;, ;); variabl1187 = variabl1187.replaceAll(。, ;); variabl1187 = variabl1187.replaceAll(:, ;); variabl1187 = variabl1187.replaceAll(:, ;); if (variabl1187.indexOf(;) 0) { String s601 .indexOf(;) 0) { String s602 .split(;); variabl2405 ))] = s602 ; variabl1187 = variabl1187 + , + s602 ; variabl2851++; } else { variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { String s601 ; else variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { variabl1187 = ; for (int i1 = 0; i1 variabl2405.length; i1++) { if (i1 == 0) variabl1187 = variabl1187 + i1; else variabl1187 = variabl1187 + , + i1; variabl2851++; } } variabl1187 = , + variabl1187 + ,; variabl2483 = main1.variabl2483; variabl2503 = main1.variabl2503; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter ); m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2603 = parameter ; variabl2049 = parameter ; variabl2429 = parameter ; variabl2517 = new String ; if (variabl1325.lastIndexOf(,) == variabl1325.length() - 1) variabl1325 = variabl1325.substring(0, variabl1325.length() - 1); String .length() 0) { variabl1735 = parameter .split(,); variabl2517 = new String ; for (int i = 0; i variabl1735.length; i++) { variabl2517 = s6 )]; variabl2517 = variabl2517 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; } else { variabl2517 = new String ; for (int i = 0; i s6.length; i++) { variabl2517 = s6 ; variabl2517 = variabl2517 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; s2 = * ; } String s11 = variabl2603; if (variabl2603.indexOf(,) 0) { String ; } String .lastIndexOf(s11 + 字典表) = 0) variabl1873 = t1 ; } if (variabl1873.length() 0) { try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + variabl1873; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int variabl26510 = rsmd.getColumnCount(); int numberOfColumns = rsmd.getColumnCount(); String s14 = ; String s15 = ; int b = 1; while (rs.absolute(b)) { b++; s14 = rs.getString(1).trim(); s15 = rs.getString(2).trim(); for (int j = 0; j variabl2517 .length; j++) { if (variabl2517 .trim().equalsIgnoreCase( s14.trim())) { variabl2517 = s15; break; } else if ((variabl2517 .trim() + ,).indexOf(. + s14 + ,) 0) { variabl2517 = variabl2517 .replace(s14, s15); break; } } } rs.close(); con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } } try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2049.trim().length() 0) s1 = select + variabl1325 + from + variabl2603 + where + variabl2049; else s1 = select + variabl1325 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; b++; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); con.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 10, variabl2483 - 10, variabl2503); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20, variabl2483 - 50, variabl2503 - 10); tableModel = new DefaultTableModel(variabl2197, variabl2517 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 70, variabl2483 - 100, variabl2503 - 200); for (int i = 0; i variabl2651; i++) { TableColumn tc = table.getColumn(variabl2517 ); tc.setPreferredWidth(variabl1489 * 12); } panel.add(scrollPane); variabl2337 = 30; JLabel label1 = new JLabel(请选字段名:); label1.setBounds(variabl2337 + 20, 10, 80, 20); panel.add(label1); variabl2337 = variabl2337 + 100; choice = new Choice(); for (int i = 0; i variabl2651; i++) { choice.add(variabl2517 ); } choice.setBounds(variabl2337, 10, 100, 60); panel.add(choice); variabl2337 = variabl2337 + 100; choice1 = new Choice(); for (int i = 0; i 8; i++) { choice1.add(variabl2319 ); } choice1.setBounds(variabl2337, 10, 80, 60); panel.add(choice1); variabl2337 = variabl2337 + 100; aTextField = new JTextField(, 10); aTextField.setBounds(variabl2337, 10, 150, 20); panel.add(aTextField); variabl2337 = variabl2337 + 150; JLabel label01 = new JLabel(请选字段名:); label01.setBounds(variabl2337 + 20, 10, 80, 20); panel.add(label01); variabl2337 = variabl2337 + 100; choice0 = new Choice(); for (int i = 0; i variabl2651; i++) { choice0.add(variabl2517 ); } choice0.setBounds(variabl2337, 10, 100, 60); panel.add(choice0); variabl2337 = variabl2337 + 100; choice01 = new Choice(); for (int i = 0; i 8; i++) { choice01.add(variabl2319 ); } choice01.setBounds(variabl2337, 10, 80, 60); panel.add(choice01); variabl2337 = variabl2337 + 80; aTextField2 = new JTextField(, 10); aTextField2.setBounds(variabl2337, 10, 150, 20); panel.add(aTextField2); variabl2339 = (variabl2483 - 630) / variabl2851; int variabl2337 = 600; final JButton selectButton = new JButton(variabl2405 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { variabl2345 = choice.getSelectedIndex(); variabl2259 = choice1.getSelectedItem(); variabl23451 = choice0.getSelectedIndex(); variabl22591 = choice01.getSelectedItem(); try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for (int i = 0; i variabl2319.length; i++) { if (variabl2319 .trim().equalsIgnoreCase( variabl2259.trim())) { variabl22590 = variabl2319 ; } if (variabl2319 .trim().equalsIgnoreCase( variabl22591.trim())) { variabl225901 = variabl2319 ; } } if (variabl1325.lastIndexOf(,) == variabl1325.length() - 1) variabl1325 = variabl1325.substring(0, variabl1325.length() - 1); s1 = select + variabl1325 + from + variabl2603; if (variabl2049.trim().length() 0) s1 = s1 + where + variabl2049 + and + variabl2517 ; else s1 = s1 + where + variabl2517 ; String s3 = aTextField.getText().trim(); if (((main1.variabl1539.lastIndexOf(, + variabl1501 + ,)) = 0) || ((main1.variabl1539.lastIndexOf(, + variabl1501 + ,)) = 0)) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } if (variabl2259.lastIndexOf(包含) 0) { if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) s1 = s1 + variabl22590 + s3; else s1 = s1 + variabl22590 + ' + s3 + '; } else { if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (variabl2259.lastIndexOf(不包含) = 0) s1 = s1 + not like '% + s3 + %'; else s1 = s1 + like '% + s3 + %'; } s3 = aTextField2.getText().trim(); if (variabl22591.lastIndexOf(包含) 0) if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) s1 = s1 + and + variabl2517 + variabl225901 + s3; else s1 = s1 + and + variabl2517 + variabl225901 + ' + s3 + '; else if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (variabl22591.lastIndexOf(不包含) = 0) s1 = s1 + and + variabl2517 + not like '% + s3 + %'; else s1 = s1 + and + variabl2517 + like '% + s3 + %'; ResultSet rs = sta3.executeQuery(s1); int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl2197 = new String ; c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); con.close(); tableModel = new DefaultTableModel(variabl2197, variabl2517 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(variabl2337, 40, variabl2339, 20); if (variabl1187.indexOf(,0,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(selectButton); } final JButton exitButton = new JButton(variabl2405 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(variabl2337, 40, variabl2339, 20); if (variabl1187.indexOf(,1,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(exitButton); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1 = str; int i = 1; while (s1.indexOf(,) != -1) { s1 = s1.substring(s1.indexOf(,) + 1, s1.length()); i++; } array = new String ; int j = 0; while (str.indexOf(,) != -1) { array = str.substring(0, str.indexOf(,)); str = str.substring(str.indexOf(,) + 1, str.length()); array = str; j++; } return array; } } 14.源码14.部件程序,给定查询条件表达式的多数据表单一条件或二条件查询程序。可求总计数据,可按格式打印报表。 /** * 程序文件名:dataQuery8.java * 作者:程学先 * 完成时间:2013年11月27日 * 部件功能:在参数中直接给定查询条件表达式的主题部分和输出要求多表单条件或二条件查询程序, */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery8 extends JFrame { static dataQuery8 frame = new dataQuery8(); static String variabl2603 = ; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField, aTextField2; static JButton b1, b2; static String s1 = ; static ResultSet rs; static int b = 0, c = 0; static int variabl2651; static int variabl2113; static String variabl1913; static String variabl1501; static String variabl1489; static int variabl1735; static String variabl1413, variabl2049; static String variabl2197; static String variabl2405 = null; static String variabl1187; static JButton printViewButton, printButton; public static void means(String = ; variabl2319 = 大于; variabl2319 = ; variabl2319 = 小于; variabl2319 = = ; variabl2319 = 等于; variabl2319 = = ; variabl2319 = 大于等于; variabl2319 = = ; variabl2319 = 小于等于; variabl2319 = ; variabl2319 = 不等于; variabl2319 = like ; variabl2319 = 包含; variabl2319 = not like ; variabl2319 = 不包含; String ; variabl2851 = 0; for (int i0 = 0; i0 variabl240501.length; i0++) variabl2405 = variabl240501 ; if (parameter .length() 0) { variabl1187 = parameter ; variabl1187 = variabl1187.replaceAll(;, ;); variabl1187 = variabl1187.replaceAll(。, ;); variabl1187 = variabl1187.replaceAll(:, ;); variabl1187 = variabl1187.replaceAll(:, ;); if (variabl1187.indexOf(;) 0) { String s601 .indexOf(;) 0) { String s602 .split(;); variabl2405 ))] = s602 ; variabl1187 = variabl1187 + , + s602 ; variabl2851++; } else { variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { String s601 ; else variabl1187 = variabl1187 + , + s601 ; variabl2851++; } } } else { variabl1187 = ; for (int i1 = 0; i1 variabl2405.length; i1++) { if (i1 == 0) variabl1187 = variabl1187 + i1; else variabl1187 = variabl1187 + , + i1; variabl2851++; } } variabl1187 = , + variabl1187 + ,; variabl2483 = main1.variabl2483; variabl2503 = main1.variabl2503; int m1, m2; try { if (parameter .length() == 0) { m1 = 0; m2 = 0; } else { m1 = Integer.parseInt(parameter ); m2 = Integer.parseInt(parameter ); } if (m1 0) { if (m2 80) { m1 = m1 * 10; m2 = m2 * 10; } variabl2483 = m1; variabl2503 = m2; } } catch (Exception e2) { } variabl2603 = parameter ; variabl1079 = parameter ; variabl1413 = parameter ; variabl1325 = parameter ; if (variabl1325.lastIndexOf(,) == variabl1325.length() - 1) variabl1325 = variabl1325.substring(0, variabl1325.length() - 1); String .length() 0) { variabl1735 = parameter .split(,); variabl2517 = new String ; for (int i = 0; i variabl1735.length; i++) { variabl2517 = s6 )]; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; } else { variabl2517 = new String ; for (int i = 0; i s6.length; i++) { variabl2517 = s6 ; if (s2.length() 0) s2 = s2 + , + variabl2517 ; else s2 = variabl2517 ; } variabl1325 = s2; s2 = * ; } variabl2049 = parameter ; variabl2101 = parameter ; String ; variabl2669 = variabl1413; } if (variabl2669 .lastIndexOf(大于等于) 0) { variabl22590 = =; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(大于等于)); } else if (variabl2669 .lastIndexOf(小于等于) 0) { variabl22590 = =; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(小于等于)); } else if (variabl2669 .lastIndexOf(不等于) 0) { variabl22590 = !=; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(不等于)); } else if (variabl2669 .lastIndexOf(大于) 0) { variabl22590 = ; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(大于)); } else if (variabl2669 .lastIndexOf(小于) 0) { variabl22590 = ; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(小于)); } else if (variabl2669 .lastIndexOf(等于) 0) { variabl22590 = =; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(等于)); } else if (variabl2669 .lastIndexOf(不包含) 0) { variabl22590 = 不包含; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(不包含)); } else if (variabl2669 .lastIndexOf(包含) 0) { variabl22590 = 包含; variabl2385 = variabl2669 .substring(0, variabl2669 .lastIndexOf(包含)); } if (variabl2485.length() 0) { if (variabl2669 .lastIndexOf(大于等于) 0) { variabl225901 = =; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(大于等于)); } else if (variabl2669 .lastIndexOf(小于等于) 0) { variabl225901 = =; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(小于等于)); } else if (variabl2669 .lastIndexOf(不等于) 0) { variabl225901 = !=; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(不等于)); } else if (variabl2669 .lastIndexOf(大于) 0) { variabl225901 = ; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(大于)); } else if (variabl2669 .lastIndexOf(小于) 0) { variabl225901 = ; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(小于)); } else if (variabl2669 .lastIndexOf(等于) 0) { variabl225901 = =; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(等于)); } else if (variabl2669 .lastIndexOf(不包含) 0) { variabl225901 = 不包含; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(不包含)); } else if (variabl2669 .lastIndexOf(包含) 0) { variabl225901 = 包含; variabl23851 = variabl2669 .substring(0, variabl2669 .lastIndexOf(包含)); } } try { con = main1.getConn(); sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2049.trim().length() 0) s1 = select + variabl1325 + from + variabl2603 + where + variabl2049; else s1 = select + variabl1325 + from + variabl2603; ResultSet rs = sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; for (int i = 0; i variabl2651; i++) { if ((variabl2385.length() 0) (variabl2517 .trim().equals(variabl2385.trim()))) variabl2345 = i; else if (variabl2517 .substring(variabl2517 .lastIndexOf(.) + 1, variabl2517 .length()).trim() .equals(variabl2385.trim())) variabl2345 = i; if ((variabl2385.length() 0) (variabl2517 .trim().equals(variabl23851.trim()))) variabl23451 = i; else if (variabl2517 .substring(variabl2517 .lastIndexOf(.) + 1, variabl2517 .length()).trim() .equals(variabl23851.trim())) variabl23451 = i; variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; b++; } int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); variabl2197 = new String ; rs.absolute(1); c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); con.close(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, 连接数据库出错!); } if (variabl2049.trim().length() 0) variabl2049 = variabl2049 + and ; frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 10, variabl2483 - 10, variabl2503 + 20); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20, variabl2483 - 50, variabl2503 + 20); tableModel = new DefaultTableModel(variabl2197, variabl2517); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 70, variabl2483 - 100, variabl2503 - 150); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i = 0; i variabl2651; i++) { TableColumn tc = table.getColumn(variabl2517 ); tc.setPreferredWidth(variabl1489 * 12); } panel.add(scrollPane); JLabel label1 = new JLabel(variabl2669 ); label1.setBounds(variabl2337, 10, variabl2669 .length() * 15, 20); panel.add(label1); variabl2337 = variabl2337 + variabl2669 .length() * 15; aTextField = new JTextField(, 10); aTextField.setBounds(variabl2337, 10, 150, 20); panel.add(aTextField); variabl2337 = variabl2337 + 150; if (variabl2669.length 1) { JLabel label3 = new JLabel(variabl2669 ); label3.setBounds(variabl2337, 10, variabl2669 .length() * 15, 20); panel.add(label3); variabl2337 = variabl2337 + variabl2669 .length() * 15; aTextField2 = new JTextField(, 10); aTextField2.setBounds(variabl2337, 10, 150, 20); panel.add(aTextField2); } variabl2339 = (variabl2483 - 360) / variabl2851; int variabl2337 = 350; final JButton selectButton = new JButton(variabl2405 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { con = main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (variabl2101.trim().length() 0) s1 = select + variabl2101 + from + variabl2603; else s1 = select + variabl1325 + from + variabl2603; if (variabl2049.trim().length() 0) s1 = s1 + where + variabl2049 + variabl2517 ; else s1 = s1 + where + variabl2517 ; if (((main1.variabl1539.lastIndexOf(, + variabl1501 + ,)) = 0) || ((main1.variabl1539.lastIndexOf(, + variabl1501 + ,)) = 0)) { JOptionPane.showMessageDialog(null, 不允许使用图形与二进制数据类型作为查询条件!, 提示, JOptionPane.INFORMATION_MESSAGE); return; } if (variabl22590.lastIndexOf(包含) 0) { if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) s1 = s1 + variabl22590 + aTextField.getText().trim(); else s1 = s1 + variabl22590 + ' + aTextField.getText().trim() + '; } else { if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (variabl22590.lastIndexOf(不包含) = 0) s1 = s1 + not like '% + aTextField.getText().trim() + %'; else s1 = s1 + like '% + aTextField.getText().trim() + %'; } if (variabl2669.length 1) { if (variabl225901.lastIndexOf(包含) 0) if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) s1 = s1 + and + variabl23851 + variabl225901 + aTextField2.getText().trim(); else s1 = s1 + and + variabl23851 + variabl225901 + ' + aTextField2.getText().trim() + '; else if (main1.variabl1545.lastIndexOf(, + variabl1501 + ,) = 0) { JOptionPane.showMessageDialog(null, 数字类数据类型不能做包含查询!); return; } else if (variabl225901.lastIndexOf(不包含) = 0) s1 = s1 + and + variabl23851 + not like '% + aTextField2.getText().trim() + %'; else s1 = s1 + and + variabl23851 + like '% + aTextField2.getText().trim() + %'; } ResultSet rs = sta3.executeQuery(s1); int rowNumber = 0; rs.last(); rowNumber = rs.getRow(); rsmd3 = rs.getMetaData(); variabl2651 = rsmd3.getColumnCount(); variabl1489 = new int ; variabl2517 = new String ; for (int i = 0; i variabl2651; i++) { variabl2517 = rsmd3.getColumnName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 = variabl2517 .length(); if (variabl1489 50) variabl1489 = 50; } variabl2197 = new String ; c = 0; b = 0; while (c rowNumber) { rs.absolute(c + 1); while (b variabl2651) { variabl2197 = rs.getString(b + 1); b++; } c++; b = 0; } rs.close(); sta3.close(); con.close(); tableModel = new DefaultTableModel(variabl2197, variabl2517); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.setViewportView(table); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i = 0; i variabl2651; i++) { TableColumn tc = table.getColumn(variabl2517 ); tc.setPreferredWidth(variabl1489 * 12); } printViewButton.setEnabled(true); printButton.setEnabled(true); } catch (Exception e1) { JOptionPane.showMessageDialog(null, 查询数据出错! + s1); } } }); selectButton.setBounds(variabl2337, 40, variabl2339, 20); if (variabl1187.indexOf(,0,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(selectButton); } printViewButton = new JButton(variabl2405 ); printViewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPreview1.printView1(variabl2197, variabl1079); } }); printViewButton.setBounds(variabl2337, 40, variabl2339, 20); if (variabl1187.indexOf(,1,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(printViewButton); printViewButton.setEnabled(false); } printButton = new JButton(variabl2405 ); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPrint1.print1(variabl2197, variabl1079); } }); printButton.setBounds(variabl2337, 40, variabl2339, 20); if (variabl1187.indexOf(,2,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(printButton); printButton.setEnabled(false); } final JButton exitButton = new JButton(variabl2405 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(variabl2337, 40, variabl2339, 20); if (variabl1187.indexOf(,3,) = 0) { variabl2337 = variabl2337 + variabl2339; panel.add(exitButton); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } }
个人分类: 生活点滴|1808 次阅读|0 个评论
管理信息系统软件生产线源码4-8
求新 2018-5-27 17:05
版本1 4.源码4,查询SQL语句辅助生成实验工具程序 /* * 程序文件名:dataQuery.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:SQL查询语句实验程序,辅助生成SQL语句。可对多数据表进行组合查询。 * 查询表达式可涉及聚集函数、分组、排序等内容 * 操作时首先选择数据表名称,如果不是第一个表,将提问连接类型。 * “等值连接”的连接条件式写在where语句中,JOIN连接等连接条件式写在where语句之前。 * 二种条件语句不能混用。 * 要求连接的二个数据表必须有且只有一个同名字段,连接条件是它们的值相等。 * 之后选择选择条件,选字段名、关系符及查询数据值, * 每完成一组条件,点击“添加条件按钮”加入到条件文本框中。 * 关系符如果是between,填数据值的格式为 值1 and 值2。例如:女 and 男 * 关系符如果是in,填数据值的格式为 值1,值2,……。例如:1,3,4,7 * 关于日期数据类型的查询,包含查询只能针对年份或月或日期……查 * datetime类型相等或不等查询要求至少输入yyyy-mm-dd * 再选输出字段(包括聚集函数)、排序要求、分组要求与分组条件。 * 填分组条件时先选字段,再选函数,选关系符,输入数据,再选下一个。 * 填写完毕后点击“生成SQL语句”按钮,将生成SQL语句,有非嵌入式语句与嵌入式语句二种, * 点击相应按钮执行各语句。 * 也可以直接写入SQL语句,再执行之。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery extends JFrame { static dataQuery frame1 = new dataQuery(); static String 关系符={{,大于},{,小于},{=,等于},{=,大于等于}, {=,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}, { is null ,等于空},{ is not null ,不等于空},{ between ,在 and 之间(二数中间加and)},{ in ,在( , , )之中(二边加括号,数间加逗号)}, }; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static String curTableName = ; private static JPanel 面板 = new JPanel(false); //定义面板 private static int 窗口宽=1000,窗口高=640; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String 表名; static String 字典表名; static String 表名表=,; static String ; static String 列数据类型0; static int 字段名串; static String 第1表名=,第2表名=,第3表名=; static String 表1条件=,表1条件2=,表2条件=,表3条件=;//表1条件2:表1分组条件 static String 表1字段1=,表1字段2=,表1字段3=,表1字段4=,表1字段5=; static String 表1字段6=,表2字段1=,表2字段2=,表3字段2=; static JComboBox 选数据值 = new JComboBox(); static JButton 加入条件按钮 = new JButton(); static JComboBox 组合框5 = new JComboBox(); static JComboBox 组合框6 = new JComboBox(); static JComboBox 组合框7 = new JComboBox(); static JComboBox 关系符框 = new JComboBox(); static JTextArea 文本域 = new JTextArea(); static JTextArea 表名文本域 = new JTextArea(); static JTextArea 连接文本域 = new JTextArea(); static JTextArea SQL1文本域 = new JTextArea(); static JTextArea SQL2文本域 = new JTextArea(); static JScrollPane 表名文本域滚动条 = new JScrollPane(表名文本域); static JScrollPane 连接文本域滚动条 = new JScrollPane(连接文本域); static JScrollPane SQL1文本域滚动条 = new JScrollPane(SQL1文本域); static JScrollPane SQL2文本域滚动条 = new JScrollPane(SQL2文本域); static JLabel 表名集 = new JLabel(); static JLabel 连接条件集 = new JLabel(); static JLabel SQL语句1 = new JLabel(); static JLabel SQL语句2 = new JLabel(); static JLabel 转新表名 = new JLabel(); static JTextField 新表名 = new JTextField(); static java.awt.List 列表框1 = new java.awt.List(); static JList 列表框3 = new JList(); static JList 列表框4 = new JList(); static JTextField 分组条件字段 = new JTextField(); static JTextField 分组字段 = new JTextField(100); static JTextField 排序条件 = new JTextField(); static HashSet set1=new HashSet(); static JButton 分组按钮 = new JButton(); static JButton 排序按钮 = new JButton(); static JButton 排序按钮2 = new JButton(); static JRadioButton 递增 = new JRadioButton(); static JRadioButton 降序 = new JRadioButton(); static JButton SQL1按钮 = new JButton(); static JButton SQL2按钮 = new JButton(); static char x1=10,x2=13; public static void selectQuery0(){ 列表框3.removeAll(); 表名=s1; 表名表=表名表+s1+,; 表数0++; try { dbConn=main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=sta3.executeQuery(select * from +表名); rsmd3 = rs.getMetaData(); int n=rsmd3.getColumnCount(); int m=0; 列名0=new String ; for(int i=0; in; i++) { 列名0 =rsmd3.getColumnName(i + 1); 列名 = 表名; if (表数0==1) {表1字段1=表1字段1+列名0 +,;第1表名=表名;} else if (表数0==2) 第2表名=表名; else if (表数0==3) 第3表名=表名; 列名 = 列名0 ; 列名 = ; 列名 =rsmd3.getColumnTypeName(i+1); m=rsmd3.getColumnDisplaySize(i + 1); if (m列名 .length()) m=列名 .length(); 列名 =+m; set1.add(列名0 ); if (set1.size()!=列数0){ DefaultListModel 选字段 = (DefaultListModel)列表框3.getModel(); 选字段.addElement(列名0 ); 列表框3.setModel(选字段); 组合框5.addItem(列名0 ); 列数0++; } 面板.add(组合框5, null); 列数++; } if (表1字段1.length()0) 表1字段1=表1字段1.substring(0,表1字段1.length()-1); rs.close(); sta3.close(); dbConn.close(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String ; 第1表名=;第2表名=;第3表名=; 表1条件=;表1条件2=;表2条件=;表3条件=; 表1字段1=;表1字段2=;表1字段3=;表1字段4=;表1字段5=; 表1字段6=;表2字段1=;表2字段2=;表3字段2=; 选数据值 = new JComboBox(); 加入条件按钮 = new JButton(); 组合框5 = new JComboBox(); 组合框6 = new JComboBox(); 组合框7 = new JComboBox(); 关系符框 = new JComboBox(); 文本域 = new JTextArea(); 表名文本域 = new JTextArea(); 连接文本域 = new JTextArea(); SQL1文本域 = new JTextArea(); SQL2文本域 = new JTextArea(); 表名文本域滚动条 = new JScrollPane(表名文本域); 连接文本域滚动条 = new JScrollPane(连接文本域); SQL1文本域滚动条 = new JScrollPane(SQL1文本域); SQL2文本域滚动条 = new JScrollPane(SQL2文本域); 表名集 = new JLabel(); 连接条件集 = new JLabel(); SQL语句1 = new JLabel(); SQL语句2 = new JLabel(); 转新表名 = new JLabel(); 新表名 = new JTextField(); 列表框1 = new java.awt.List(); 列表框3 = new JList(); 列表框4 = new JList(); 分组条件字段 = new JTextField(); 分组字段 = new JTextField(100); 排序条件 = new JTextField(); set1=new HashSet(); 分组按钮 = new JButton(); 排序按钮 = new JButton(); 排序按钮2 = new JButton(); 递增 = new JRadioButton(); 降序 = new JRadioButton(); SQL1按钮 = new JButton(); SQL2按钮 = new JButton(); x1=10;x2=13; 关系符 = ; 关系符 =大于; 关系符 = ; 关系符 =小于; 关系符 = = ; 关系符 =等于; 关系符 = = ; 关系符 =大于等于; 关系符 = = ; 关系符 =小于等于; 关系符 = ; 关系符 =不等于; 关系符 = like ; 关系符 =包含; 关系符 = not like ; 关系符 =不包含; JLabel 选择字段名 = new JLabel(); JLabel 选择表名 = new JLabel(); JLabel 选操作符 = new JLabel(); JScrollPane 列表框滚动条1 = new JScrollPane(列表框1); JScrollPane 列表框滚动条3 = new JScrollPane(列表框3); JButton 移出按钮 = new JButton(); JButton 求平均按钮 = new JButton(); JButton 移进按钮 = new JButton(); JButton 全选按钮 = new JButton(); JButton 求和按钮 = new JButton(); JButton 求最小按钮 = new JButton(); JButton 求最大按钮 = new JButton(); JScrollPane 列表框4滚动条 = new JScrollPane(列表框4); Border border1; JLabel 请输入数据 = new JLabel(); JButton 清空按钮 = new JButton(); JButton 左括号按钮 = new JButton(); JButton AND按钮 = new JButton(); JButton OR按钮 = new JButton(); JButton 右括号按钮 = new JButton(); JScrollPane 文本域滚动条 = new JScrollPane(文本域); JLabel 字段列表 = new JLabel(); JLabel 表名列表 = new JLabel(); JLabel 选分组条件 = new JLabel(); JLabel 选关系符 = new JLabel(); JButton 求记录条数 = new JButton(); JButton 查询按钮 = new JButton(); JButton 退出按钮 = new JButton(); ButtonGroup 按钮组 = new ButtonGroup(); JButton NOT按钮 = new JButton(); JPanel 子面板 = new JPanel(); Border border2; TitledBorder titledBorder1; JPanel 子面板2 = new JPanel(); Border border3; TitledBorder titledBorder2; JButton 清空按钮2 = new JButton(); border1 = BorderFactory.createEtchedBorder(UIManager.getColor( InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); 选择表名.setFont(new java.awt.Font(Dialog, 0, 12)); 选择表名.setPreferredSize(new Dimension(57, 16)); 选择表名.setRequestFocusEnabled(true); 选择表名.setText(选择数据表名,第2表起:); 选择表名.setBounds(new Rectangle(16, 13,182, 16)); 选择表名.setForeground(Color.red); 表名列表.setFont(new java.awt.Font(Dialog, 0, 12)); 表名列表.setText(左键连接,右键特殊连接。); 表名列表.setBounds(new Rectangle(16, 31, 177, 16)); 表名列表.setForeground(Color.red); 列表框1.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框1.setBounds(new Rectangle(16, 50, 138, 150)); 列表框滚动条1.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框滚动条1.setBorder(border1); 列表框滚动条1.setBounds(new Rectangle(13, 49, 138, 160)); try { String .trim().equals(列名 .trim())){ 当前字段名=列名0 ; 列名 =重复; 列名 =重复; 表1名称=列名 ; 字段名称=列名0 ; 表2名称=s1; if (第1表名.trim().equals(表1名称.trim())) 表1字段2=列名 ; else if (第2表名.trim().equals(表1名称.trim())) 表2字段2=列名 ; else if (第3表名.trim().equals(表1名称.trim())) 表3字段2=列名 ; } } if (表名文本域.getText().length()1){ 表名文本域.setText(s1); 连接文本域.setText(s1); } else { Object ); if (所选值==null) return; if ((所选值.toString().trim().equals(等值连接))(连接文本域.getText().length()0)(连接文本域.getText().lastIndexOf(JOIN)0)){ JOptionPane.showMessageDialog( null, 不能有二种连接表达式,+x1+x2+ 请删除文本框中不相容数据后再操作,+x1+x2+或者重选连接类型。); return; } else if ((! 所选值.toString().trim().equals(等值连接)) (连接文本域.getText().length()0) (连接文本域.getText().lastIndexOf(=)0) (连接文本域.getText().lastIndexOf(JOIN)0)){ JOptionPane.showMessageDialog( null, 不能有二种连接表达式,+x1+x2+ 请删除文本框中不相容数据后再操作,+x1+x2+或者重选连接类型。); return; } 表名文本域.setText(表名文本域.getText()+x1+x2+列表框1.getSelectedItem()); s2=;s3=; int k=0; if (连接文本域.getText().length()0) for (int i=0;i连接文本域.getText().length();i++){ if ((连接文本域.getText().substring(i,i+1).equals(+x1))|| (连接文本域.getText().substring(i,i+1).equals(+x2))){ k=1; continue; } else if (连接文本域.getText().substring(i,i+1).equals(x2)) continue; else if (k==0) s2=s2+连接文本域.getText().substring(i,i+1); else s3=s3+连接文本域.getText().substring(i,i+1); } String 字段名=; if (所选值.toString().trim().equals(JOIN连接)){ if (上一表.length()1){ s2=s2+ JOIN +s1; s3= on +上一表+.+当前字段名+=+s1+.+当前字段名+ ; s2=s2+x1+x2+s3; } else{ s3= on +第2表名+.+当前字段名+=+第3表名+.+当前字段名; s2=连接文本域.getText()+x1+x2+ JOIN +s1+x1+x2+s3+ ; } } else if (所选值.toString().trim().equals(左连接)){ if ((第3表名.length()1)(第2表名.length()0)){ s2=第1表名+ LEFT JOIN +第2表名; s3= on +第1表名+.+当前字段名+=+第2表名+.+当前字段名; s2=s2+x1+x2+s3; } else if (第3表名.length()0){ s3= on +第2表名+.+当前字段名+=+第3表名+.+当前字段名; s2=连接文本域.getText()+x1+x2+ LEFT JOIN +s1+x1+x2+s3+ ; } } else if (所选值.toString().trim().equals(右连接)){ if (连接文本域.getText().length()1){ s2=s2+ RIGHT JOIN +s1; s3= on +第1表名+.+当前字段名+=+s1+.+当前字段名; s2=s2+x1+x2+s3; } else{ s3= on +第2表名+.+当前字段名+=+第3表名+.+当前字段名; s2=连接文本域.getText()+x1+x2+ RIGHT JOIN +s1+x1+x2+s3+ ; } } if (所选值.toString().trim().equals(全连接)){ if (连接文本域.getText().length()1){ s2=s2+ FULL JOIN +s1; s3= on +第1表名+.+当前字段名+=+s1+.+当前字段名; s2=s2+x1+x2+s3; } else{ s3= on +第2表名+.+当前字段名+=+第3表名+.+当前字段名; s2=连接文本域.getText()+x1+x2+ FULL JOIN +s1+x1+x2+s3+ ; } } else if (所选值.toString().trim().equals(等值连接)){ if ((s2.length()0)(s2.lastIndexOf(=)0)) s2=; if (s2.length()0) s2=s2+x1+x2+ and ; s2=s2+ +表1名称+.+字段名称+=+表2名称+.+字段名称+ +s3; } 连接文本域.setText(s2); } } }); 表名集.setFont(new java.awt.Font(Dialog, 0, 12)); 表名集.setPreferredSize(new Dimension(57, 16)); 表名集.setRequestFocusEnabled(true); 表名集.setText(所选择数据表名); 表名集.setBounds(155,13,182, 16); 表名文本域滚动条.setBorder(border1); 表名文本域滚动条.setBounds(new Rectangle(155,30, 280, 80)); 表名文本域.setFont(new java.awt.Font(Dialog, 0, 12)); 表名文本域.setText(); 连接条件集.setFont(new java.awt.Font(Dialog, 0, 12)); 连接条件集.setPreferredSize(new Dimension(57, 16)); 连接条件集.setRequestFocusEnabled(true); 连接条件集.setText(所选连接条件集); 连接条件集.setBounds(155,110,182, 16); 连接文本域滚动条.setBorder(border1); 连接文本域滚动条.setBounds(new Rectangle(155, 130,280,80)); 连接文本域.setFont(new java.awt.Font(Dialog, 0, 12)); 连接文本域.setText(); 选择字段名.setFont(new java.awt.Font(Dialog, 0, 12)); 选择字段名.setPreferredSize(new Dimension(57, 16)); 选择字段名.setRequestFocusEnabled(true); 选择字段名.setText(选择字段名); 选择字段名.setBounds(new Rectangle(16+430, 13, 82, 16)); 选操作符.setFont(new java.awt.Font(Dialog, 0, 12)); 选操作符.setText(选择关系符); 选操作符.setBounds(new Rectangle(164+430, 13, 81, 16)); 选数据值.setFont(new java.awt.Font(Dialog, 0, 12)); 选数据值.setAlignmentY( (float) 0.5); 选数据值.setBorder(BorderFactory.createLineBorder(Color.black)); 选数据值.setDoubleBuffered(false); 选数据值.setActionCommand(comboBoxChanged); 选数据值.setEditable(true); 选数据值.setBounds(new Rectangle(374+430, 28, 157, 22)); 面板.setLayout(null); 面板.setLayout(null); 面板.setBounds(10, 10,窗口宽-10,窗口高-10); 组合框5.setFont(new java.awt.Font(Dialog, 0, 12)); 组合框5.setBorder(BorderFactory.createLineBorder(Color.black)); 组合框5.setBounds(new Rectangle(14+430, 29, 118, 22)); 关系符框.setFont(new java.awt.Font(Dialog, 0, 12)); 关系符框.setBorder(BorderFactory.createLineBorder(Color.black)); 关系符框.setBounds(new Rectangle(146+430, 29, 216, 22)); 请输入数据.setFont(new java.awt.Font(Dialog, 0, 12)); 请输入数据.setText(输入值); 请输入数据.setBounds(new Rectangle(380+430, 13, 42, 16)); 加入条件按钮.setBounds(new Rectangle(8, 25, 85, 28)); 加入条件按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 加入条件按钮.setBorder(border1); 加入条件按钮.setBorderPainted(true); 加入条件按钮.setText(添加条件); 清空按钮.setBounds(new Rectangle(98, 26, 79, 28)); 清空按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮.setBorder(border1); 清空按钮.setBorderPainted(true); 清空按钮.setText(清空条件); 左括号按钮.setBounds(new Rectangle(7, 27, 60, 25)); 左括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 左括号按钮.setBorder(border1); 左括号按钮.setBorderPainted(true); 左括号按钮.setText((); AND按钮.setText(AND); AND按钮.setBounds(new Rectangle(73, 27, 62, 25)); AND按钮.setFont(new java.awt.Font(Dialog, 0, 12)); AND按钮.setBorder(border1); AND按钮.setBorderPainted(true); OR按钮.setText(OR); OR按钮.setBounds(new Rectangle(141, 27, 59, 25)); OR按钮.setFont(new java.awt.Font(Dialog, 0, 12)); OR按钮.setBorder(border1); OR按钮.setBorderPainted(true); OR按钮.setRolloverEnabled(true); OR按钮.setSelected(false); NOT按钮.setBorderPainted(true); NOT按钮.setBorder(border1); NOT按钮.setFont(new java.awt.Font(Dialog, 0, 12)); NOT按钮.setBounds(new Rectangle(204, 27, 58, 25)); NOT按钮.setText(NOT); 右括号按钮.setText()); 右括号按钮.setBounds(new Rectangle(266, 26, 52, 25)); 右括号按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 右括号按钮.setBorder(border1); 右括号按钮.setBorderPainted(true); 子面板.setFont(new java.awt.Font(Dialog, 0, 13)); 子面板.setBorder(titledBorder1); 子面板.setBounds(new Rectangle(12+430, 56, 184, 64)); 子面板.setLayout(null); 子面板2.setBorder(titledBorder2); 子面板2.setBounds(new Rectangle(208+430, 56, 325, 64)); 子面板2.setLayout(null); 列表框滚动条3.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框滚动条3.setBorder(border1); 列表框滚动条3.setBounds(new Rectangle(13, 238, 138, 340)); 列表框3.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框3.setBorder(border1); 列表框3.setBounds(new Rectangle(13+430, 238, 138, 280)); 列表框3.setModel(fModel); 移进按钮.setBounds(new Rectangle(160, 220, 114, 25)); 移进按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移进按钮.setBorder(border1); 移进按钮.setText(移进字段》); 全选按钮.setBounds(new Rectangle(160, 247, 114, 25)); 全选按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 全选按钮.setBorder(border1); 全选按钮.setText(全选字段》); 移出按钮.setBounds(new Rectangle(159, 274, 114, 25)); 移出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 移出按钮.setBorder(border1); 移出按钮.setText(《移出字段); 求最大按钮.setBounds(new Rectangle(159, 301, 115, 25)); 求最大按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求最大按钮.setBorder(border1); 求最大按钮.setText(加入求最大值字段); 求最小按钮.setBounds(new Rectangle(159, 328, 115, 25)); 求最小按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求最小按钮.setBorder(border1); 求最小按钮.setText(加入求最小值字段); 求和按钮.setBounds(new Rectangle(159, 355, 116, 25)); 求和按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求和按钮.setBorder(border1); 求和按钮.setText(加入求和字段); 求平均按钮.setBounds(new Rectangle(159, 382, 114, 25)); 求平均按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 求平均按钮.setBorder(border1); 求平均按钮.setText(加入求平均值字段); 求记录条数.setText(加入求记录条数); 求记录条数.setBorder(border1); 求记录条数.setBounds(new Rectangle(159, 409, 116, 25)); 求记录条数.setFont(new java.awt.Font(Dialog, 0, 12)); 排序按钮.setText(加入升序排序字段); 排序按钮.setBorder(border1); 排序按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 排序按钮.setBounds(new Rectangle(159, 436, 115, 25)); 排序按钮2.setText(加入降序排序字段); 排序按钮2.setBorder(border1); 排序按钮2.setFont(new java.awt.Font(Dialog, 0, 12)); 排序按钮2.setBounds(new Rectangle(159, 463, 115, 25)); 分组按钮.setBounds(new Rectangle(159, 490, 116, 25)); 分组按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 分组按钮.setBorder(border1); 分组按钮.setText(加入分组字段); 选分组条件.setFont(new java.awt.Font(Dialog, 0, 12)); 选分组条件.setText(选择分组条件函数); 选分组条件.setBounds(new Rectangle(159, 517, 140, 20)); 选关系符.setFont(new java.awt.Font(Dialog, 0, 12)); 选关系符.setText(选择关系符); 选关系符.setBounds(new Rectangle(300,517, 80,20)); 组合框6.setFont(new java.awt.Font(Dialog, 0, 12)); 组合框6.setBorder(BorderFactory.createLineBorder(Color.black)); 组合框6.setBounds(new Rectangle(159,540, 140, 40)); 组合框6.addItem( ); 组合框6.addItem(SUM); 组合框6.addItem(AVG); 组合框6.addItem(MAX); 组合框6.addItem(MIN); 组合框6.addItem(COUNT); 组合框6.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e) { if ((组合框6.getSelectedItem()!=null)(列表框3.getSelectedValue()!=null)){ s1=组合框6.getSelectedItem().toString()+(+列表框3.getSelectedValue().toString()+)+ 组合框7.getSelectedItem().toString(); 分组条件字段.setText(s1); } } }); 组合框7.setFont(new java.awt.Font(Dialog, 0, 12)); 组合框7.setBorder(BorderFactory.createLineBorder(Color.black)); 组合框7.setBounds(new Rectangle(300,540, 80,40)); 组合框7.addItem(); 组合框7.addItem(=); 组合框7.addItem(); 组合框7.addItem(=); 组合框7.addItem(=); 组合框7.addItem(); 组合框7.addItemListener(new ItemListener(){ //addMouseListener(new MouseAdapter(){ public void itemStateChanged(ItemEvent e) { String s0=; s1=列表框3.getSelectedValue().toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; break; } } if ((组合框6.getSelectedItem()!=null)(列表框3.getSelectedValue()!=null)){ s1=组合框6.getSelectedItem().toString()+(+s0+)+ 组合框7.getSelectedItem().toString(); 分组条件字段.setText(s1); } } }); 文本域滚动条.setBorder(border1); 文本域滚动条.setBounds(new Rectangle(13+430, 126, 520, 86)); 文本域.setFont(new java.awt.Font(Dialog, 0, 12)); 文本域.setText(); 列表框4滚动条.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框4滚动条.setBorder(border1); 列表框4滚动条.setBounds(new Rectangle(280, 220, 253, 220)); 列表框4.setFont(new java.awt.Font(Dialog, 0, 12)); 列表框4.setBorder(border1); 列表框4.setBounds(new Rectangle(280, 222, 248, 210)); 列表框4.setModel(dModel); 文本域滚动条.setBorder(border1); 文本域滚动条.setBounds(new Rectangle(13+430, 126, 520, 86)); 文本域.setFont(new java.awt.Font(Dialog, 0, 12)); 文本域.setText(); 字段列表.setFont(new java.awt.Font(Dialog, 0, 12)); 字段列表.setText(字段列表); 字段列表.setBounds(new Rectangle(16, 217, 77, 16)); for (int i = 0; i 关系符.length; i++) { 关系符框.addItem(关系符 ); } if (关系符框.getItemCount() 0) { 关系符框.setSelectedIndex(0); } 按钮组.add(递增); 按钮组.add(降序); 加入条件按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ((文本域.getText()!=null)(文本域.getText().length()0) (文本域.getText().lastIndexOf(and)文本域.getText().length()-4)){ 文本域.append( and ); } String s=; int n=组合框5.getSelectedIndex(); String s1=组合框5.getSelectedItem().toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s1 =列名 +.+列名 ; else s1 =列名 ; n=i; } } String s2 = (String)关系符框.getSelectedItem(); for(int i=0; i关系符.length; i++) { if(s2==关系符 ) { s2=关系符 ; } } String s3=选数据值.getEditor().getItem().toString().trim(); //如果查询对象是图形等类 if ((main1.图形数据类型.lastIndexOf(列名 ))=0){ JOptionPane.showMessageDialog(面板,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); //如果查询对象是整型之类的数据, } else if(main1.数字数据类型.lastIndexOf(,+列名 +,)=0){ //数字数据类型 if(关系符框.getSelectedItem().toString().trim().equals(包含)||关系符框.getSelectedItem().toString().trim().equals(不包含)){ JOptionPane.showMessageDialog(面板,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); //不允许选择了数字数据类型,又选择“包含”或者“不包含”条件符 } else if (关系符框.getSelectedItem().toString().lastIndexOf(空)0){ s=s1+s2; 文本域.append(s); } else if (关系符框.getSelectedItem().toString().lastIndexOf(在)0){ s=s1+s2+s3.trim(); 文本域.append(s); } else { s=s1+s2+s3.trim(); 文本域.append(s); } } else if(main1.文本数据类型.lastIndexOf(列名 )=0){ //判断如果是大数据类型 if(关系符框.getSelectedItem().toString().trim().equals(包含)||关系符框.getSelectedItem().toString().trim().equals(不包含)){ s3='%+(String)选数据值.getEditor().getItem()+%'; s=s1+s2+s3; 文本域.append(s); }else{ JOptionPane.showMessageDialog(面板,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); } } else { //字符、时间、货币数据类型 if (关系符框.getSelectedItem().toString().lastIndexOf(空)0){ s=s1+s2; 文本域.append(s); } else if (关系符框.getSelectedItem().toString().lastIndexOf(之中)=0){ if (选数据值.getEditor().getItem().toString().lastIndexOf(()0) s3=(+s3+); s=s1+s2+s3; 文本域.append(s); } else if (关系符框.getSelectedItem().toString().lastIndexOf(之间)=0){ s=s1+s2+s3.trim(); //操作注意:字符类型的数据二边如无单引号,要补单引号 文本域.append(s); } else{ if(关系符框.getSelectedItem().toString().trim().indexOf(包含)=0) { if ((列名 .indexOf(datetime)=0) (s3.length()4)){ JOptionPane.showMessageDialog(面板,日期时间数据类型包含查询只能单为年份或月份或日期……,提示, JOptionPane.INFORMATION_MESSAGE); return; } s3=%+s3+%; } else { if ((列名 .indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(面板,日期时间数据类型查询数据格式必须为yyyy-mm-dd……,提示, JOptionPane.INFORMATION_MESSAGE); } else if ((列名 .equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((列名 .equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((列名 .indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.00 +8:00; } s=s1+s2+ '+s3+'; 文本域.append(s); } } if (列名 .trim().equals(第1表名)) if ((表1条件.length()0)(表1条件.lastIndexOf(and)表1条件.length()-4) (表1条件.lastIndexOf(or)表1条件.length()-4)) 表1条件=表1条件+ and +列名 +s2+s3; else 表1条件=表1条件+ +列名 +s2+s3; else if (列名 .trim().equals(第2表名)) if ((表2条件.length()0)(表2条件.lastIndexOf(and)表2条件.length()-4) (表2条件.lastIndexOf(or)表2条件.length()-4)) 表2条件=表2条件+ and +列名 +s2+s3; else 表2条件=表2条件+ +列名 +s2+s3; else if (列名 .trim().equals(第3表名)) if ((表3条件.length()0)(表3条件.lastIndexOf(and)表3条件.length()-4) (表3条件.lastIndexOf(or)表3条件.length()-4)) 表3条件=表3条件+ and +列名 +s2+s3; else 表3条件=表3条件+ +列名 +s2+s3; } }); 清空按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; 文本域.setText(s); } }); 左括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; 文本域.append(s); } }); AND按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; 文本域.append(s); if (表1条件.length()0) 表1条件=表1条件+ and ; else if (表2条件.length()0) 表2条件=表2条件+ and ; else if (表3条件.length()0) 表3条件=表3条件+ and ; } }); OR按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; 文本域.append(s); if (表1条件.length()0) 表1条件=表1条件+ or ; else if (表2条件.length()0) 表2条件=表2条件+ or ; else if (表3条件.length()0) 表3条件=表3条件+ or ; } }); NOT按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; 文本域.append(s); if (表1条件.length()0) 表1条件=表1条件+ not ; else if (表2条件.length()0) 表2条件=表2条件+ not ; else if (表3条件.length()0) 表3条件=表3条件+ not ; } }); 右括号按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); 文本域.append(s); } }); //中间按钮群 移进按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel 选字段 = (DefaultListModel)列表框3.getModel(); DefaultListModel 选字段1 = (DefaultListModel)列表框4.getModel(); String s0=; int n=列表框3.getSelectedIndex(); s1=选字段.elementAt(n).toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段3=表1字段3+列名 +,; else 表2字段1=表2字段1+列名 +,; n=i; 选字段1.addElement(s0); break; } } 列表框4.setModel(选字段1); } }); 全选按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel 选字段 = (DefaultListModel)列表框4.getModel(); DefaultListModel 选字段1 = (DefaultListModel)列表框3.getModel(); 选字段.removeAllElements(); String s0=; for (int j=0;j选字段1.getSize();j++){ s1=选字段1.elementAt(j).toString().trim(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段3=表1字段3+列名 +,; else 表2字段1=表2字段1+列名 +,; 选字段.addElement(s0); break; } } } 列表框4.setModel(选字段); } }); 移出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel 选字段 = (DefaultListModel)列表框4.getModel(); 选字段.removeElement(列表框4.getSelectedValue()); 列表框4.setModel(选字段); } }); 求平均按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = -1; DefaultListModel 选字段 = (DefaultListModel)列表框3.getModel(); String s0=; int n=列表框3.getSelectedIndex(); s1=选字段.elementAt(n).toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段3=表1字段3+列名 +,; else 表2字段1=表2字段1+列名 +,; n=i; break; } } if(main1.数字数据类型.indexOf(,+列名 +,)=0) { DefaultListModel 选字段1 = (DefaultListModel)列表框4.getModel(); 选字段1.addElement(AVG(+s0+)+ AS +'+平均+s0+'); 列表框4.setModel(选字段1); } else { JOptionPane.showMessageDialog(面板,非数值型列不能求平均值!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求最大按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = -1; DefaultListModel 选字段 = (DefaultListModel)列表框3.getModel(); String s0=; int n=列表框3.getSelectedIndex(); s1=选字段.elementAt(n).toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段3=表1字段3+列名 +,; else 表2字段1=表2字段1+列名 +,; n=i; break; } } if (((main1.文本数据类型+main1.图形数据类型).lastIndexOf(列名 ))0){//如果查询对象是非大数据类型 DefaultListModel 选字段1 = (DefaultListModel)列表框4.getModel(); 选字段1.addElement(MAX(+s0+)+ AS +'+最大+s0+'); 列表框4.setModel(选字段1); } else { JOptionPane.showMessageDialog(面板,大数据类型不能求最大值!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求最小按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = -1; DefaultListModel 选字段 = (DefaultListModel)列表框3.getModel(); String s0=; int n=列表框3.getSelectedIndex(); s1=选字段.elementAt(n).toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段3=表1字段3+列名 +,; else 表2字段1=表2字段1+列名 +,; n=i; break; } } if (((main1.文本数据类型+main1.图形数据类型).lastIndexOf(列名 ))0){//如果查询对象是非大数据类型 DefaultListModel 选字段1 = (DefaultListModel)列表框4.getModel(); 选字段1.addElement(MIN(+s0+)+ AS +'+最小+s0+'); 列表框4.setModel(选字段1); } else { JOptionPane.showMessageDialog(面板,大数据类型不能求最小值!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求和按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = -1; DefaultListModel 选字段1 = (DefaultListModel)列表框3.getModel(); String s0=; int n=列表框3.getSelectedIndex(); s1=选字段1.elementAt(n).toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段3=表1字段3+列名 +,; else 表2字段1=表2字段1+列名 +,; n=i; break; } } if(main1.数字数据类型.indexOf(,+列名 +,)=0) { DefaultListModel 选字段 = (DefaultListModel)列表框4.getModel(); 选字段.addElement(SUM(+s0+)+ AS +'+s0+和+'); 列表框4.setModel(选字段); } else { JOptionPane.showMessageDialog(面板,非数值型列不能求总和!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); 求记录条数.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel 选字段1 = (DefaultListModel)列表框3.getModel(); String s0=; int n=列表框3.getSelectedIndex(); s1=选字段1.elementAt(n).toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段3=表1字段3+列名 +,; else 表2字段1=表2字段1+列名 +,; n=i; break; } } DefaultListModel 选字段 = (DefaultListModel)列表框4.getModel(); 选字段.addElement(COUNT(+s0+)+ AS +'+记录条数+'); 列表框4.setModel(选字段); } }); 分组按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel 选字段1 = (DefaultListModel)列表框3.getModel(); String s0=; int n=列表框3.getSelectedIndex(); s1=选字段1.elementAt(n).toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段3=表1字段3+列名 +,; else 表2字段1=表2字段1+列名 +,; n=i; break; } } if ((分组字段.getText().length()0)(分组字段.getText().lastIndexOf(+s0)0)) 分组字段.setText(分组字段.getText()+,+s0+ ); else if (分组字段.getText().length()1) 分组字段.setText( GROUP BY +s0+ ); } }); 排序按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel 选字段1 = (DefaultListModel)列表框3.getModel(); String s0=; int n=列表框3.getSelectedIndex(); s1=选字段1.elementAt(n).toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段4=表1字段4+列名 +,; n=i; break; } } if ((排序条件.getText().length()0)(排序条件.getText().lastIndexOf(+s0)0)) 排序条件.setText(排序条件.getText()+,+s0); else if (排序条件.getText().length()1) 排序条件.setText( ORDER BY +s0); } }); 排序按钮2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel 选字段1 = (DefaultListModel)列表框3.getModel(); String s0=; int n=列表框3.getSelectedIndex(); s1=选字段1.elementAt(n).toString(); for(int i=0; i列数; i++) { if (列名 .trim().equals(s1.trim())) { if (列名 .trim().length()0) s0 =列名 +.+列名 ; else s0 =列名 ; if (列名 .trim().equals(第1表名.trim())) 表1字段4=表1字段4+列名 + desc ; n=i; break; } } if ((排序条件.getText().length()0)(排序条件.getText().lastIndexOf(+s0)0)) 排序条件.setText(排序条件.getText()+,+s0+ desc ); else if (排序条件.getText().length()1) 排序条件.setText( ORDER BY +s0+ desc ); } }); 排序条件.setBorder(border1); 排序条件.setText(); 排序条件.setBounds(new Rectangle(281, 448, 252, 30)); 分组字段.setBorder(border1); 分组字段.setText(); 分组字段.setBounds(new Rectangle(281, 480, 253, 30)); 分组条件字段.setBorder(border1); 分组条件字段.setText(); 分组条件字段.setBounds(new Rectangle(400, 516,556, 30)); 转新表名.setFont(new java.awt.Font(Dialog, 0, 12)); 转新表名.setPreferredSize(new Dimension(57, 16)); 转新表名.setRequestFocusEnabled(true); 转新表名.setText(转存新表的名称); 转新表名.setBounds(551,226,120,20); 新表名.setBounds(new Rectangle(671,226,290,20)); 新表名.setFont(new java.awt.Font(Dialog, 0, 12)); 新表名.setText(); SQL语句1.setFont(new java.awt.Font(Dialog, 0, 12)); SQL语句1.setPreferredSize(new Dimension(57, 16)); SQL语句1.setRequestFocusEnabled(true); SQL语句1.setText(所生成SQL语句1); SQL语句1.setBounds(551,250,182, 16); SQL1文本域滚动条.setBorder(border1); SQL1文本域滚动条.setBounds(new Rectangle(540,268,418,90)); SQL1文本域.setFont(new java.awt.Font(Dialog, 0, 12)); SQL1文本域.setText(); SQL1文本域.setLineWrap(true); SQL语句2.setFont(new java.awt.Font(Dialog, 0, 12)); SQL语句2.setPreferredSize(new Dimension(57, 16)); SQL语句2.setRequestFocusEnabled(true); SQL语句2.setText(所生成SQL语句2); SQL语句2.setBounds(550,360,182, 16); SQL2文本域滚动条.setBorder(border1); SQL2文本域滚动条.setBounds(new Rectangle(540,380,418, 130)); SQL2文本域.setFont(new java.awt.Font(Dialog, 0, 12)); SQL2文本域.setText(); SQL2文本域.setLineWrap(true); 清空按钮2.setBounds(new Rectangle(400,553,111, 25)); //464, 214, 68, 24 清空按钮2.setFont(new java.awt.Font(Dialog, 0, 12)); 清空按钮2.setBorder(border1); 清空按钮2.setText(清空所有选项); 查询按钮.setBounds(new Rectangle(511, 553, 111, 25)); 查询按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 查询按钮.setBorder(border1); 查询按钮.setText(生成sql语句); SQL1按钮.setBounds(new Rectangle(622, 553, 111, 25)); SQL1按钮.setFont(new java.awt.Font(Dialog, 0, 12)); SQL1按钮.setBorder(border1); SQL1按钮.setText(执行SQL语句1); SQL2按钮.setBounds(new Rectangle(733, 553, 111, 25)); SQL2按钮.setFont(new java.awt.Font(Dialog, 0, 12)); SQL2按钮.setBorder(border1); SQL2按钮.setText(执行SQL语句2); 退出按钮.setBounds(new Rectangle(844, 553, 111, 25)); 退出按钮.setFont(new java.awt.Font(Dialog, 0, 12)); 退出按钮.setBorder(border1); 退出按钮.setText(退出); 面板.setBackground(Color.lightGray); 面板.add(查询按钮, null); 面板.add(列表框滚动条3, null); 面板.add(列表框滚动条1, null); 面板.add(移出按钮, null); 面板.add(求平均按钮, null); 面板.add(求最大按钮, null); 面板.add(求最小按钮, null); 面板.add(求和按钮, null); 面板.add(求记录条数, null); 面板.add(分组按钮, null); 面板.add(排序按钮, null); 面板.add(排序按钮2, null); 面板.add(列表框4滚动条, null); 面板.add(分组字段, null); 面板.add(选分组条件, null); 面板.add(选关系符, null); 面板.add(组合框6, null); 面板.add(组合框7, null); 面板.add(排序条件, null); 面板.add(退出按钮, null); 面板.add(文本域滚动条, null); 面板.add(表名集, null); 面板.add(连接条件集, null); 面板.add(转新表名, null); 面板.add(新表名, null); 面板.add(SQL语句1, null); 面板.add(SQL语句2, null); 面板.add(表名文本域滚动条, null); 面板.add(连接文本域滚动条, null); 面板.add(SQL1文本域滚动条, null); 面板.add(SQL2文本域滚动条, null); 面板.add(分组条件字段, null); 子面板.add(加入条件按钮, null); 子面板.add(清空按钮, null); 面板.add(子面板2, null); 面板.add(子面板, null); 子面板2.add(左括号按钮, null); 子面板2.add(右括号按钮, null); 子面板2.add(AND按钮, null); 子面板2.add(OR按钮, null); 子面板2.add(NOT按钮, null); 面板.add(组合框5, null); 面板.add(关系符框, null); 面板.add(清空按钮2, null); 面板.add(移进按钮, null); 面板.add(全选按钮, null); 面板.add(选操作符, null); 面板.add(选择字段名, null); 面板.add(选择表名, null); 面板.add(表名列表, null); 面板.add(字段列表, null); 面板.add(选数据值, null); 面板.add(请输入数据, null); 面板.add(SQL1按钮, null); 面板.add(SQL2按钮, null); 清空按钮2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel 选字段 = (DefaultListModel)列表框4.getModel(); 选字段.removeAllElements(); 列表框4.setModel(选字段); 分组字段.setText(); 排序条件.setText(); 分组条件字段.setText(); 表名文本域.setText(); 连接文本域.setText(); SQL1文本域.setText(); SQL2文本域.setText(); 新表名.setText(); 文本域.setText(); 当前字段名=; s1=; s2=;s3=;s4=;s5=;s9=; 列数=0;列数0=0;表数0=0; 列名=new String ; 连接条件=; 第1表名=;第2表名=;第3表名=; 表1条件=;表1条件2=;表2条件=;表3条件=; 表1字段1=;表1字段2=;表1字段3=;表1字段4=;表1字段5=; 表1字段6=;表2字段1=;表2字段2=;表3字段2=; 组合框5.removeAllItems(); 组合框6.removeAllItems(); 组合框7.removeAllItems(); ((DefaultListModel)列表框3.getModel()).removeAllElements(); ((DefaultListModel)列表框4.getModel()).removeAllElements(); } }); 查询按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s1=select ; DefaultListModel 选字段 = (DefaultListModel)列表框4.getModel(); if (选字段.getSize()==0) s1=s1+ * ; else { for (int i=0;i选字段.getSize();i++) s1=s1+选字段.elementAt(i)+,; s1=s1.substring(0,s1.length()-1); } if (新表名.getText().length()0) s1=s1+ into +新表名.getText(); s1=s1+ from ; s4=; for (int i=0;i表名文本域.getText().length();i++){ if (表名文本域.getText().substring(i,i+1).equals(+x1)){ s4=s4+,; continue; } else if (连接文本域.getText().substring(i,i+1).equals(x2)) continue; else s4=s4+表名文本域.getText().substring(i,i+1); } s2=;s3=; int k=0; if ((连接文本域.getText().length()0)(连接文本域.getText().lastIndexOf(JOIN)0)){ for (int i=0;i连接文本域.getText().length();i++){ if ((连接文本域.getText().substring(i,i+1).equals(+x1))|| (连接文本域.getText().substring(i,i+1).equals(+x2))){ k=1; continue; } else if (连接文本域.getText().substring(i,i+1).equals(x2)) continue; else if (k==0) s2=s2+连接文本域.getText().substring(i,i+1); else s3=s3+连接文本域.getText().substring(i,i+1); } s1=s1+s2+s3; if (文本域.getText().length()0) s1=s1+ where +文本域.getText(); } else { s1=s1+s4; if ((连接文本域.getText().length()0)(连接文本域.getText().lastIndexOf(=)0)){ s1=s1+ where +连接文本域.getText(); if (文本域.getText().length()0) s1=s1+ and +文本域.getText(); } else if (文本域.getText().length()0){ s1=s1+ where +文本域.getText(); } } if (分组字段.getText().length()0){ s4 = 分组字段.getText(); if (s4.substring(s4.length()-1, s4.length()).equals(,)) //判断分组字段是否为空 s4 =s4.substring(0, s4.length()-1); s1=s1+s4; } if (分组条件字段.getText().length()0) s1=s1+ having +分组条件字段.getText(); if (排序条件.getText().length()0) s1=s1+排序条件.getText(); SQL1文本域.setText(s1); if ((表1条件.length()4)(表1条件.lastIndexOf(and)表1条件.length()-5)) 表1条件=表1条件.substring(0,表1条件.lastIndexOf(and)); if ((连接文本域.getText().length()0)(连接文本域.getText().lastIndexOf(=)0)){ if ((表1字段2.length()0)(表1字段2.substring(表1字段2.length()-1,表1字段2.length()).trim().equals(,))) 表1字段2=表1字段2.substring(0,表1字段2.length()-1); if ((表1字段3.length()0)(表1字段3.substring(表1字段3.length()-1,表1字段3.length()).trim().equals(,))) 表1字段3=表1字段3.substring(0,表1字段3.length()-1); if ((表1字段4.length()0)(表1字段4.substring(表1字段4.length()-1,表1字段4.length()).trim().equals(,))) 表1字段4=表1字段4.substring(0,表1字段4.length()-1); if ((表1字段5.length()0)(表1字段5.substring(表1字段5.length()-1,表1字段5.length()).trim().equals(,))) 表1字段5=表1字段5.substring(0,表1字段5.length()-1); if ((表2字段2.length()0)(表2字段2.substring(表2字段2.length()-1,表2字段2.length()).trim().equals(,))) 表1字段2=表1字段2.substring(0,表2字段2.length()-1); if ((表3字段2.length()0)(表3字段2.substring(表3字段2.length()-1,表3字段2.length()).trim().equals(,))) 表3字段2=表3字段2.substring(0,表3字段2.length()-1); s1=select +表1字段3+ from +第1表名; if (表1字段4.length()0) s1=s1+ order by +表1字段4; if (表1字段5.length()0) s1=s1+ group by +表1字段5; if (表1字段6.length()0) s1=s1+ having +表1字段6; if ((表1字段2.length()0)||(表1条件.length()0)) s1=s1+ where ; if (表1条件.length()0) { s1=s1+表1条件+ ; if (表1字段2.length()0){ if (s1.lastIndexOf(and)s1.length()-4) s1=s1+ and +表1字段2+ in (select +表1字段2+ from +第2表名; else s1=s1+表1字段2+ in (select +表1字段2+ from +第2表名; } if ((表2字段2.length()0)||(表2条件.length()0)) s1=s1+ where ; if (表2条件.length()0) { s1=s1+表2条件+ ; if (表2字段2.length()0){ s1=s1+ and +表2字段2+ in (select +表2字段2+ from +第3表名; } if (表3条件.length()0) s1=s1+ where +表3条件+); } else if (表2字段2.length()0){ s1=s1+表2字段2+ in (select +表2字段2+ from +第3表名; if (表3条件.length()0) s1=s1+ where +表3条件+); } else if (表3条件.length()0) { s1=s1+ where +表3条件; } s1=s1+); } else if (表1字段2.length()0){ s1=s1+表1字段2+ in (select +表1字段2+ from +第2表名; if ((表2字段2.length()0)||(表2条件.length()0)) s1=s1+ where ; if (表2条件.length()0) { s1=s1+表2条件+ ; if (表2字段2.length()0){ s1=s1+ and +表2字段2+ in (select +表2字段2+ from +第3表名; } if (表3条件.length()0) s1=s1+ where +表3条件+); } else if (表2字段2.length()0){ s1=s1+表2字段2+ in (select +表2字段2+ from +第3表名; if (表3条件.length()0) s1=s1+ where +表3条件+); } else if (表3条件.length()0) { s1=s1+ where +表3条件; } s1=s1+); } int d1=0,d2=0; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).trim().equals(()) d1++; else if (s1.substring(i,i+1).trim().equals())) d2++; if (d1d2) s1=s1+); SQL2文本域.setText(s1); } } }); SQL1按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { s1=SQL1文本域.getText(); dbConn=main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数0=rsmd3.getColumnCount(); 列名0 = new String ; 列数据类型0 = new String ; 列数据宽度0 = new int ; for(int i=0; i列数0; i++) { 列名0 = rsmd3.getColumnName(i + 1); 列数据类型0 = rsmd3.getColumnTypeName(i+1); 列数据宽度0 = rsmd3.getColumnDisplaySize(i + 1); if (列数据类型0 .indexOf(int) = 0) 列数据宽度0 = 6 + 10; else if (列数据类型0 .indexOf(text) = 0) 列数据宽度0 = 20; else if (列数据类型0 .indexOf(datetime) == 0) 列数据宽度0 = 16; else if (列数据类型0 .indexOf(float) == 0) 列数据宽度0 = 16; if (列数据宽度0 4) 列数据宽度0 = 4; b++; } int rowNumber=0; rs.last(); rowNumber=rs.getRow(); 表格数据0=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(b列数0){ 表格数据0 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); dbConn.close(); } catch(Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP)0) JOptionPane.showMessageDialog( null,所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800,600,列名0,列数据宽度0,表格数据0,列数据类型0); } }); SQL2按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { s1=SQL2文本域.getText(); dbConn=main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); 列数0=rsmd3.getColumnCount(); 列名0 = new String ; 列数据类型0 = new String ; 列数据宽度0 = new int ; for(int i=0; i列数0; i++) { 列名0 = rsmd3.getColumnName(i + 1); 列数据类型0 = rsmd3.getColumnTypeName(i+1); 列数据宽度0 = rsmd3.getColumnDisplaySize(i + 1); if (列数据类型0 .indexOf(int) = 0) 列数据宽度0 = 6 + 10; else if (列数据类型0 .indexOf(text) = 0) 列数据宽度0 = 20; else if (列数据类型0 .indexOf(datetime) == 0) 列数据宽度0 = 16; else if (列数据类型0 .indexOf(float) == 0) 列数据宽度0 = 16; if (列数据宽度0 4) 列数据宽度0 = 4; b++; } int rowNumber=0; rs.last(); rowNumber=rs.getRow(); 表格数据0=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(b列数0){ 表格数据0 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); dbConn.close(); } catch(Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP)0) JOptionPane.showMessageDialog( null,所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800,600,列名0,列数据宽度0,表格数据0,列数据类型0); } }); 退出按钮.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(SQL查询语句实验程序 作者:程学先); frame1.setBounds(0, 0,窗口宽, 窗口高); frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame1.getContentPane().setLayout(null); frame1.getContentPane().add(面板, null); frame1.setVisible(true); } public static void unrepeat() { //不允许重复的函数 DefaultListModel 选字段 = (DefaultListModel)列表框4.getModel(); int m = 选字段.getSize(); for(int i=0; im; i++) { for(int j=i+1; jm; j++) { if(选字段.elementAt(j).toString().trim().equals(选字段.elementAt(i).toString().trim())) { 选字段.removeElementAt(j); j--; m = 选字段.getSize(); } } } 列表框4.setModel(选字段); } } 5.源码5,部件程序,单表固定单字段、固定关系查询 /** * 程序文件名:dataQuery1.java * 作者:程学先,聂志恒 * 单位:湖北工业大学工程技术学院电气信息系 * 完成时间:2013年11月27日 * 部件功能:利用指定的字段和表达式进行单字段固定查询。 * 被调用语句:datadataQuery1.means(parameter); * 必须提供的参数:“数据表表名”、“查询字段号”、 “关系符”,这些参数由主程序带入。 * 操作方法与注意事项:因为该部件要求对指定的字段和指定的表达式查询,所以在“查询字段号” * 处只允许输入一个参数,在“关系符”处的参数只能从{大于、小于、等于、 * 大于等于、小于等于、不等于、包含、不包含}中选择一个, * 如果输入错误会导致程序显示错误或无法进行查询。 * 关于日期数据类型的查询,包含查询只能针对年份或月或日期……查,不能对yyyy-mm-dd包含查询 * datetime类型相等或不等查询要求至少输入yyyy-mm-dd, */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery1 extends JFrame { static dataQuery1 frame = new dataQuery1(); static String 表名=; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField; static JButton b1,b2; static String s1=; static ResultSet rs; static int b=0,c=0; static int 列数; static int 表格列数; static String 列名0; static String 关系表={{ ,大于},{ ,小于},{ = ,等于},{ = ,大于等于},{ = ,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; static String 列标题; static String 表列数据类型; static int 表列数据宽度; static int 记录条数, 记录条数1; static String 表格数据; static String 指定的字段名=,字段名串=; static String 指定的字段类型; static String 指定的表达式; static int 左边距=30; static String 打印格式文件名; static String 字段名字串; static String 按钮集=null; static String 要求按钮号表; static int 按钮数=0,按钮宽=0; public static void means(String = ; 关系表 =大于; 关系表 = ; 关系表 =小于; 关系表 = = ; 关系表 =等于; 关系表 = = ; 关系表 =大于等于; 关系表 = = ; 关系表 =小于等于; 关系表 = ; 关系表 =不等于; 关系表 = like ; 关系表 =包含; 关系表 = not like ; 关系表 =不包含; String ; 按钮数=0; for (int i0=0;i0按钮集01.length;i0++) 按钮集 = 按钮集01 ; if (parameter .length()0){ 要求按钮号表=parameter ;// 需要显示的按钮的顺序号 //将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表=要求按钮号表.replaceAll(;,;); 要求按钮号表=要求按钮号表.replaceAll(。,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); if (要求按钮号表.indexOf(;)0){ //如果有按钮更名要求 String s601 .indexOf(;)0){ String s602 .split(;); 按钮集 ))]=s602 ; 要求按钮号表=要求按钮号表+,+s602 ;//只留号,去更名 按钮数++; } else { 要求按钮号表=要求按钮号表+,+s601 ;//只留号,原无更名 按钮数++; } } } //如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表=要求按钮号表+,+s601 ; 按钮数++; } } } else { 要求按钮号表=; //没输入要求按钮号,定全部按钮号 for (int i1=0;i1按钮集.length;i1++){ if (i1==0) 要求按钮号表=要求按钮号表+i1; else 要求按钮号表=要求按钮号表+,+i1; 按钮数++; } } 要求按钮号表=,+要求按钮号表+,; 窗口宽=main1.窗口宽; 窗口高=main1.窗口高; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ;//宽度参数 m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } 窗口宽=m1 ; 窗口高=m2 ; } }catch(Exception e2){} 指定的表达式=parameter ; 表名=parameter ; // 数据表名 打印格式文件名=parameter ; 字段名字串=parameter ; if (字段名字串.lastIndexOf(,)==字段名字串.length()-1 ) 字段名字串=字段名字串.substring(0,字段名字串.length()-1); String .length()0){ 字段号表=parameter .split(,); 列名=new String ; for (int i=0;i字段号表.length;i++){ 列名 =s6 )]; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; } else { 列名=new String ; for (int i=0;is6.length;i++){ 列名 =s6 ; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; } String s4=parameter ; if (s4.indexOf(,)0){ String 列序号=new int ; 列名0=new String ; for (int i1=0;i1s3.length;i1++){ 列序号 =Integer.parseInt(s3 ); 列名0 =s6 ]; if (i1==0) 字段名串=列名0 ; else 字段名串=字段名串+,+列名0 ; } } else { int 列序号=Integer.parseInt(parameter ); 指定的字段名=s6 ; 字段名串=s6 ; } try { con=main1.getConn();// 连接数据库 sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (s2.length()0) s2=select +s2+ from +表名; else s2=select * from +表名; ResultSet rs=sta3.executeQuery(s2); //读取查询前全部数据 rsmd3 = rs.getMetaData(); 列数=rsmd3.getColumnCount(); 列名=new String ; 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i=0;i列数;i++) { 列名 = rsmd3.getColumnName(i + 1); // 获取列名存到数组中 列数据类型 = rsmd3.getColumnTypeName(i + 1); if (指定的字段名.equals(列名 )) 指定的字段类型=列数据类型 ; b++; } int rowNumber=0; //记录条数 rs.last(); rowNumber=rs.getRow(); 表格数据=new String ; rs.absolute(1); c=0; //行号 b=0; //列号 while(crowNumber) { rs.absolute(c+1); while(b列数){ 表格数据 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 } catch(SQLException e) { JOptionPane.showMessageDialog( null, 连接数据库出错!); } frame.setTitle(查询部件程序 作者:程学先,聂志恒); //窗口标题 frame.setBounds(10, 10,窗口宽-10,窗口高-10); //窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.getContentPane().setLayout(null); //关闭窗口布局管理器 final JPanel panel = new JPanel(false); //定义面板 panel.setLayout(null); //关闭面板布局管理器 panel.setBounds(20, 20,窗口宽-50,窗口高-20); tableModel = new DefaultTableModel(表格数据,列名); // 创建表格模型 table = new JTable(tableModel); // 创建指定表格模型的表格 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 60,窗口宽-100,窗口高-150); panel.add(scrollPane); JLabel label1=new JLabel(字段名串); label1.setBounds(左边距, 10 , 字段名串.length()*15, 20); panel.add(label1); JLabel label2=new JLabel(parameter ); label2.setBounds(左边距+字段名串.length()*15, 10 ,4*15, 20); panel.add(label2); aTextField = new JTextField(, 10); aTextField.setBounds(左边距+字段名串.length()*15+4*15, 10 ,150, 20); panel.add(aTextField); int 左边距=30+字段名串.length()*15+4*15+170; 按钮宽=(窗口宽-左边距-30)/按钮数; final JButton selectButton = new JButton(按钮集 ); //查询 selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try{ con=main1.getConn();// 连接数据库 sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for(int i=0;i关系表.length;i++){ if(关系表 .trim().equals(指定的表达式.trim())){ 指定的表达式=关系表 ; break; } } String s1=; if (字段名串.indexOf(,)0){ //单字段名 s1=select * from +表名+ where +指定的字段名+ ; String s2=指定的字段类型; //数据类型 String s3=aTextField.getText().trim(); //数据值 String s4=指定的表达式.trim(); //关系符 //如果查询对象是图形等类 if ((main1.图形数据类型.lastIndexOf(s2))=0){ JOptionPane.showMessageDialog(null,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); return; //如果查询对象是整型之类的数据, } else if(main1.数字数据类型.lastIndexOf(,+s2+,)=0){ //数字数据类型 if(s4.indexOf(like)=0){ JOptionPane.showMessageDialog(null,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else{ s1=s1+s4+s3.trim(); } } else if(main1.文本数据类型.lastIndexOf(s2)=0){ //判断如果是大数据类型 if(s4.equals(like)||s4.equals(not like)){ s3= '%+s3+%'; s1=s1+s4+s3; } else{ JOptionPane.showMessageDialog(null,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { if(s4.indexOf(like)=0) s3=%+s3+%; else { if ((s2.indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(null,日期时间类型进行查询时数据格式必须为yyyy-yy-dd,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((s2.indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.000 +08:00; } s1=s1+s4+'+s3+'; } } ResultSet rs=sta3.executeQuery(s1); int rowNumber=0; //记录条数 rs.last(); rowNumber=rs.getRow(); 表格数据=new String ; rs.absolute(1); c=0; //行号 b=0; //列号 while(crowNumber) { rs.absolute(c+1); while(b列数){ 表格数据 =rs.getString(b+1); b++; } c++; b=0; } printViewButton.setEnabled(true); printButton.setEnabled(true); rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 tableModel = new DefaultTableModel(表格数据,列名); table = new JTable(tableModel); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch(Exception e1) { JOptionPane.showMessageDialog( null, 查询数据出错!+s1); } } }); selectButton.setBounds(左边距, 10 ,按钮宽, 20); if (要求按钮号表.indexOf(,0,)=0) { 左边距=左边距+按钮宽; panel.add(selectButton); } printViewButton = new JButton(按钮集 ); printViewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPreview1.printView1(表格数据,打印格式文件名); } }); printViewButton.setBounds(左边距, 10 ,按钮宽, 20); if (要求按钮号表.indexOf(,1,)=0) { 左边距=左边距+按钮宽; panel.add(printViewButton); printViewButton.setEnabled(false); } printButton = new JButton(按钮集 ); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPrint1.print1(表格数据,打印格式文件名); } }); printButton.setBounds(左边距, 10 ,按钮宽, 20); if (要求按钮号表.indexOf(,2,)=0) { 左边距=左边距+按钮宽; panel.add(printButton); printButton.setEnabled(false); } final JButton exitButton = new JButton(按钮集 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(左边距, 10 ,按钮宽, 20); if (要求按钮号表.indexOf(,3,)=0) { 左边距=左边距+按钮宽; panel.add(exitButton); } frame.getContentPane().add(panel, null); //安装面板 frame.setVisible(true); //安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 6.源码6,部件程序,单表可选字段名、选择关系符单条件查询,可按字典表变换字段名。 /** * 作者:程学先,聂志恒 * 单位:湖工工程电气信息系11gb计算班 * 完成时间:2013年12月3日 * 部件功能:利用指定的字段和表达式进行多表单字段固定查询,可变换字段名。 * 多表包括代码表与字典表 * 被调用语句:datadataQuery2.means(parameter); * 必须提供的参数:“数据表表名”、“查询字段号”、 “关系符”,这些参数由主程序带入。 * 操作方法与注意事项:因为该部件要求对指定的字段和指定的表达式查询,所以在“查询字段号” * 处只允许输入一个参数,在“关系符”处的参数只能从{大于、小于、等于、 * 大于等于、小于等于、不等于、包含、不包含}中选择一个, * 如果输入错误会导致程序显示错误或无法进行查询。 * 关于日期数据类型的查询,包含查询只能针对年份或月或日期……查,不能对yyyy-mm-dd包含查询 * datetime类型相等或不等查询要求至少输入yyyy-mm-dd, * 如果涉及代码表,在生成菜单程序时,在填表名时,应当先在列表框中选主表,再依次选代码表。 * 如果涉及字典表,将根据字典表给定的对应关系变换标签,在选择表名时不要输入字典表的名称。 * 但是,要求在当前数据库中有一个表的名字为某某某字典表,即表名最后3个字是“字典表”,本程序将根据该表变换。 * 要求该表中只有二个字段,第一个字段(命名为字段名)中内容为所查询的数据表中字段名, * 第二个字段(命名为标签名)内容为变换后的标签名。 * 在当前数据库中最好不要有第二个名字中带“字典名”的表,如果必须有,请恰当取名, * 使本程序需要的字典表在表名表中排在前面(或手工修改菜单程序中“表名表”parameter 的内容。 * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery2 extends JFrame { static dataQuery2 frame = new dataQuery2(); static String 表名; static String 字典表名; static String 表名表; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField; static JButton b1,b2; static String s1=; static ResultSet rs; static int b=0,c=0; static int 列数; static int 表格列数; static String 列名; static String 列标题; static String 表列数据类型; static String 列数据宽度; static int 按钮集=null; static String 要求按钮号表; static int 按钮数=0,按钮宽=0; public static void means(String =; 关系表 =大于; 关系表 =; 关系表 =小于; 关系表 ==; 关系表 =等于; 关系表 ==; 关系表 =大于等于; 关系表 ==; 关系表 =小于等于; 关系表 =; 关系表 =不等于; 关系表 =$; 关系表 =包含; 关系表 =!$; 关系表 =不包含; String ; 按钮数=0; for (int i0=0;i0按钮集01.length;i0++) 按钮集 = 按钮集01 ; if (parameter .length()0){ 要求按钮号表=parameter ;// 需要显示的按钮的顺序号 //将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表=要求按钮号表.replaceAll(;,;); 要求按钮号表=要求按钮号表.replaceAll(。,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); if (要求按钮号表.indexOf(;)0){ //如果有按钮更名要求 String s601 .indexOf(;)0){ String s602 .split(;); 按钮集 ))]=s602 ; 要求按钮号表=要求按钮号表+,+s602 ;//只留号,去更名 按钮数++; } else { 要求按钮号表=要求按钮号表+,+s601 ;//只留号,原无更名 按钮数++; } } } //如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表=要求按钮号表+,+s601 ; 按钮数++; } } } else { 要求按钮号表=; //没输入要求按钮号,定全部按钮号 for (int i1=0;i1按钮集.length;i1++){ if (i1==0) 要求按钮号表=要求按钮号表+i1; else 要求按钮号表=要求按钮号表+,+i1; 按钮数++; } } 要求按钮号表=,+要求按钮号表+,; 窗口宽=main1.窗口宽; 窗口高=main1.窗口高; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ;//宽度参数 m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } 窗口宽=m1 ; 窗口高=m2 ; } }catch(Exception e2){} 关系符=parameter ; 表名=parameter ; 连接条件=parameter ; 字段名字串=parameter ; //全部字段名集 表名表=parameter ; if (关系符.length()1) 关系符=等于; if (字段名字串.lastIndexOf(,)==字段名字串.length()-1 ) 字段名字串=字段名字串.substring(0,字段名字串.length()-1); String .length()0){ 字段号表=parameter .split(,); 列名=new String ; for (int i=0;i字段号表.length;i++){ //所选字段号应当和全部字段顺序一致 列名 =s6 )]; //因此可以直接用S6得到列名 列名 =列名 ; //如果字典表中没有相应项,字段名就是标签名 if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; //全部字段名集更新 } else { 列名=new String ; for (int i=0;is6.length;i++){ 列名 =s6 ; 列名 =列名 ; //如果字典表中没有相应项,字段名就是标签名 if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; //全部字段名集更新 } String s11=表名; if (表名.indexOf(,)0){ String ; } 字典表名=; String .lastIndexOf(s11+字典表)=0) 字典表名=t1 ; } if (字典表名.length()0){ try { con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + 字典表名; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int 列数0=rsmd.getColumnCount(); int numberOfColumns=rsmd.getColumnCount(); //记录数 String s14=; String s15=; int b=1; while (rs.absolute(b)) { b++; s14=rs.getString(1).trim(); //字段名 s15=rs.getString(2).trim(); //标签名 for (int j=0;j列名 .length;j++){ if (列名 .trim().equalsIgnoreCase(s14.trim())){ 列名 =s15; break; } else if ((列名 .trim()+,).indexOf(.+s14+,)0){ 列名 =列名 .replace(s14,s15); break; } } } rs.close(); //关闭查询结果集 con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog( null, 连接数据库出错!); } } String s4=parameter ; if (s4.indexOf(,)0){ //欲查询的目标 字段名串=; 字段名串1=; String 列序号=new int ; 列名0=new String ; for (int i1=0;i1s3.length;i1++){ 列序号 =Integer.parseInt(s3 ); 列名0 =s6 ];//在所有表全部字段名中的排序 if (i1==0) { 字段名串=列名0 ; //原英文字段名串 } else { 字段名串=字段名串+,+列名0 ; } for (int j=0;j列名 .length;j++) if (列名0 .equalsIgnoreCase(列名 )) //字典变换后字段名串 if (i1==0) 字段名串1=列名 ; else 字段名串1=字段名串1+,+列名 ; } } else { //针对单字段查询 int 列序号=Integer.parseInt(parameter ); 指定的字段名=s6 ; 字段名串=s6 ; for (int j=0;j列名 .length;j++) if (字段名串.equalsIgnoreCase(列名 )) //字典变换后字段名串 字段名串1=列名 ; } try { con=main1.getConn();// 连接数据库 sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String s=; if (连接条件.trim().length()0) s=select +字段名字串+ from +表名+ where +连接条件; else //全部字段名集更新为输出字段名集 s=select +字段名字串+ from +表名; ResultSet rs=sta3.executeQuery(s); //显示表格数据 rsmd3 = rs.getMetaData(); 列数=rsmd3.getColumnCount(); 列数据类型 = new String ; 列数据宽度 = new int ; // 定义列数据宽度 for (int i=0;i列数;i++) { 列名 = rsmd3.getColumnName(i + 1).toString(); // 获取列名存到数组中 列数据类型 = rsmd3.getColumnTypeName(i + 1); // 获取列数据类型名存到数组中 if (指定的字段名.equals(列名 )) 指定的字段类型=列数据类型 ; b++; } int rowNumber=0; //记录条数 rs.last(); rowNumber=rs.getRow(); 表格数据=new String ; rs.absolute(1); c=0; //行号 b=0; //列号 while(crowNumber) { rs.absolute(c+1); while(b列数){ 表格数据 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 con.close(); } catch(SQLException e) { JOptionPane.showMessageDialog( null, 查询数据出错!); } frame.setTitle(查询部件程序 作者:程学先,聂志恒); //窗口标题 frame.setBounds(10, 10,窗口宽-10,窗口高-10); //窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.getContentPane().setLayout(null); //关闭窗口布局管理器 final JPanel panel = new JPanel(false); //定义面板 panel.setLayout(null); //关闭面板布局管理器 panel.setBounds(20, 20,窗口宽-50,窗口高-20); tableModel = new DefaultTableModel(表格数据,列名 ); // 创建表格模型 table = new JTable(tableModel); // 创建指定表格模型的表格 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30,60,窗口宽-100,窗口高-200); panel.add(scrollPane); //滚动条加到面板中 JLabel label1=new JLabel(字段名串1); label1.setBounds(左边距, 10 , 字段名串1.length()*15, 20); panel.add(label1); JLabel label2=new JLabel(parameter ); label2.setBounds(左边距+字段名串1.length()*15, 10,4*15, 20); panel.add(label2); aTextField = new JTextField(, 10); aTextField.setBounds(左边距+字段名串1.length()*15+4*15, 10,150, 20); panel.add(aTextField); int 左边距=30+字段名串1.length()*15+4*15+170; 按钮宽=(窗口宽-左边距-30)/按钮数; final JButton selectButton = new JButton(按钮集 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try{ con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for(int i=0;i关系表.length;i++){ if(关系表 .trim().equalsIgnoreCase(关系符.trim())){ 关系符=关系表 ; break; } } if (字段名串.indexOf(,)0) { //只选了单个字段名 if (main1.图形数据类型.lastIndexOf(,+指定的字段类型+,)=0){ JOptionPane.showMessageDialog( null, 图形数据类型不能进行查询!); return; } else if (main1.文本数据类型.lastIndexOf(,+指定的字段类型+,)=0) //文本数据类型 { if (关系符.trim().indexOf($)0) { JOptionPane.showMessageDialog( null, 大数据类型不能进行比较!);return;} else if (关系符.trim().indexOf(!)0) 关系符=指定的字段名+ like '%+aTextField.getText().trim()+%'; else 关系符=指定的字段名+ not like '%+aTextField.getText().trim()+%'; } else if (main1.数字数据类型.lastIndexOf(,+指定的字段类型+,)=0){ if (关系符.trim().indexOf($)=0) { JOptionPane.showMessageDialog( null, 数字数据类型不能进行包含查询!); return; } else 关系符=指定的字段名+ +关系符+aTextField.getText().trim(); } else if (main1.时间数据类型.lastIndexOf(,+指定的字段类型+,)=0){ if (关系符.trim().equalsIgnoreCase($)) 关系符=指定的字段名+ like '%+aTextField.getText().trim()+%'; else if (关系符.trim().equalsIgnoreCase(!$)) 关系符=指定的字段名+ not like '%+aTextField.getText().trim()+%'; else 关系符=指定的字段名+ +关系符+ '+aTextField.getText().trim()+'; } else { //字符字段 if (关系符.trim().equalsIgnoreCase($)) 关系符=指定的字段名+ like '%+aTextField.getText().trim()+%'; else if (关系符.trim().equalsIgnoreCase(!$)) 关系符=指定的字段名+ not like '%+aTextField.getText().trim()+%'; else 关系符=指定的字段名+ +关系符+ '+aTextField.getText().trim()+'; } if (字段名字串.lastIndexOf(,)==字段名字串.length()-1 ) 字段名字串=字段名字串.substring(0,字段名字串.length()-1); s1=select +字段名字串+ from +表名; //全部字段名集更新为输出字段名集 if (连接条件.trim().length()0) //多表 s1=s1+ where +连接条件+ and +关系符; else //单表 s1=s1+ where +关系符; } else { //选了多个字段条件 if (连接条件.trim().length()0) s1=select +字段名字串+ from +表名+ where +连接条件+ and (; else //全部字段名集更新为输出字段名集 s1=select +字段名字串+ from +表名+ where (; for (int i1=0;i1列名0.length;i1++){ if (i1==0) s1=s1+列名0 + like '%+aTextField.getText().trim()+%'; else s1=s1+ or +列名0 + like '%+aTextField.getText().trim()+%'; } s1=s1+); } ResultSet rs=sta3.executeQuery(s1); int rowNumber=0; //记录条数 rs.last(); rowNumber=rs.getRow(); 表格数据=new String ; c=0; //行号 b=0; //列号 while(crowNumber) { rs.absolute(c+1); while(b列数){ 表格数据 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 con.close(); tableModel = new DefaultTableModel(表格数据,列名 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch(Exception e1) { JOptionPane.showMessageDialog( null, 查询数据出错!+s1); } } }); selectButton.setBounds(左边距, 10 ,按钮宽, 20); if (要求按钮号表.indexOf(,0,)=0) { 左边距=左边距+按钮宽; panel.add(selectButton); } final JButton exitButton = new JButton(按钮集 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(左边距, 10 ,按钮宽, 20); if (要求按钮号表.indexOf(,1,)=0) { 左边距=左边距+按钮宽; panel.add(exitButton); } frame.getContentPane().add(panel, null); //安装面板 frame.setVisible(true); //安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1=str; int i=1; while(s1.indexOf(,)!=-1){ s1=s1.substring(s1.indexOf(,)+1,s1.length()); i++; } array=new String ; int j=0; while(str.indexOf(,)!=-1){ array =str.substring(0,str.indexOf(,)); str=str.substring(str.indexOf(,)+1,str.length()); array =str; j++; } return array; } } 7.源码7,部件程序,多表固定单字段、固定关系查询 /** * 程序文件名:dataQuery3.java * 作者:程学先 * 完成时间:2013年11月17日 * 部件功能:选择字段和关系符后进行单字段查询。 * 被调用语句:datadataQuery3.means(parameter); * 必须提供的参数:“表名”。 * 要求操作时先选择字段名和关系符,再输入查询目标数据,点击查询按钮后将结果以表格形式显示出来。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.io.*; public class dataQuery3 extends JFrame { static dataQuery3 frame = new dataQuery3(); static String 表名=; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static Choice choice,choice1; static JTextField aTextField; static JButton b1,b2; static String s1 = , s2 = ; static ResultSet rs; static int b=0,c=0; static int 列数; static int 表格列数; static String 列名0; static String 关系表={{ ,大于},{ ,小于},{ = ,等于},{ = ,大于等于},{ = ,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; static String 列标题; static String 表列数据类型; static String 字段名字串; static String 指定的字段名=,字段名串=,字段名串1=; static String 连接条件; static String 列数据宽度; static int 按钮集=null; static String 要求按钮号表; static int 按钮数=0,按钮宽=0; public static void means(String = ; 关系表 =大于; 关系表 = ; 关系表 =小于; 关系表 = = ; 关系表 =等于; 关系表 = = ; 关系表 =大于等于; 关系表 = = ; 关系表 =小于等于; 关系表 = ; 关系表 =不等于; 关系表 = like ; 关系表 =包含; 关系表 = not like ; 关系表 =不包含; String ; 按钮数=0; for (int i0=0;i0按钮集01.length;i0++) 按钮集 = 按钮集01 ; if (parameter .length()0){ 要求按钮号表=parameter ;// 需要显示的按钮的顺序号 //将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表=要求按钮号表.replaceAll(;,;); 要求按钮号表=要求按钮号表.replaceAll(。,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); if (要求按钮号表.indexOf(;)0){ //如果有按钮更名要求 String s601 .indexOf(;)0){ String s602 .split(;); 按钮集 ))]=s602 ; 要求按钮号表=要求按钮号表+,+s602 ;//只留号,去更名 按钮数++; } else { 要求按钮号表=要求按钮号表+,+s601 ;//只留号,原无更名 按钮数++; } } } //如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表=要求按钮号表+,+s601 ; 按钮数++; } } } else { 要求按钮号表=; //没输入要求按钮号,定全部按钮号 for (int i1=0;i1按钮集.length;i1++){ if (i1==0) 要求按钮号表=要求按钮号表+i1; else 要求按钮号表=要求按钮号表+,+i1; 按钮数++; } } 要求按钮号表=,+要求按钮号表+,; 窗口宽=main1.窗口宽; 窗口高=main1.窗口高; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ;//宽度参数 m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } 窗口宽=m1 ; 窗口高=m2 ; } }catch(Exception e2){} 表名=parameter ; // 数据表名 字段名字串=parameter ; 连接条件=parameter ; if (字段名字串.lastIndexOf(,)==字段名字串.length()-1 ) 字段名字串=字段名字串.substring(0,字段名字串.length()-1); String .length()0){ 字段号表=parameter .split(,); 列名=new String ; for (int i=0;i字段号表.length;i++){ 列名 =s6 )]; 列名 =列名 ; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; } else { 列名=new String ; for (int i=0;is6.length;i++){ 列名 =s6 ; 列名 =s6 ; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; s2= * ; } try { con=main1.getConn();// 连接数据库 sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=sta3.executeQuery(select +s2+ from +表名); rsmd3 = rs.getMetaData(); 列数=rsmd3.getColumnCount(); 列数据类型 = new String ; // 定义列字段类型数组 列数据宽度 = new int ; // 定义列数据宽度 for (int i=0;i列数;i++) { 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 =列名 .length(); if (列数据宽度 50) 列数据宽度 =50; b++; } int rowNumber=0; //记录条数 rs.last(); rowNumber=rs.getRow(); 表格数据=new String ; rs.absolute(1); c=0; //行号 b=0; //列号 while(crowNumber) { rs.absolute(c+1); while(b列数){ 表格数据 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 } catch(SQLException e) { JOptionPane.showMessageDialog( null, 读取数据出错!); } frame.setTitle(查询部件程序 作者:程学先); //窗口标题 frame.setBounds(10, 5,窗口宽-10,窗口高-10); //窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.getContentPane().setLayout(null); //关闭窗口布局管理器 final JPanel panel = new JPanel(false); //定义面板 panel.setLayout(null); //关闭面板布局管理器 panel.setBounds(20, 20,窗口宽-50,窗口高-20); tableModel = new DefaultTableModel(表格数据,列名); // 创建表格模型 table = new JTable(tableModel); // 创建指定表格模型的表格 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 scrollPane.getViewport().add(table, null); //表格加滚动条 scrollPane.setBounds(30, 40,窗口宽-100,窗口高-150); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i=0;i列数;i++) { TableColumn tc = table.getColumn(列名 );//返回表格的列对象 tc.setPreferredWidth(列数据宽度 *12); } panel.add(scrollPane); JLabel label=new JLabel(请选择字段名:); label.setBounds(20,5, 100, 20); panel.add(label); choice = new Choice(); s6=字段名字串.split(,); for (int i=0;is6.length;i++) { choice.add(s6 ); } choice.setBounds(130, 5 , 100,60); panel.add(choice); choice1 = new Choice(); for (int i=0;i8;i++) { choice1.add(关系表 ); } choice1.setBounds(240, 5 ,80,60); panel.add(choice1); aTextField = new JTextField( , 10); aTextField.setBounds(330, 5 ,150, 20); panel.add(aTextField); 按钮宽=(窗口宽-520)/按钮数; int 左边距=490; final JButton selectButton = new JButton(按钮集 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try{ con=main1.getConn();// 连接数据库 sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String s0=; String s1=choice.getSelectedItem(); //字段名 String s2=列数据类型 ; String s3=aTextField.getText().trim(); //数据值 String s4=关系表 ; //关系符 if ((main1.图形数据类型.lastIndexOf(s2))=0){ JOptionPane.showMessageDialog(null,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if(main1.数字数据类型.lastIndexOf(,+s2+,)=0){ //数字数据类型 if(s4.indexOf(like)=0){ JOptionPane.showMessageDialog(null,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else{ s1=s1+s4+s3.trim(); } } else if(main1.文本数据类型.lastIndexOf(s2)=0){ //判断如果是大数据类型 if(s4.indexOf(like)=0){ s3= '%+s3+%'; s1=s1+s4+s3; } else{ JOptionPane.showMessageDialog(null,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { //如果查询对象是字符类型、日期类型 if(s4.indexOf(like)=0) s3=%+s3+%; else { if ((s2.indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(null,日期时间类型进行查询时数据格式必须为yyyy-yy-dd,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((s2.indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.000 +08:00; } s1=s1+s4+'+s3+'; } if (s1.length()1) s0= where +s1; s0=select +字段名字串+ from +表名+s0; ResultSet rs=sta3.executeQuery(s0); int rowNumber=0; //记录条数 rs.last(); rowNumber=rs.getRow(); rsmd3 = rs.getMetaData(); 列数=rsmd3.getColumnCount(); //获取列数 表格数据=new String ; rs.absolute(1); c=0; //行号 b=0; //列号 while(crowNumber) { rs.absolute(c+1); while(b列数){ 表格数据 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 tableModel = new DefaultTableModel(表格数据,列名); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.setViewportView(table); } catch(Exception e1) { JOptionPane.showMessageDialog( null, 查询数据出错!+s1); } } }); selectButton.setBounds(左边距, 窗口高-100 ,按钮宽, 20); if (要求按钮号表.indexOf(,0,)=0) { 左边距=左边距+按钮宽; panel.add(selectButton); } final JButton exitButton = new JButton(按钮集 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(左边距, 窗口高-100 ,按钮宽, 20); if (要求按钮号表.indexOf(,1,)=0) { 左边距=左边距+按钮宽; panel.add(exitButton); } frame.getContentPane().add(panel, null); //安装面板 frame.setVisible(true); //安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 8.源码8,部件程序,多表可选字段名、选择关系符单条件查询,可按字典表变换字段名。 /** * 程序文件名:dataQuery4.java * 作者:程学先 * 完成时间:2013年11月17日 * 部件功能:可指定多数据表,选择字段、选择关系条件、输入查询数据之后做多表数据查询并显示结果。 * 可变换字段名 * 被调用语句:datadataQuery4.means(parameter); * 要求提供的参数:“表名”,内容可以包括数据表与代码表、,这些参数由菜单程序带入。 * 如果涉及代码表,在生成菜单程序时,在填表名时,应当先在列表框中选主表,再依次选代码表。 * 还可以涉及字典表,将根据字典表给定的对应关系变换标签,在生成菜单程序时不要输入字典表的名称。 * 但是,要求在当前数据库中有一个表的名字为某某某字典表,即表名最后3个字是“字典表”,本程序将根据该表变换。 * 要求该表中只有二个字段,第一个字段(命名为字段名)中内容为所查询的数据表中字段名, * 第二个字段(命名为标签名)内容为变换后的标签名。 * 在当前数据库中最好不要有第二个名字中带“字典名”的表,如果必须有,请恰当取名,使本程序需要的字典表 * 在表名表中排在前面(或手工修改菜单程序中“表名表”parameter 的内容。 * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery4 extends JFrame { static dataQuery4 frame = new dataQuery4(); static String 表名; static String 字典表名; static String 表名表; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField; static JButton b1,b2; static String s1=; static ResultSet rs; static int b=0,c=0; static int 列数; static int 表格列数; static String 列名; static String 关系表={{ ,大于},{ ,小于},{ = ,等于},{ = ,大于等于},{ = ,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; static String 列数据类型; static String 列数据宽度; static int 字段号表; static int 左边距=80; static Connection con; // 连接数据库 static ResultSetMetaData rsmd3; static Statement sta3; static int 窗口宽 = 1000, 窗口高 = 600;// 窗口高 static String parameter) { frame = new dataQuery4(); 表名=; scrollPane = new JScrollPane(); s1=; b=0;c=0; 左边距=80;窗口宽 = 1000; 窗口高 = 700; 关系表 = ; 关系表 =大于; 关系表 = ; 关系表 =小于; 关系表 = = ; 关系表 =等于; 关系表 = = ; 关系表 =大于等于; 关系表 = = ; 关系表 =小于等于; 关系表 = ; 关系表 =不等于; 关系表 = like ; 关系表 =包含; 关系表 = not like ; 关系表 =不包含; String ; 按钮数=0; for (int i0=0;i0按钮集01.length;i0++) 按钮集 = 按钮集01 ; if (parameter .length()0){ 要求按钮号表=parameter ;// 需要显示的按钮的顺序号 //将中文分号、冒号、句号、英文分号统一为英文分号 要求按钮号表=要求按钮号表.replaceAll(;,;); 要求按钮号表=要求按钮号表.replaceAll(。,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); 要求按钮号表=要求按钮号表.replaceAll(:,;); if (要求按钮号表.indexOf(;)0){ //如果有按钮更名要求 String s601 .indexOf(;)0){ String s602 .split(;); 按钮集 ))]=s602 ; 要求按钮号表=要求按钮号表+,+s602 ;//只留号,去更名 按钮数++; } else { 要求按钮号表=要求按钮号表+,+s601 ;//只留号,原无更名 按钮数++; } } } //如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样 else { String s601 ; else 要求按钮号表=要求按钮号表+,+s601 ; 按钮数++; } } } else { 要求按钮号表=; //没输入要求按钮号,定全部按钮号 for (int i1=0;i1按钮集.length;i1++){ if (i1==0) 要求按钮号表=要求按钮号表+i1; else 要求按钮号表=要求按钮号表+,+i1; 按钮数++; } } 要求按钮号表=,+要求按钮号表+,; 窗口宽=main1.窗口宽; 窗口高=main1.窗口高; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ;//宽度参数 m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } 窗口宽=m1 ; 窗口高=m2 ; } }catch(Exception e2){} 表名=parameter ; 连接条件=parameter ; 表名表=parameter ; 字段名字串=parameter ; if (字段名字串.lastIndexOf(,)==字段名字串.length()-1 ) 字段名字串=字段名字串.substring(0,字段名字串.length()-1); String .length()0){ 字段号表=parameter .split(,); 列名=new String ; for (int i=0;i字段号表.length;i++){ 列名 =s6 )]; 列名 =列名 ; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; } else { 列名=new String ; for (int i=0;is6.length;i++){ 列名 =s6 ; 列名 =s6 ; if (s2.length()0) s2=s2+,+列名 ; else s2=列名 ; } 字段名字串=s2; s2= * ; } String s11=表名; if (表名.indexOf(,)0){ String ; } String .lastIndexOf(s11+字典表)=0) 字典表名=t1 ; } if (字典表名.length()0){ try { con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + 字典表名; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int 列数0=rsmd.getColumnCount(); int numberOfColumns=rsmd.getColumnCount(); //记录数 String s14=; String s15=; int b=1; while (rs.absolute(b)) { b++; s14=rs.getString(1); //字段名 s15=rs.getString(2); //标签名 for (int j=0;j列名 .length;j++){ if ((列名 .trim().equals(s14.trim()))||(列名 .indexOf(.+s14)0)){ 列名 =s15; break; } } } rs.close(); //关闭查询结果集 con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog( null, 连接数据库出错!); } } try { con=main1.getConn();// 连接数据库 sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String s; if (连接条件.trim().length()0) s=select +字段名字串+ from +表名+ where +连接条件; else s=select +字段名字串+ from +表名; ResultSet rs=sta3.executeQuery(s); rsmd3 = rs.getMetaData(); 列数=rsmd3.getColumnCount(); 列数据类型 = new String ; 列数据宽度 = new int ; // 定义列数据宽度 for (int i=0;i列数;i++) { 列数据类型 = rsmd3.getColumnTypeName(i + 1); 列数据宽度 = rsmd3.getColumnDisplaySize(i + 1); if (列数据宽度 列名 .length()) 列数据宽度 =列名 .length(); if (列数据宽度 50) 列数据宽度 =50; b++; } int rowNumber=0; //记录条数 rs.last(); rowNumber=rs.getRow(); 表格数据=new String ; rs.absolute(1); c=0; //行号 b=0; //列号 while(crowNumber) { rs.absolute(c+1); while(b列数){ 表格数据 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 con.close(); } catch(SQLException e) { JOptionPane.showMessageDialog( null, 查询数据出错!); } frame.setTitle(查询部件程序 作者:程学先); //窗口标题 frame.setBounds(10, 10,窗口宽-10,窗口高-10); //窗口位置大小 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame.getContentPane().setLayout(null); //关闭窗口布局管理器 final JPanel panel = new JPanel(false); //定义面板 panel.setLayout(null); //关闭面板布局管理器 panel.setBounds(20, 20,窗口宽-50,窗口高-20); tableModel = new DefaultTableModel(表格数据,列名 ); // 创建表格模型 table = new JTable(tableModel); // 创建指定表格模型的表格 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 60,窗口宽-100,窗口高-200); for (int i=0;i列数;i++) { TableColumn tc = table.getColumn(列名 ); tc.setPreferredWidth(列数据宽度 *12); } panel.add(scrollPane); JLabel label=new JLabel(请选择字段名:); label.setBounds(20,10, 100, 20); panel.add(label); final Choice choice = new Choice(); for (int i=0;i列数;i++) { choice.add(列名 ); } choice.setBounds(130, 10 , 100,60); panel.add(choice); final Choice choice1 = new Choice(); for (int i=0;i8;i++) { choice1.add(关系表 ); } choice1.setBounds(240, 10 ,80,60); panel.add(choice1); aTextField = new JTextField(, 10); aTextField.setBounds(330, 10 ,150, 20); panel.add(aTextField); 按钮宽=(窗口宽-480)/按钮数; int 左边距=450; final JButton selectButton = new JButton(按钮集 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s0=; try{ con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); int 选中列号=Integer.valueOf(choice.getSelectedIndex()); String s1=列名 ; //字段名变换 String s2=列数据类型 ; String s3=aTextField.getText().trim(); //数据值 String s4=关系表 ; //关系符 if ((main1.图形数据类型.lastIndexOf(s2))=0){ JOptionPane.showMessageDialog(null,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if(main1.数字数据类型.lastIndexOf(,+s2+,)=0){ //数字数据类型 if(s4.indexOf(like)=0){ JOptionPane.showMessageDialog(null,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else{ s1=s1+s4+s3.trim(); } } else if(main1.文本数据类型.lastIndexOf(s2)=0){ //判断如果是大数据类型 if(s4.indexOf(like)=0){ s3= '%+s3+%'; s1=s1+s4+s3; } else{ JOptionPane.showMessageDialog(null,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { //如果查询对象是字符串类型、时间数据类型 if(s4.indexOf(like)=0) s3=%+s3+%; else { if ((s2.indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(null,日期时间类型进行查询时数据格式必须为yyyy-yy-dd,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((s2.indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.000 +08:00; } s1=s1+s4+'+s3+'; } if (连接条件.trim().length()0) s0= where +连接条件+ and +s1; else if (s1.length()1) s0= where +s1; s0=select +字段名字串+ from +表名+s0; ResultSet rs=sta3.executeQuery(s0); int rowNumber=0; //记录条数 rs.last(); rowNumber=rs.getRow(); rsmd3 = rs.getMetaData(); 列数=rsmd3.getColumnCount(); 表格数据=new String ; c=0; //行号 b=0; //列号 while(crowNumber) { rs.absolute(c+1); while(b列数){ 表格数据 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); //关闭查询结果集 sta3.close(); //关闭连接 con.close(); tableModel = new DefaultTableModel(表格数据,列名 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch(Exception e1) { JOptionPane.showMessageDialog( null, 查询数据出错!+s0); } } }); selectButton.setBounds(左边距, 10 ,按钮宽, 20); if (要求按钮号表.indexOf(,0,)=0) { 左边距=左边距+按钮宽; panel.add(selectButton); } final JButton exitButton = new JButton(按钮集 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(左边距, 10 ,按钮宽, 20); if (要求按钮号表.indexOf(,1,)=0) { 左边距=左边距+按钮宽; panel.add(exitButton); } frame.getContentPane().add(panel, null); //安装面板 frame.setVisible(true); //安装窗口 frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1=str; int i=1; while(s1.indexOf(,)!=-1){ s1=s1.substring(s1.indexOf(,)+1,s1.length()); i++; } array=new String ; int j=0; while(str.indexOf(,)!=-1){ array =str.substring(0,str.indexOf(,)); str=str.substring(str.indexOf(,)+1,str.length()); array =str; j++; } return array; } } 版本2 4.源码4,查询SQL语句辅助生成实验工具程序 /* * 程序文件名:dataQuery.java * 作者:程学先 * 完成时间:2013年11月27日 * 程序功能:SQL查询语句实验程序,辅助生成SQL语句。可对多数据表进行组合查询。 */ import java.awt.*; import java.io.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.DefaultTableModel; import java.sql.*; public class dataQuery extends JFrame { static dataQuery frame1 = new dataQuery(); static String variabl2259={{,大于},{,小于},{=,等于},{=,大于等于}, {=,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}, { is null ,等于空},{ is not null ,不等于空},{ between ,在 and 之间(二数中间加and)},{ in ,在( , , )之中(二边加括号,数间加逗号)}, }; private static DefaultListModel fModel = new DefaultListModel(); private static DefaultListModel dModel = new DefaultListModel(); private static String curTableName = ; private static JPanel variabl2613 = new JPanel(false); private static int variabl2483=1000,variabl2503=640; private static Connection dbConn = null; static Statement sta3; static ResultSet rs; static ResultSetMetaData rsmd3; static String variabl2603; static String variabl1873; static String variabl2429=,; static String ; static String variabl15010; static int variabl1787; static String variabl2107=,variabl1961=,variabl1867=; static String variabl1983=,variabl19832=,variabl1797=,variabl1721=; static String variabl19531=,variabl19532=,variabl19533=,variabl19534=,variabl19535=; static String variabl19536=,variabl16831=,variabl16832=,variabl18512=; static JComboBox variabl1681 = new JComboBox(); static JButton variabl1167 = new JButton(); static JComboBox variabl23595 = new JComboBox(); static JComboBox variabl23596 = new JComboBox(); static JComboBox variabl23597 = new JComboBox(); static JComboBox variabl2151 = new JComboBox(); static JTextArea variabl2463 = new JTextArea(); static JTextArea variabl1497 = new JTextArea(); static JTextArea variabl1451 = new JTextArea(); static JTextArea variabl1083 = new JTextArea(); static JTextArea variabl1099 = new JTextArea(); static JScrollPane variabl1035 = new JScrollPane(variabl1497); static JScrollPane variabl1043 = new JScrollPane(variabl1451); static JScrollPane variabl1007 = new JScrollPane(variabl1083); static JScrollPane variabl1011 = new JScrollPane(variabl1099); static JLabel variabl2377 = new JLabel(); static JLabel variabl1557 = new JLabel(); static JLabel variabl15111 = new JLabel(); static JLabel variabl15112 = new JLabel(); static JLabel variabl1671 = new JLabel(); static JTextField variabl2351 = new JTextField(); static java.awt.List variabl23111 = new java.awt.List(); static JList variabl23113 = new JList(); static JList variabl23114 = new JList(); static JTextField variabl1259 = new JTextField(); static JTextField variabl1677 = new JTextField(100); static JTextField variabl1709 = new JTextField(); static HashSet set1=new HashSet(); static JButton variabl2081 = new JButton(); static JButton variabl2007 = new JButton(); static JButton variabl20072 = new JButton(); static JRadioButton variabl2597 = new JRadioButton(); static JRadioButton variabl2579 = new JRadioButton(); static JButton variabl1219 = new JButton(); static JButton variabl1247 = new JButton(); static char x1=10,x2=13; public static void selectQuery0(){ variabl23113.removeAll(); variabl2603=s1; variabl2429=variabl2429+s1+,; variabl25710++; try { dbConn=main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=sta3.executeQuery(select * from +variabl2603); rsmd3 = rs.getMetaData(); int n=rsmd3.getColumnCount(); int m=0; variabl25170=new String ; for(int i=0; in; i++) { variabl25170 =rsmd3.getColumnName(i + 1); variabl2517 = variabl2603; if (variabl25710==1) {variabl19531=variabl19531+variabl25170 +,;variabl2107=variabl2603;} else if (variabl25710==2) variabl1961=variabl2603; else if (variabl25710==3) variabl1867=variabl2603; variabl2517 = variabl25170 ; variabl2517 = ; variabl2517 =rsmd3.getColumnTypeName(i+1); m=rsmd3.getColumnDisplaySize(i + 1); if (mvariabl2517 .length()) m=variabl2517 .length(); variabl2517 =+m; set1.add(variabl25170 ); if (set1.size()!=variabl26510){ DefaultListModel variabl2467 = (DefaultListModel)variabl23113.getModel(); variabl2467.addElement(variabl25170 ); variabl23113.setModel(variabl2467); variabl23595.addItem(variabl25170 ); variabl26510++; } variabl2613.add(variabl23595, null); variabl2651++; } if (variabl19531.length()0) variabl19531=variabl19531.substring(0,variabl19531.length()-1); rs.close(); sta3.close(); dbConn.close(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String ; variabl2107=;variabl1961=;variabl1867=; variabl1983=;variabl19832=;variabl1797=;variabl1721=; variabl19531=;variabl19532=;variabl19533=;variabl19534=;variabl19535=; variabl19536=;variabl16831=;variabl16832=;variabl18512=; variabl1681 = new JComboBox(); variabl1167 = new JButton(); variabl23595 = new JComboBox(); variabl23596 = new JComboBox(); variabl23597 = new JComboBox(); variabl2151 = new JComboBox(); variabl2463 = new JTextArea(); variabl1497 = new JTextArea(); variabl1451 = new JTextArea(); variabl1083 = new JTextArea(); variabl1099 = new JTextArea(); variabl1035 = new JScrollPane(variabl1497); variabl1043 = new JScrollPane(variabl1451); variabl1007 = new JScrollPane(variabl1083); variabl1011 = new JScrollPane(variabl1099); variabl2377 = new JLabel(); variabl1557 = new JLabel(); variabl15111 = new JLabel(); variabl15112 = new JLabel(); variabl1671 = new JLabel(); variabl2351 = new JTextField(); variabl23111 = new java.awt.List(); variabl23113 = new JList(); variabl23114 = new JList(); variabl1259 = new JTextField(); variabl1677 = new JTextField(100); variabl1709 = new JTextField(); set1=new HashSet(); variabl2081 = new JButton(); variabl2007 = new JButton(); variabl20072 = new JButton(); variabl2597 = new JRadioButton(); variabl2579 = new JRadioButton(); variabl1219 = new JButton(); variabl1247 = new JButton(); x1=10;x2=13; variabl2259 = ; variabl2259 =大于; variabl2259 = ; variabl2259 =小于; variabl2259 = = ; variabl2259 =等于; variabl2259 = = ; variabl2259 =大于等于; variabl2259 = = ; variabl2259 =小于等于; variabl2259 = ; variabl2259 =不等于; variabl2259 = like ; variabl2259 =包含; variabl2259 = not like ; variabl2259 =不包含; JLabel variabl1365 = new JLabel(); JLabel variabl1999 = new JLabel(); JLabel variabl2169 = new JLabel(); JScrollPane variabl12271 = new JScrollPane(variabl23111); JScrollPane variabl12273 = new JScrollPane(variabl23113); JButton variabl1917 = new JButton(); JButton variabl1435 = new JButton(); JButton variabl1711 = new JButton(); JButton variabl2037 = new JButton(); JButton variabl1915 = new JButton(); JButton variabl1457 = new JButton(); JButton variabl1329 = new JButton(); JScrollPane variabl1073 = new JScrollPane(variabl23114); Border border1; JLabel variabl1285 = new JLabel(); JButton variabl1653 = new JButton(); JButton variabl1545 = new JButton(); JButton variabl1551 = new JButton(); JButton variabl1723 = new JButton(); JButton variabl1405 = new JButton(); JScrollPane variabl1147 = new JScrollPane(variabl2463); JLabel variabl1909 = new JLabel(); JLabel variabl1945 = new JLabel(); JLabel variabl1289 = new JLabel(); JLabel variabl1705 = new JLabel(); JButton variabl1279 = new JButton(); JButton variabl2077 = new JButton(); JButton variabl1865 = new JButton(); ButtonGroup variabl2397 = new ButtonGroup(); JButton variabl1297 = new JButton(); JPanel variabl2433 = new JPanel(); Border border2; TitledBorder titledBorder1; JPanel variabl24332 = new JPanel(); Border border3; TitledBorder titledBorder2; JButton variabl16532 = new JButton(); border1 = BorderFactory.createEtchedBorder(UIManager.getColor( InternalFrame.activeTitleForeground), new Color(178, 175, 168)); border2 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder1 = new TitledBorder(border2, 形成查询条件); border3 = BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)); titledBorder2 = new TitledBorder(border3, 添加查询条件组合符号); variabl1999.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1999.setPreferredSize(new Dimension(57, 16)); variabl1999.setRequestFocusEnabled(true); variabl1999.setText(选择数据表名,第2表起:); variabl1999.setBounds(new Rectangle(16, 13,182, 16)); variabl1999.setForeground(Color.red); variabl1945.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1945.setText(左键连接,右键特殊连接。); variabl1945.setBounds(new Rectangle(16, 31, 177, 16)); variabl1945.setForeground(Color.red); variabl23111.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23111.setBounds(new Rectangle(16, 50, 138, 150)); variabl12271.setFont(new java.awt.Font(Dialog, 0, 12)); variabl12271.setBorder(border1); variabl12271.setBounds(new Rectangle(13, 49, 138, 160)); try { String .trim().equals(variabl2517 .trim())){ variabl1595=variabl25170 ; variabl2517 =重复; variabl2517 =重复; variabl1793=variabl2517 ; variabl2153=variabl25170 ; variabl1875=s1; if (variabl2107.trim().equals(variabl1793.trim())) variabl19532=variabl2517 ; else if (variabl1961.trim().equals(variabl1793.trim())) variabl16832=variabl2517 ; else if (variabl1867.trim().equals(variabl1793.trim())) variabl18512=variabl2517 ; } } if (variabl1497.getText().length()1){ variabl1497.setText(s1); variabl1451.setText(s1); } else { Object ); if (variabl2399==null) return; if ((variabl2399.toString().trim().equals(等值连接))(variabl1451.getText().length()0)(variabl1451.getText().lastIndexOf(JOIN)0)){ JOptionPane.showMessageDialog( null, 不能有二种连接表达式,+x1+x2+ 请删除文本框中不相容数据后再操作,+x1+x2+或者重选连接类型。); return; } else if ((! variabl2399.toString().trim().equals(等值连接)) (variabl1451.getText().length()0) (variabl1451.getText().lastIndexOf(=)0) (variabl1451.getText().lastIndexOf(JOIN)0)){ JOptionPane.showMessageDialog( null, 不能有二种连接表达式,+x1+x2+ 请删除文本框中不相容数据后再操作,+x1+x2+或者重选连接类型。); return; } variabl1497.setText(variabl1497.getText()+x1+x2+variabl23111.getSelectedItem()); s2=;s3=; int k=0; if (variabl1451.getText().length()0) for (int i=0;ivariabl1451.getText().length();i++){ if ((variabl1451.getText().substring(i,i+1).equals(+x1))|| (variabl1451.getText().substring(i,i+1).equals(+x2))){ k=1; continue; } else if (variabl1451.getText().substring(i,i+1).equals(x2)) continue; else if (k==0) s2=s2+variabl1451.getText().substring(i,i+1); else s3=s3+variabl1451.getText().substring(i,i+1); } String variabl2385=; if (variabl2399.toString().trim().equals(JOIN连接)){ if (variabl2249.length()1){ s2=s2+ JOIN +s1; s3= on +variabl2249+.+variabl1595+=+s1+.+variabl1595+ ; s2=s2+x1+x2+s3; } else{ s3= on +variabl1961+.+variabl1595+=+variabl1867+.+variabl1595; s2=variabl1451.getText()+x1+x2+ JOIN +s1+x1+x2+s3+ ; } } else if (variabl2399.toString().trim().equals(左连接)){ if ((variabl1867.length()1)(variabl1961.length()0)){ s2=variabl2107+ LEFT JOIN +variabl1961; s3= on +variabl2107+.+variabl1595+=+variabl1961+.+variabl1595; s2=s2+x1+x2+s3; } else if (variabl1867.length()0){ s3= on +variabl1961+.+variabl1595+=+variabl1867+.+variabl1595; s2=variabl1451.getText()+x1+x2+ LEFT JOIN +s1+x1+x2+s3+ ; } } else if (variabl2399.toString().trim().equals(右连接)){ if (variabl1451.getText().length()1){ s2=s2+ RIGHT JOIN +s1; s3= on +variabl2107+.+variabl1595+=+s1+.+variabl1595; s2=s2+x1+x2+s3; } else{ s3= on +variabl1961+.+variabl1595+=+variabl1867+.+variabl1595; s2=variabl1451.getText()+x1+x2+ RIGHT JOIN +s1+x1+x2+s3+ ; } } if (variabl2399.toString().trim().equals(全连接)){ if (variabl1451.getText().length()1){ s2=s2+ FULL JOIN +s1; s3= on +variabl2107+.+variabl1595+=+s1+.+variabl1595; s2=s2+x1+x2+s3; } else{ s3= on +variabl1961+.+variabl1595+=+variabl1867+.+variabl1595; s2=variabl1451.getText()+x1+x2+ FULL JOIN +s1+x1+x2+s3+ ; } } else if (variabl2399.toString().trim().equals(等值连接)){ if ((s2.length()0)(s2.lastIndexOf(=)0)) s2=; if (s2.length()0) s2=s2+x1+x2+ and ; s2=s2+ +variabl1793+.+variabl2153+=+variabl1875+.+variabl2153+ +s3; } variabl1451.setText(s2); } } }); variabl2377.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2377.setPreferredSize(new Dimension(57, 16)); variabl2377.setRequestFocusEnabled(true); variabl2377.setText(所选择数据表名); variabl2377.setBounds(155,13,182, 16); variabl1035.setBorder(border1); variabl1035.setBounds(new Rectangle(155,30, 280, 80)); variabl1497.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1497.setText(); variabl1557.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1557.setPreferredSize(new Dimension(57, 16)); variabl1557.setRequestFocusEnabled(true); variabl1557.setText(所选连接条件集); variabl1557.setBounds(155,110,182, 16); variabl1043.setBorder(border1); variabl1043.setBounds(new Rectangle(155, 130,280,80)); variabl1451.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1451.setText(); variabl1365.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1365.setPreferredSize(new Dimension(57, 16)); variabl1365.setRequestFocusEnabled(true); variabl1365.setText(选择字段名); variabl1365.setBounds(new Rectangle(16+430, 13, 82, 16)); variabl2169.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2169.setText(选择关系符); variabl2169.setBounds(new Rectangle(164+430, 13, 81, 16)); variabl1681.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1681.setAlignmentY( (float) 0.5); variabl1681.setBorder(BorderFactory.createLineBorder(Color.black)); variabl1681.setDoubleBuffered(false); variabl1681.setActionCommand(comboBoxChanged); variabl1681.setEditable(true); variabl1681.setBounds(new Rectangle(374+430, 28, 157, 22)); variabl2613.setLayout(null); variabl2613.setLayout(null); variabl2613.setBounds(10, 10,variabl2483-10,variabl2503-10); variabl23595.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23595.setBorder(BorderFactory.createLineBorder(Color.black)); variabl23595.setBounds(new Rectangle(14+430, 29, 118, 22)); variabl2151.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2151.setBorder(BorderFactory.createLineBorder(Color.black)); variabl2151.setBounds(new Rectangle(146+430, 29, 216, 22)); variabl1285.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1285.setText(输入值); variabl1285.setBounds(new Rectangle(380+430, 13, 42, 16)); variabl1167.setBounds(new Rectangle(8, 25, 85, 28)); variabl1167.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1167.setBorder(border1); variabl1167.setBorderPainted(true); variabl1167.setText(添加条件); variabl1653.setBounds(new Rectangle(98, 26, 79, 28)); variabl1653.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1653.setBorder(border1); variabl1653.setBorderPainted(true); variabl1653.setText(清空条件); variabl1545.setBounds(new Rectangle(7, 27, 60, 25)); variabl1545.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1545.setBorder(border1); variabl1545.setBorderPainted(true); variabl1545.setText((); variabl1551.setText(AND); variabl1551.setBounds(new Rectangle(73, 27, 62, 25)); variabl1551.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1551.setBorder(border1); variabl1551.setBorderPainted(true); variabl1723.setText(OR); variabl1723.setBounds(new Rectangle(141, 27, 59, 25)); variabl1723.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1723.setBorder(border1); variabl1723.setBorderPainted(true); variabl1723.setRolloverEnabled(true); variabl1723.setSelected(false); variabl1297.setBorderPainted(true); variabl1297.setBorder(border1); variabl1297.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1297.setBounds(new Rectangle(204, 27, 58, 25)); variabl1297.setText(NOT); variabl1405.setText()); variabl1405.setBounds(new Rectangle(266, 26, 52, 25)); variabl1405.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1405.setBorder(border1); variabl1405.setBorderPainted(true); variabl2433.setFont(new java.awt.Font(Dialog, 0, 13)); variabl2433.setBorder(titledBorder1); variabl2433.setBounds(new Rectangle(12+430, 56, 184, 64)); variabl2433.setLayout(null); variabl24332.setBorder(titledBorder2); variabl24332.setBounds(new Rectangle(208+430, 56, 325, 64)); variabl24332.setLayout(null); variabl12273.setFont(new java.awt.Font(Dialog, 0, 12)); variabl12273.setBorder(border1); variabl12273.setBounds(new Rectangle(13, 238, 138, 340)); variabl23113.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23113.setBorder(border1); variabl23113.setBounds(new Rectangle(13+430, 238, 138, 280)); variabl23113.setModel(fModel); variabl1711.setBounds(new Rectangle(160, 220, 114, 25)); variabl1711.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1711.setBorder(border1); variabl1711.setText(移进字段》); variabl2037.setBounds(new Rectangle(160, 247, 114, 25)); variabl2037.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2037.setBorder(border1); variabl2037.setText(全选字段》); variabl1917.setBounds(new Rectangle(159, 274, 114, 25)); variabl1917.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1917.setBorder(border1); variabl1917.setText(《移出字段); variabl1329.setBounds(new Rectangle(159, 301, 115, 25)); variabl1329.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1329.setBorder(border1); variabl1329.setText(加入求最大值字段); variabl1457.setBounds(new Rectangle(159, 328, 115, 25)); variabl1457.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1457.setBorder(border1); variabl1457.setText(加入求最小值字段); variabl1915.setBounds(new Rectangle(159, 355, 116, 25)); variabl1915.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1915.setBorder(border1); variabl1915.setText(加入求和字段); variabl1435.setBounds(new Rectangle(159, 382, 114, 25)); variabl1435.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1435.setBorder(border1); variabl1435.setText(加入求平均值字段); variabl1279.setText(加入求记录条数); variabl1279.setBorder(border1); variabl1279.setBounds(new Rectangle(159, 409, 116, 25)); variabl1279.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2007.setText(加入升序排序字段); variabl2007.setBorder(border1); variabl2007.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2007.setBounds(new Rectangle(159, 436, 115, 25)); variabl20072.setText(加入降序排序字段); variabl20072.setBorder(border1); variabl20072.setFont(new java.awt.Font(Dialog, 0, 12)); variabl20072.setBounds(new Rectangle(159, 463, 115, 25)); variabl2081.setBounds(new Rectangle(159, 490, 116, 25)); variabl2081.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2081.setBorder(border1); variabl2081.setText(加入分组字段); variabl1289.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1289.setText(选择分组条件函数); variabl1289.setBounds(new Rectangle(159, 517, 140, 20)); variabl1705.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1705.setText(选择关系符); variabl1705.setBounds(new Rectangle(300,517, 80,20)); variabl23596.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23596.setBorder(BorderFactory.createLineBorder(Color.black)); variabl23596.setBounds(new Rectangle(159,540, 140, 40)); variabl23596.addItem( ); variabl23596.addItem(SUM); variabl23596.addItem(AVG); variabl23596.addItem(MAX); variabl23596.addItem(MIN); variabl23596.addItem(COUNT); variabl23596.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e) { if ((variabl23596.getSelectedItem()!=null)(variabl23113.getSelectedValue()!=null)){ s1=variabl23596.getSelectedItem().toString()+(+variabl23113.getSelectedValue().toString()+)+ variabl23597.getSelectedItem().toString(); variabl1259.setText(s1); } } }); variabl23597.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23597.setBorder(BorderFactory.createLineBorder(Color.black)); variabl23597.setBounds(new Rectangle(300,540, 80,40)); variabl23597.addItem(); variabl23597.addItem(=); variabl23597.addItem(); variabl23597.addItem(=); variabl23597.addItem(=); variabl23597.addItem(); variabl23597.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e) { String s0=; s1=variabl23113.getSelectedValue().toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; break; } } if ((variabl23596.getSelectedItem()!=null)(variabl23113.getSelectedValue()!=null)){ s1=variabl23596.getSelectedItem().toString()+(+s0+)+ variabl23597.getSelectedItem().toString(); variabl1259.setText(s1); } } }); variabl1147.setBorder(border1); variabl1147.setBounds(new Rectangle(13+430, 126, 520, 86)); variabl2463.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2463.setText(); variabl1073.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1073.setBorder(border1); variabl1073.setBounds(new Rectangle(280, 220, 253, 220)); variabl23114.setFont(new java.awt.Font(Dialog, 0, 12)); variabl23114.setBorder(border1); variabl23114.setBounds(new Rectangle(280, 222, 248, 210)); variabl23114.setModel(dModel); variabl1147.setBorder(border1); variabl1147.setBounds(new Rectangle(13+430, 126, 520, 86)); variabl2463.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2463.setText(); variabl1909.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1909.setText(字段列表); variabl1909.setBounds(new Rectangle(16, 217, 77, 16)); for (int i = 0; i variabl2259.length; i++) { variabl2151.addItem(variabl2259 ); } if (variabl2151.getItemCount() 0) { variabl2151.setSelectedIndex(0); } variabl2397.add(variabl2597); variabl2397.add(variabl2579); variabl1167.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ((variabl2463.getText()!=null)(variabl2463.getText().length()0) (variabl2463.getText().lastIndexOf(and)variabl2463.getText().length()-4)){ variabl2463.append( and ); } String s=; int n=variabl23595.getSelectedIndex(); String s1=variabl23595.getSelectedItem().toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s1 =variabl2517 +.+variabl2517 ; else s1 =variabl2517 ; n=i; } } String s2 = (String)variabl2151.getSelectedItem(); for(int i=0; ivariabl2259.length; i++) { if(s2==variabl2259 ) { s2=variabl2259 ; } } String s3=variabl1681.getEditor().getItem().toString().trim(); if ((main1.variabl1539.lastIndexOf(variabl2517 ))=0){ JOptionPane.showMessageDialog(variabl2613,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); } else if(main1.variabl1545.lastIndexOf(,+variabl2517 +,)=0){ if(variabl2151.getSelectedItem().toString().trim().equals(包含)||variabl2151.getSelectedItem().toString().trim().equals(不包含)){ JOptionPane.showMessageDialog(variabl2613,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); } else if (variabl2151.getSelectedItem().toString().lastIndexOf(空)0){ s=s1+s2; variabl2463.append(s); } else if (variabl2151.getSelectedItem().toString().lastIndexOf(在)0){ s=s1+s2+s3.trim(); variabl2463.append(s); } else { s=s1+s2+s3.trim(); variabl2463.append(s); } } else if(main1.variabl1537.lastIndexOf(variabl2517 )=0){ if(variabl2151.getSelectedItem().toString().trim().equals(包含)||variabl2151.getSelectedItem().toString().trim().equals(不包含)){ s3='%+(String)variabl1681.getEditor().getItem()+%'; s=s1+s2+s3; variabl2463.append(s); }else{ JOptionPane.showMessageDialog(variabl2613,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); } } else { if (variabl2151.getSelectedItem().toString().lastIndexOf(空)0){ s=s1+s2; variabl2463.append(s); } else if (variabl2151.getSelectedItem().toString().lastIndexOf(之中)=0){ if (variabl1681.getEditor().getItem().toString().lastIndexOf(()0) s3=(+s3+); s=s1+s2+s3; variabl2463.append(s); } else if (variabl2151.getSelectedItem().toString().lastIndexOf(之间)=0){ s=s1+s2+s3.trim(); variabl2463.append(s); } else{ if(variabl2151.getSelectedItem().toString().trim().indexOf(包含)=0) { if ((variabl2517 .indexOf(datetime)=0) (s3.length()4)){ JOptionPane.showMessageDialog(variabl2613,日期时间数据类型包含查询只能单为年份或月份或日期……,提示, JOptionPane.INFORMATION_MESSAGE); return; } s3=%+s3+%; } else { if ((variabl2517 .indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(variabl2613,日期时间数据类型查询数据格式必须为yyyy-mm-dd……,提示, JOptionPane.INFORMATION_MESSAGE); } else if ((variabl2517 .equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((variabl2517 .equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((variabl2517 .indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.00 +8:00; } s=s1+s2+ '+s3+'; variabl2463.append(s); } } if (variabl2517 .trim().equals(variabl2107)) if ((variabl1983.length()0)(variabl1983.lastIndexOf(and)variabl1983.length()-4) (variabl1983.lastIndexOf(or)variabl1983.length()-4)) variabl1983=variabl1983+ and +variabl2517 +s2+s3; else variabl1983=variabl1983+ +variabl2517 +s2+s3; else if (variabl2517 .trim().equals(variabl1961)) if ((variabl1797.length()0)(variabl1797.lastIndexOf(and)variabl1797.length()-4) (variabl1797.lastIndexOf(or)variabl1797.length()-4)) variabl1797=variabl1797+ and +variabl2517 +s2+s3; else variabl1797=variabl1797+ +variabl2517 +s2+s3; else if (variabl2517 .trim().equals(variabl1867)) if ((variabl1721.length()0)(variabl1721.lastIndexOf(and)variabl1721.length()-4) (variabl1721.lastIndexOf(or)variabl1721.length()-4)) variabl1721=variabl1721+ and +variabl2517 +s2+s3; else variabl1721=variabl1721+ +variabl2517 +s2+s3; } }); variabl1653.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ; variabl2463.setText(s); } }); variabl1545.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = (; variabl2463.append(s); } }); variabl1551.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = and ; variabl2463.append(s); if (variabl1983.length()0) variabl1983=variabl1983+ and ; else if (variabl1797.length()0) variabl1797=variabl1797+ and ; else if (variabl1721.length()0) variabl1721=variabl1721+ and ; } }); variabl1723.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = or ; variabl2463.append(s); if (variabl1983.length()0) variabl1983=variabl1983+ or ; else if (variabl1797.length()0) variabl1797=variabl1797+ or ; else if (variabl1721.length()0) variabl1721=variabl1721+ or ; } }); variabl1297.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = not ; variabl2463.append(s); if (variabl1983.length()0) variabl1983=variabl1983+ not ; else if (variabl1797.length()0) variabl1797=variabl1797+ not ; else if (variabl1721.length()0) variabl1721=variabl1721+ not ; } }); variabl1405.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ); variabl2463.append(s); } }); variabl1711.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel variabl2467 = (DefaultListModel)variabl23113.getModel(); DefaultListModel variabl24671 = (DefaultListModel)variabl23114.getModel(); String s0=; int n=variabl23113.getSelectedIndex(); s1=variabl2467.elementAt(n).toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19533=variabl19533+variabl2517 +,; else variabl16831=variabl16831+variabl2517 +,; n=i; variabl24671.addElement(s0); break; } } variabl23114.setModel(variabl24671); } }); variabl2037.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel variabl2467 = (DefaultListModel)variabl23114.getModel(); DefaultListModel variabl24671 = (DefaultListModel)variabl23113.getModel(); variabl2467.removeAllElements(); String s0=; for (int j=0;jvariabl24671.getSize();j++){ s1=variabl24671.elementAt(j).toString().trim(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19533=variabl19533+variabl2517 +,; else variabl16831=variabl16831+variabl2517 +,; variabl2467.addElement(s0); break; } } } variabl23114.setModel(variabl2467); } }); variabl1917.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel variabl2467 = (DefaultListModel)variabl23114.getModel(); variabl2467.removeElement(variabl23114.getSelectedValue()); variabl23114.setModel(variabl2467); } }); variabl1435.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = -1; DefaultListModel variabl2467 = (DefaultListModel)variabl23113.getModel(); String s0=; int n=variabl23113.getSelectedIndex(); s1=variabl2467.elementAt(n).toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19533=variabl19533+variabl2517 +,; else variabl16831=variabl16831+variabl2517 +,; n=i; break; } } if(main1.variabl1545.indexOf(,+variabl2517 +,)=0) { DefaultListModel variabl24671 = (DefaultListModel)variabl23114.getModel(); variabl24671.addElement(AVG(+s0+)+ AS +'+平均+s0+'); variabl23114.setModel(variabl24671); } else { JOptionPane.showMessageDialog(variabl2613,非数值型列不能求平均值!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1329.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = -1; DefaultListModel variabl2467 = (DefaultListModel)variabl23113.getModel(); String s0=; int n=variabl23113.getSelectedIndex(); s1=variabl2467.elementAt(n).toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19533=variabl19533+variabl2517 +,; else variabl16831=variabl16831+variabl2517 +,; n=i; break; } } if (((main1.variabl1537+main1.variabl1539).lastIndexOf(variabl2517 ))0){ DefaultListModel variabl24671 = (DefaultListModel)variabl23114.getModel(); variabl24671.addElement(MAX(+s0+)+ AS +'+最大+s0+'); variabl23114.setModel(variabl24671); } else { JOptionPane.showMessageDialog(variabl2613,大数据类型不能求最大值!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1457.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = -1; DefaultListModel variabl2467 = (DefaultListModel)variabl23113.getModel(); String s0=; int n=variabl23113.getSelectedIndex(); s1=variabl2467.elementAt(n).toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19533=variabl19533+variabl2517 +,; else variabl16831=variabl16831+variabl2517 +,; n=i; break; } } if (((main1.variabl1537+main1.variabl1539).lastIndexOf(variabl2517 ))0){ DefaultListModel variabl24671 = (DefaultListModel)variabl23114.getModel(); variabl24671.addElement(MIN(+s0+)+ AS +'+最小+s0+'); variabl23114.setModel(variabl24671); } else { JOptionPane.showMessageDialog(variabl2613,大数据类型不能求最小值!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1915.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int m = -1; DefaultListModel variabl24671 = (DefaultListModel)variabl23113.getModel(); String s0=; int n=variabl23113.getSelectedIndex(); s1=variabl24671.elementAt(n).toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19533=variabl19533+variabl2517 +,; else variabl16831=variabl16831+variabl2517 +,; n=i; break; } } if(main1.variabl1545.indexOf(,+variabl2517 +,)=0) { DefaultListModel variabl2467 = (DefaultListModel)variabl23114.getModel(); variabl2467.addElement(SUM(+s0+)+ AS +'+s0+和+'); variabl23114.setModel(variabl2467); } else { JOptionPane.showMessageDialog(variabl2613,非数值型列不能求总和!,提示, JOptionPane.INFORMATION_MESSAGE); } } }); variabl1279.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel variabl24671 = (DefaultListModel)variabl23113.getModel(); String s0=; int n=variabl23113.getSelectedIndex(); s1=variabl24671.elementAt(n).toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19533=variabl19533+variabl2517 +,; else variabl16831=variabl16831+variabl2517 +,; n=i; break; } } DefaultListModel variabl2467 = (DefaultListModel)variabl23114.getModel(); variabl2467.addElement(COUNT(+s0+)+ AS +'+记录条数+'); variabl23114.setModel(variabl2467); } }); variabl2081.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel variabl24671 = (DefaultListModel)variabl23113.getModel(); String s0=; int n=variabl23113.getSelectedIndex(); s1=variabl24671.elementAt(n).toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19533=variabl19533+variabl2517 +,; else variabl16831=variabl16831+variabl2517 +,; n=i; break; } } if ((variabl1677.getText().length()0)(variabl1677.getText().lastIndexOf(+s0)0)) variabl1677.setText(variabl1677.getText()+,+s0+ ); else if (variabl1677.getText().length()1) variabl1677.setText( GROUP BY +s0+ ); } }); variabl2007.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel variabl24671 = (DefaultListModel)variabl23113.getModel(); String s0=; int n=variabl23113.getSelectedIndex(); s1=variabl24671.elementAt(n).toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19534=variabl19534+variabl2517 +,; n=i; break; } } if ((variabl1709.getText().length()0)(variabl1709.getText().lastIndexOf(+s0)0)) variabl1709.setText(variabl1709.getText()+,+s0); else if (variabl1709.getText().length()1) variabl1709.setText( ORDER BY +s0); } }); variabl20072.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel variabl24671 = (DefaultListModel)variabl23113.getModel(); String s0=; int n=variabl23113.getSelectedIndex(); s1=variabl24671.elementAt(n).toString(); for(int i=0; ivariabl2651; i++) { if (variabl2517 .trim().equals(s1.trim())) { if (variabl2517 .trim().length()0) s0 =variabl2517 +.+variabl2517 ; else s0 =variabl2517 ; if (variabl2517 .trim().equals(variabl2107.trim())) variabl19534=variabl19534+variabl2517 + desc ; n=i; break; } } if ((variabl1709.getText().length()0)(variabl1709.getText().lastIndexOf(+s0)0)) variabl1709.setText(variabl1709.getText()+,+s0+ desc ); else if (variabl1709.getText().length()1) variabl1709.setText( ORDER BY +s0+ desc ); } }); variabl1709.setBorder(border1); variabl1709.setText(); variabl1709.setBounds(new Rectangle(281, 448, 252, 30)); variabl1677.setBorder(border1); variabl1677.setText(); variabl1677.setBounds(new Rectangle(281, 480, 253, 30)); variabl1259.setBorder(border1); variabl1259.setText(); variabl1259.setBounds(new Rectangle(400, 516,556, 30)); variabl1671.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1671.setPreferredSize(new Dimension(57, 16)); variabl1671.setRequestFocusEnabled(true); variabl1671.setText(转存新表的名称); variabl1671.setBounds(551,226,120,20); variabl2351.setBounds(new Rectangle(671,226,290,20)); variabl2351.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2351.setText(); variabl15111.setFont(new java.awt.Font(Dialog, 0, 12)); variabl15111.setPreferredSize(new Dimension(57, 16)); variabl15111.setRequestFocusEnabled(true); variabl15111.setText(所生成SQL语句1); variabl15111.setBounds(551,250,182, 16); variabl1007.setBorder(border1); variabl1007.setBounds(new Rectangle(540,268,418,90)); variabl1083.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1083.setText(); variabl1083.setLineWrap(true); variabl15112.setFont(new java.awt.Font(Dialog, 0, 12)); variabl15112.setPreferredSize(new Dimension(57, 16)); variabl15112.setRequestFocusEnabled(true); variabl15112.setText(所生成SQL语句2); variabl15112.setBounds(550,360,182, 16); variabl1011.setBorder(border1); variabl1011.setBounds(new Rectangle(540,380,418, 130)); variabl1099.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1099.setText(); variabl1099.setLineWrap(true); variabl16532.setBounds(new Rectangle(400,553,111, 25)); variabl16532.setFont(new java.awt.Font(Dialog, 0, 12)); variabl16532.setBorder(border1); variabl16532.setText(清空所有选项); variabl2077.setBounds(new Rectangle(511, 553, 111, 25)); variabl2077.setFont(new java.awt.Font(Dialog, 0, 12)); variabl2077.setBorder(border1); variabl2077.setText(生成sql语句); variabl1219.setBounds(new Rectangle(622, 553, 111, 25)); variabl1219.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1219.setBorder(border1); variabl1219.setText(执行SQL语句1); variabl1247.setBounds(new Rectangle(733, 553, 111, 25)); variabl1247.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1247.setBorder(border1); variabl1247.setText(执行SQL语句2); variabl1865.setBounds(new Rectangle(844, 553, 111, 25)); variabl1865.setFont(new java.awt.Font(Dialog, 0, 12)); variabl1865.setBorder(border1); variabl1865.setText(退出); variabl2613.setBackground(Color.lightGray); variabl2613.add(variabl2077, null); variabl2613.add(variabl12273, null); variabl2613.add(variabl12271, null); variabl2613.add(variabl1917, null); variabl2613.add(variabl1435, null); variabl2613.add(variabl1329, null); variabl2613.add(variabl1457, null); variabl2613.add(variabl1915, null); variabl2613.add(variabl1279, null); variabl2613.add(variabl2081, null); variabl2613.add(variabl2007, null); variabl2613.add(variabl20072, null); variabl2613.add(variabl1073, null); variabl2613.add(variabl1677, null); variabl2613.add(variabl1289, null); variabl2613.add(variabl1705, null); variabl2613.add(variabl23596, null); variabl2613.add(variabl23597, null); variabl2613.add(variabl1709, null); variabl2613.add(variabl1865, null); variabl2613.add(variabl1147, null); variabl2613.add(variabl2377, null); variabl2613.add(variabl1557, null); variabl2613.add(variabl1671, null); variabl2613.add(variabl2351, null); variabl2613.add(variabl15111, null); variabl2613.add(variabl15112, null); variabl2613.add(variabl1035, null); variabl2613.add(variabl1043, null); variabl2613.add(variabl1007, null); variabl2613.add(variabl1011, null); variabl2613.add(variabl1259, null); variabl2433.add(variabl1167, null); variabl2433.add(variabl1653, null); variabl2613.add(variabl24332, null); variabl2613.add(variabl2433, null); variabl24332.add(variabl1545, null); variabl24332.add(variabl1405, null); variabl24332.add(variabl1551, null); variabl24332.add(variabl1723, null); variabl24332.add(variabl1297, null); variabl2613.add(variabl23595, null); variabl2613.add(variabl2151, null); variabl2613.add(variabl16532, null); variabl2613.add(variabl1711, null); variabl2613.add(variabl2037, null); variabl2613.add(variabl2169, null); variabl2613.add(variabl1365, null); variabl2613.add(variabl1999, null); variabl2613.add(variabl1945, null); variabl2613.add(variabl1909, null); variabl2613.add(variabl1681, null); variabl2613.add(variabl1285, null); variabl2613.add(variabl1219, null); variabl2613.add(variabl1247, null); variabl16532.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel variabl2467 = (DefaultListModel)variabl23114.getModel(); variabl2467.removeAllElements(); variabl23114.setModel(variabl2467); variabl1677.setText(); variabl1709.setText(); variabl1259.setText(); variabl1497.setText(); variabl1451.setText(); variabl1083.setText(); variabl1099.setText(); variabl2351.setText(); variabl2463.setText(); variabl1595=; s1=; s2=;s3=;s4=;s5=;s9=; variabl2651=0;variabl26510=0;variabl25710=0; variabl2517=new String ; variabl2049=; variabl2107=;variabl1961=;variabl1867=; variabl1983=;variabl19832=;variabl1797=;variabl1721=; variabl19531=;variabl19532=;variabl19533=;variabl19534=;variabl19535=; variabl19536=;variabl16831=;variabl16832=;variabl18512=; variabl23595.removeAllItems(); variabl23596.removeAllItems(); variabl23597.removeAllItems(); ((DefaultListModel)variabl23113.getModel()).removeAllElements(); ((DefaultListModel)variabl23114.getModel()).removeAllElements(); } }); variabl2077.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s1=select ; DefaultListModel variabl2467 = (DefaultListModel)variabl23114.getModel(); if (variabl2467.getSize()==0) s1=s1+ * ; else { for (int i=0;ivariabl2467.getSize();i++) s1=s1+variabl2467.elementAt(i)+,; s1=s1.substring(0,s1.length()-1); } if (variabl2351.getText().length()0) s1=s1+ into +variabl2351.getText(); s1=s1+ from ; s4=; for (int i=0;ivariabl1497.getText().length();i++){ if (variabl1497.getText().substring(i,i+1).equals(+x1)){ s4=s4+,; continue; } else if (variabl1451.getText().substring(i,i+1).equals(x2)) continue; else s4=s4+variabl1497.getText().substring(i,i+1); } s2=;s3=; int k=0; if ((variabl1451.getText().length()0)(variabl1451.getText().lastIndexOf(JOIN)0)){ for (int i=0;ivariabl1451.getText().length();i++){ if ((variabl1451.getText().substring(i,i+1).equals(+x1))|| (variabl1451.getText().substring(i,i+1).equals(+x2))){ k=1; continue; } else if (variabl1451.getText().substring(i,i+1).equals(x2)) continue; else if (k==0) s2=s2+variabl1451.getText().substring(i,i+1); else s3=s3+variabl1451.getText().substring(i,i+1); } s1=s1+s2+s3; if (variabl2463.getText().length()0) s1=s1+ where +variabl2463.getText(); } else { s1=s1+s4; if ((variabl1451.getText().length()0)(variabl1451.getText().lastIndexOf(=)0)){ s1=s1+ where +variabl1451.getText(); if (variabl2463.getText().length()0) s1=s1+ and +variabl2463.getText(); } else if (variabl2463.getText().length()0){ s1=s1+ where +variabl2463.getText(); } } if (variabl1677.getText().length()0){ s4 = variabl1677.getText(); if (s4.substring(s4.length()-1, s4.length()).equals(,)) s4 =s4.substring(0, s4.length()-1); s1=s1+s4; } if (variabl1259.getText().length()0) s1=s1+ having +variabl1259.getText(); if (variabl1709.getText().length()0) s1=s1+variabl1709.getText(); variabl1083.setText(s1); if ((variabl1983.length()4)(variabl1983.lastIndexOf(and)variabl1983.length()-5)) variabl1983=variabl1983.substring(0,variabl1983.lastIndexOf(and)); if ((variabl1451.getText().length()0)(variabl1451.getText().lastIndexOf(=)0)){ if ((variabl19532.length()0)(variabl19532.substring(variabl19532.length()-1,variabl19532.length()).trim().equals(,))) variabl19532=variabl19532.substring(0,variabl19532.length()-1); if ((variabl19533.length()0)(variabl19533.substring(variabl19533.length()-1,variabl19533.length()).trim().equals(,))) variabl19533=variabl19533.substring(0,variabl19533.length()-1); if ((variabl19534.length()0)(variabl19534.substring(variabl19534.length()-1,variabl19534.length()).trim().equals(,))) variabl19534=variabl19534.substring(0,variabl19534.length()-1); if ((variabl19535.length()0)(variabl19535.substring(variabl19535.length()-1,variabl19535.length()).trim().equals(,))) variabl19535=variabl19535.substring(0,variabl19535.length()-1); if ((variabl16832.length()0)(variabl16832.substring(variabl16832.length()-1,variabl16832.length()).trim().equals(,))) variabl19532=variabl19532.substring(0,variabl16832.length()-1); if ((variabl18512.length()0)(variabl18512.substring(variabl18512.length()-1,variabl18512.length()).trim().equals(,))) variabl18512=variabl18512.substring(0,variabl18512.length()-1); s1=select +variabl19533+ from +variabl2107; if (variabl19534.length()0) s1=s1+ order by +variabl19534; if (variabl19535.length()0) s1=s1+ group by +variabl19535; if (variabl19536.length()0) s1=s1+ having +variabl19536; if ((variabl19532.length()0)||(variabl1983.length()0)) s1=s1+ where ; if (variabl1983.length()0) { s1=s1+variabl1983+ ; if (variabl19532.length()0){ if (s1.lastIndexOf(and)s1.length()-4) s1=s1+ and +variabl19532+ in (select +variabl19532+ from +variabl1961; else s1=s1+variabl19532+ in (select +variabl19532+ from +variabl1961; } if ((variabl16832.length()0)||(variabl1797.length()0)) s1=s1+ where ; if (variabl1797.length()0) { s1=s1+variabl1797+ ; if (variabl16832.length()0){ s1=s1+ and +variabl16832+ in (select +variabl16832+ from +variabl1867; } if (variabl1721.length()0) s1=s1+ where +variabl1721+); } else if (variabl16832.length()0){ s1=s1+variabl16832+ in (select +variabl16832+ from +variabl1867; if (variabl1721.length()0) s1=s1+ where +variabl1721+); } else if (variabl1721.length()0) { s1=s1+ where +variabl1721; } s1=s1+); } else if (variabl19532.length()0){ s1=s1+variabl19532+ in (select +variabl19532+ from +variabl1961; if ((variabl16832.length()0)||(variabl1797.length()0)) s1=s1+ where ; if (variabl1797.length()0) { s1=s1+variabl1797+ ; if (variabl16832.length()0){ s1=s1+ and +variabl16832+ in (select +variabl16832+ from +variabl1867; } if (variabl1721.length()0) s1=s1+ where +variabl1721+); } else if (variabl16832.length()0){ s1=s1+variabl16832+ in (select +variabl16832+ from +variabl1867; if (variabl1721.length()0) s1=s1+ where +variabl1721+); } else if (variabl1721.length()0) { s1=s1+ where +variabl1721; } s1=s1+); } int d1=0,d2=0; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).trim().equals(()) d1++; else if (s1.substring(i,i+1).trim().equals())) d2++; if (d1d2) s1=s1+); variabl1099.setText(s1); } } }); variabl1219.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { s1=variabl1083.getText(); dbConn=main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl26510=rsmd3.getColumnCount(); variabl25170 = new String ; variabl15010 = new String ; variabl14890 = new int ; for(int i=0; ivariabl26510; i++) { variabl25170 = rsmd3.getColumnName(i + 1); variabl15010 = rsmd3.getColumnTypeName(i+1); variabl14890 = rsmd3.getColumnDisplaySize(i + 1); if (variabl15010 .indexOf(int) = 0) variabl14890 = 6 + 10; else if (variabl15010 .indexOf(text) = 0) variabl14890 = 20; else if (variabl15010 .indexOf(datetime) == 0) variabl14890 = 16; else if (variabl15010 .indexOf(float) == 0) variabl14890 = 16; if (variabl14890 4) variabl14890 = 4; b++; } int rowNumber=0; rs.last(); rowNumber=rs.getRow(); variabl21970=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl26510){ variabl21970 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); dbConn.close(); } catch(Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP)0) JOptionPane.showMessageDialog( null,所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800,600,variabl25170,variabl14890,variabl21970,variabl15010); } }); variabl1247.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { s1=variabl1099.getText(); dbConn=main1.getConn(); sta3 = dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=sta3.executeQuery(s1); rsmd3 = rs.getMetaData(); variabl26510=rsmd3.getColumnCount(); variabl25170 = new String ; variabl15010 = new String ; variabl14890 = new int ; for(int i=0; ivariabl26510; i++) { variabl25170 = rsmd3.getColumnName(i + 1); variabl15010 = rsmd3.getColumnTypeName(i+1); variabl14890 = rsmd3.getColumnDisplaySize(i + 1); if (variabl15010 .indexOf(int) = 0) variabl14890 = 6 + 10; else if (variabl15010 .indexOf(text) = 0) variabl14890 = 20; else if (variabl15010 .indexOf(datetime) == 0) variabl14890 = 16; else if (variabl15010 .indexOf(float) == 0) variabl14890 = 16; if (variabl14890 4) variabl14890 = 4; b++; } int rowNumber=0; rs.last(); rowNumber=rs.getRow(); variabl21970=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl26510){ variabl21970 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); dbConn.close(); } catch(Exception e1) { e1.printStackTrace(); if (e1.toString().lastIndexOf(GROUP)0) JOptionPane.showMessageDialog( null,所选择的字段有些不是聚集函数中的字段,也不是分组字段,查询不成功,请重选输出字段!); return; } tableTenance.tableModel(800,600,variabl25170,variabl14890,variabl21970,variabl15010); } }); variabl1865.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame1.setVisible(false); frame1.dispose(); } }); frame1.setTitle(SQL查询语句实验程序 作者:程学先); frame1.setBounds(0, 0,variabl2483, variabl2503); frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame1.getContentPane().setLayout(null); frame1.getContentPane().add(variabl2613, null); frame1.setVisible(true); } public static void unrepeat() { DefaultListModel variabl2467 = (DefaultListModel)variabl23114.getModel(); int m = variabl2467.getSize(); for(int i=0; im; i++) { for(int j=i+1; jm; j++) { if(variabl2467.elementAt(j).toString().trim().equals(variabl2467.elementAt(i).toString().trim())) { variabl2467.removeElementAt(j); j--; m = variabl2467.getSize(); } } } variabl23114.setModel(variabl2467); } } 5.源码5,部件程序,单表固定单字段、固定关系查询 /** * 程序文件名:dataQuery1.java * 作者:程学先,聂志恒 * 单位:湖北工业大学工程技术学院电气信息系 * 完成时间:2013年11月27日 * 部件功能:利用指定的字段和表达式进行单字段固定查询。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery1 extends JFrame { static dataQuery1 frame = new dataQuery1(); static String variabl2603=; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField; static JButton b1,b2; static String s1=; static ResultSet rs; static int b=0,c=0; static int variabl2651; static int variabl2113; static String variabl25170; static String variabl2319={{ ,大于},{ ,小于},{ = ,等于},{ = ,大于等于},{ = ,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; static String variabl2411; static String variabl1169; static int variabl1119; static int variabl1853, variabl18531; static String variabl2197; static String variabl1269=,variabl1787=; static String variabl1075; static String variabl1177; static int variabl2337=30; static String variabl1079; static String variabl1325; static String variabl2405=null; static String variabl1187; static int variabl2851=0,variabl2339=0; public static void means(String = ; variabl2319 =大于; variabl2319 = ; variabl2319 =小于; variabl2319 = = ; variabl2319 =等于; variabl2319 = = ; variabl2319 =大于等于; variabl2319 = = ; variabl2319 =小于等于; variabl2319 = ; variabl2319 =不等于; variabl2319 = like ; variabl2319 =包含; variabl2319 = not like ; variabl2319 =不包含; String ; variabl2851=0; for (int i0=0;i0variabl240501.length;i0++) variabl2405 = variabl240501 ; if (parameter .length()0){ variabl1187=parameter ; variabl1187=variabl1187.replaceAll(;,;); variabl1187=variabl1187.replaceAll(。,;); variabl1187=variabl1187.replaceAll(:,;); variabl1187=variabl1187.replaceAll(:,;); if (variabl1187.indexOf(;)0){ String s601 .indexOf(;)0){ String s602 .split(;); variabl2405 ))]=s602 ; variabl1187=variabl1187+,+s602 ; variabl2851++; } else { variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { String s601 ; else variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { variabl1187=; for (int i1=0;i1variabl2405.length;i1++){ if (i1==0) variabl1187=variabl1187+i1; else variabl1187=variabl1187+,+i1; variabl2851++; } } variabl1187=,+variabl1187+,; variabl2483=main1.variabl2483; variabl2503=main1.variabl2503; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ; m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } variabl2483=m1 ; variabl2503=m2 ; } }catch(Exception e2){} variabl1177=parameter ; variabl2603=parameter ; variabl1079=parameter ; variabl1325=parameter ; if (variabl1325.lastIndexOf(,)==variabl1325.length()-1 ) variabl1325=variabl1325.substring(0,variabl1325.length()-1); String .length()0){ variabl1735=parameter .split(,); variabl2517=new String ; for (int i=0;ivariabl1735.length;i++){ variabl2517 =s6 )]; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; } else { variabl2517=new String ; for (int i=0;is6.length;i++){ variabl2517 =s6 ; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; } String s4=parameter ; if (s4.indexOf(,)0){ String variabl2345=new int ; variabl25170=new String ; for (int i1=0;i1s3.length;i1++){ variabl2345 =Integer.parseInt(s3 ); variabl25170 =s6 ]; if (i1==0) variabl1787=variabl25170 ; else variabl1787=variabl1787+,+variabl25170 ; } } else { int variabl2345=Integer.parseInt(parameter ); variabl1269=s6 ; variabl1787=s6 ; } try { con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if (s2.length()0) s2=select +s2+ from +variabl2603; else s2=select * from +variabl2603; ResultSet rs=sta3.executeQuery(s2); rsmd3 = rs.getMetaData(); variabl2651=rsmd3.getColumnCount(); variabl2517=new String ; variabl1501 = new String ; variabl1489 = new int ; for (int i=0;ivariabl2651;i++) { variabl2517 = rsmd3.getColumnName(i + 1); variabl1501 = rsmd3.getColumnTypeName(i + 1); if (variabl1269.equals(variabl2517 )) variabl1075=variabl1501 ; b++; } int rowNumber=0; rs.last(); rowNumber=rs.getRow(); variabl2197=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); } catch(SQLException e) { JOptionPane.showMessageDialog( null, 连接数据库出错!); } frame.setTitle(查询部件程序 作者:程学先,聂志恒); frame.setBounds(10, 10,variabl2483-10,variabl2503-10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20,variabl2483-50,variabl2503-20); tableModel = new DefaultTableModel(variabl2197,variabl2517); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 60,variabl2483-100,variabl2503-150); panel.add(scrollPane); JLabel label1=new JLabel(variabl1787); label1.setBounds(variabl2337, 10 , variabl1787.length()*15, 20); panel.add(label1); JLabel label2=new JLabel(parameter ); label2.setBounds(variabl2337+variabl1787.length()*15, 10 ,4*15, 20); panel.add(label2); aTextField = new JTextField(, 10); aTextField.setBounds(variabl2337+variabl1787.length()*15+4*15, 10 ,150, 20); panel.add(aTextField); int variabl2337=30+variabl1787.length()*15+4*15+170; variabl2339=(variabl2483-variabl2337-30)/variabl2851; final JButton selectButton = new JButton(variabl2405 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try{ con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for(int i=0;ivariabl2319.length;i++){ if(variabl2319 .trim().equals(variabl1177.trim())){ variabl1177=variabl2319 ; break; } } String s1=; if (variabl1787.indexOf(,)0){ s1=select * from +variabl2603+ where +variabl1269+ ; String s2=variabl1075; String s3=aTextField.getText().trim(); String s4=variabl1177.trim(); if ((main1.variabl1539.lastIndexOf(s2))=0){ JOptionPane.showMessageDialog(null,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if(main1.variabl1545.lastIndexOf(,+s2+,)=0){ if(s4.indexOf(like)=0){ JOptionPane.showMessageDialog(null,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else{ s1=s1+s4+s3.trim(); } } else if(main1.variabl1537.lastIndexOf(s2)=0){ if(s4.equals(like)||s4.equals(not like)){ s3= '%+s3+%'; s1=s1+s4+s3; } else{ JOptionPane.showMessageDialog(null,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { if(s4.indexOf(like)=0) s3=%+s3+%; else { if ((s2.indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(null,日期时间类型进行查询时数据格式必须为yyyy-yy-dd,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((s2.indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.000 +08:00; } s1=s1+s4+'+s3+'; } } ResultSet rs=sta3.executeQuery(s1); int rowNumber=0; rs.last(); rowNumber=rs.getRow(); variabl2197=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } printViewButton.setEnabled(true); printButton.setEnabled(true); rs.close(); sta3.close(); tableModel = new DefaultTableModel(variabl2197,variabl2517); table = new JTable(tableModel); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch(Exception e1) { JOptionPane.showMessageDialog( null, 查询数据出错!+s1); } } }); selectButton.setBounds(variabl2337, 10 ,variabl2339, 20); if (variabl1187.indexOf(,0,)=0) { variabl2337=variabl2337+variabl2339; panel.add(selectButton); } printViewButton = new JButton(variabl2405 ); printViewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPreview1.printView1(variabl2197,variabl1079); } }); printViewButton.setBounds(variabl2337, 10 ,variabl2339, 20); if (variabl1187.indexOf(,1,)=0) { variabl2337=variabl2337+variabl2339; panel.add(printViewButton); printViewButton.setEnabled(false); } printButton = new JButton(variabl2405 ); printButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataPrint1.print1(variabl2197,variabl1079); } }); printButton.setBounds(variabl2337, 10 ,variabl2339, 20); if (variabl1187.indexOf(,2,)=0) { variabl2337=variabl2337+variabl2339; panel.add(printButton); printButton.setEnabled(false); } final JButton exitButton = new JButton(variabl2405 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(variabl2337, 10 ,variabl2339, 20); if (variabl1187.indexOf(,3,)=0) { variabl2337=variabl2337+variabl2339; panel.add(exitButton); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 6.源码6,部件程序,单表可选字段名、选择关系符单条件查询,可按字典表变换字段名。 /** * 作者:程学先,聂志恒 * 单位:湖工工程电气信息系11gb计算班 * 完成时间:2013年12月3日 * 部件功能:利用指定的字段和表达式进行多表单字段固定查询。 * 多表包括代码表与字典表 ,可利用字典表变换字段名 。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery2 extends JFrame { static dataQuery2 frame = new dataQuery2(); static String variabl2603; static String variabl1873; static String variabl2429; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField; static JButton b1,b2; static String s1=; static ResultSet rs; static int b=0,c=0; static int variabl2651; static int variabl2113; static String variabl2517; static String variabl2411; static String variabl1169; static String variabl1489; static int variabl2405=null; static String variabl1187; static int variabl2851=0,variabl2339=0; public static void means(String =; variabl2319 =大于; variabl2319 =; variabl2319 =小于; variabl2319 ==; variabl2319 =等于; variabl2319 ==; variabl2319 =大于等于; variabl2319 ==; variabl2319 =小于等于; variabl2319 =; variabl2319 =不等于; variabl2319 =$; variabl2319 =包含; variabl2319 =!$; variabl2319 =不包含; String ; variabl2851=0; for (int i0=0;i0variabl240501.length;i0++) variabl2405 = variabl240501 ; if (parameter .length()0){ variabl1187=parameter ; variabl1187=variabl1187.replaceAll(;,;); variabl1187=variabl1187.replaceAll(。,;); variabl1187=variabl1187.replaceAll(:,;); variabl1187=variabl1187.replaceAll(:,;); if (variabl1187.indexOf(;)0){ String s601 .indexOf(;)0){ String s602 .split(;); variabl2405 ))]=s602 ; variabl1187=variabl1187+,+s602 ; variabl2851++; } else { variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { String s601 ; else variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { variabl1187=; for (int i1=0;i1variabl2405.length;i1++){ if (i1==0) variabl1187=variabl1187+i1; else variabl1187=variabl1187+,+i1; variabl2851++; } } variabl1187=,+variabl1187+,; variabl2483=main1.variabl2483; variabl2503=main1.variabl2503; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ; m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } variabl2483=m1 ; variabl2503=m2 ; } }catch(Exception e2){} variabl2259=parameter ; variabl2603=parameter ; variabl2049=parameter ; variabl1325=parameter ; variabl2429=parameter ; if (variabl2259.length()1) variabl2259=等于; if (variabl1325.lastIndexOf(,)==variabl1325.length()-1 ) variabl1325=variabl1325.substring(0,variabl1325.length()-1); String .length()0){ variabl1735=parameter .split(,); variabl2517=new String ; for (int i=0;ivariabl1735.length;i++){ variabl2517 =s6 )]; variabl2517 =variabl2517 ; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; } else { variabl2517=new String ; for (int i=0;is6.length;i++){ variabl2517 =s6 ; variabl2517 =variabl2517 ; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; } String s11=variabl2603; if (variabl2603.indexOf(,)0){ String ; } variabl1873=; String .lastIndexOf(s11+字典表)=0) variabl1873=t1 ; } if (variabl1873.length()0){ try { con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + variabl1873; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int variabl26510=rsmd.getColumnCount(); int numberOfColumns=rsmd.getColumnCount(); String s14=; String s15=; int b=1; while (rs.absolute(b)) { b++; s14=rs.getString(1).trim(); s15=rs.getString(2).trim(); for (int j=0;jvariabl2517 .length;j++){ if (variabl2517 .trim().equalsIgnoreCase(s14.trim())){ variabl2517 =s15; break; } else if ((variabl2517 .trim()+,).indexOf(.+s14+,)0){ variabl2517 =variabl2517 .replace(s14,s15); break; } } } rs.close(); con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog( null, 连接数据库出错!); } } String s4=parameter ; if (s4.indexOf(,)0){ variabl1787=; variabl17871=; String variabl2345=new int ; variabl25170=new String ; for (int i1=0;i1s3.length;i1++){ variabl2345 =Integer.parseInt(s3 ); variabl25170 =s6 ]; if (i1==0) { variabl1787=variabl25170 ; } else { variabl1787=variabl1787+,+variabl25170 ; } for (int j=0;jvariabl2517 .length;j++) if (variabl25170 .equalsIgnoreCase(variabl2517 )) if (i1==0) variabl17871=variabl2517 ; else variabl17871=variabl17871+,+variabl2517 ; } } else { int variabl2345=Integer.parseInt(parameter ); variabl1269=s6 ; variabl1787=s6 ; for (int j=0;jvariabl2517 .length;j++) if (variabl1787.equalsIgnoreCase(variabl2517 )) variabl17871=variabl2517 ; } try { con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String s=; if (variabl2049.trim().length()0) s=select +variabl1325+ from +variabl2603+ where +variabl2049; else s=select +variabl1325+ from +variabl2603; ResultSet rs=sta3.executeQuery(s); rsmd3 = rs.getMetaData(); variabl2651=rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; for (int i=0;ivariabl2651;i++) { variabl2517 = rsmd3.getColumnName(i + 1).toString(); variabl1501 = rsmd3.getColumnTypeName(i + 1); if (variabl1269.equals(variabl2517 )) variabl1075=variabl1501 ; b++; } int rowNumber=0; rs.last(); rowNumber=rs.getRow(); variabl2197=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); con.close(); } catch(SQLException e) { JOptionPane.showMessageDialog( null, 查询数据出错!); } frame.setTitle(查询部件程序 作者:程学先,聂志恒); frame.setBounds(10, 10,variabl2483-10,variabl2503-10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20,variabl2483-50,variabl2503-20); tableModel = new DefaultTableModel(variabl2197,variabl2517 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30,60,variabl2483-100,variabl2503-200); panel.add(scrollPane); JLabel label1=new JLabel(variabl17871); label1.setBounds(variabl2337, 10 , variabl17871.length()*15, 20); panel.add(label1); JLabel label2=new JLabel(parameter ); label2.setBounds(variabl2337+variabl17871.length()*15, 10,4*15, 20); panel.add(label2); aTextField = new JTextField(, 10); aTextField.setBounds(variabl2337+variabl17871.length()*15+4*15, 10,150, 20); panel.add(aTextField); int variabl2337=30+variabl17871.length()*15+4*15+170; variabl2339=(variabl2483-variabl2337-30)/variabl2851; final JButton selectButton = new JButton(variabl2405 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try{ con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); for(int i=0;ivariabl2319.length;i++){ if(variabl2319 .trim().equalsIgnoreCase(variabl2259.trim())){ variabl2259=variabl2319 ; break; } } if (variabl1787.indexOf(,)0) { if (main1.variabl1539.lastIndexOf(,+variabl1075+,)=0){ JOptionPane.showMessageDialog( null, 图形数据类型不能进行查询!); return; } else if (main1.variabl1537.lastIndexOf(,+variabl1075+,)=0) { if (variabl2259.trim().indexOf($)0) { JOptionPane.showMessageDialog( null, 大数据类型不能进行比较!);return;} else if (variabl2259.trim().indexOf(!)0) variabl2259=variabl1269+ like '%+aTextField.getText().trim()+%'; else variabl2259=variabl1269+ not like '%+aTextField.getText().trim()+%'; } else if (main1.variabl1545.lastIndexOf(,+variabl1075+,)=0){ if (variabl2259.trim().indexOf($)=0) { JOptionPane.showMessageDialog( null, 数字数据类型不能进行包含查询!); return; } else variabl2259=variabl1269+ +variabl2259+aTextField.getText().trim(); } else if (main1.variabl1547.lastIndexOf(,+variabl1075+,)=0){ if (variabl2259.trim().equalsIgnoreCase($)) variabl2259=variabl1269+ like '%+aTextField.getText().trim()+%'; else if (variabl2259.trim().equalsIgnoreCase(!$)) variabl2259=variabl1269+ not like '%+aTextField.getText().trim()+%'; else variabl2259=variabl1269+ +variabl2259+ '+aTextField.getText().trim()+'; } else { if (variabl2259.trim().equalsIgnoreCase($)) variabl2259=variabl1269+ like '%+aTextField.getText().trim()+%'; else if (variabl2259.trim().equalsIgnoreCase(!$)) variabl2259=variabl1269+ not like '%+aTextField.getText().trim()+%'; else variabl2259=variabl1269+ +variabl2259+ '+aTextField.getText().trim()+'; } if (variabl1325.lastIndexOf(,)==variabl1325.length()-1 ) variabl1325=variabl1325.substring(0,variabl1325.length()-1); s1=select +variabl1325+ from +variabl2603; if (variabl2049.trim().length()0) s1=s1+ where +variabl2049+ and +variabl2259; else s1=s1+ where +variabl2259; } else { if (variabl2049.trim().length()0) s1=select +variabl1325+ from +variabl2603+ where +variabl2049+ and (; else s1=select +variabl1325+ from +variabl2603+ where (; for (int i1=0;i1variabl25170.length;i1++){ if (i1==0) s1=s1+variabl25170 + like '%+aTextField.getText().trim()+%'; else s1=s1+ or +variabl25170 + like '%+aTextField.getText().trim()+%'; } s1=s1+); } ResultSet rs=sta3.executeQuery(s1); int rowNumber=0; rs.last(); rowNumber=rs.getRow(); variabl2197=new String ; c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); con.close(); tableModel = new DefaultTableModel(variabl2197,variabl2517 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch(Exception e1) { JOptionPane.showMessageDialog( null, 查询数据出错!+s1); } } }); selectButton.setBounds(variabl2337, 10 ,variabl2339, 20); if (variabl1187.indexOf(,0,)=0) { variabl2337=variabl2337+variabl2339; panel.add(selectButton); } final JButton exitButton = new JButton(variabl2405 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(variabl2337, 10 ,variabl2339, 20); if (variabl1187.indexOf(,1,)=0) { variabl2337=variabl2337+variabl2339; panel.add(exitButton); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1=str; int i=1; while(s1.indexOf(,)!=-1){ s1=s1.substring(s1.indexOf(,)+1,s1.length()); i++; } array=new String ; int j=0; while(str.indexOf(,)!=-1){ array =str.substring(0,str.indexOf(,)); str=str.substring(str.indexOf(,)+1,str.length()); array =str; j++; } return array; } } 7.源码7,部件程序,多表固定单字段、固定关系查询 /** * 程序文件名:dataQuery3.java * 作者:程学先 * 完成时间:2013年11月17日 * 部件功能:选择字段和关系符后进行单字段查询。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.io.*; public class dataQuery3 extends JFrame { static dataQuery3 frame = new dataQuery3(); static String variabl2603=; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static Choice choice,choice1; static JTextField aTextField; static JButton b1,b2; static String s1 = , s2 = ; static ResultSet rs; static int b=0,c=0; static int variabl2651; static int variabl2113; static String variabl25170; static String variabl2319={{ ,大于},{ ,小于},{ = ,等于},{ = ,大于等于},{ = ,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; static String variabl2411; static String variabl1169; static String variabl1325; static String variabl1269=,variabl1787=,variabl17871=; static String variabl2049; static String variabl1489; static int variabl2405=null; static String variabl1187; static int variabl2851=0,variabl2339=0; public static void means(String = ; variabl2319 =大于; variabl2319 = ; variabl2319 =小于; variabl2319 = = ; variabl2319 =等于; variabl2319 = = ; variabl2319 =大于等于; variabl2319 = = ; variabl2319 =小于等于; variabl2319 = ; variabl2319 =不等于; variabl2319 = like ; variabl2319 =包含; variabl2319 = not like ; variabl2319 =不包含; String ; variabl2851=0; for (int i0=0;i0variabl240501.length;i0++) variabl2405 = variabl240501 ; if (parameter .length()0){ variabl1187=parameter ; variabl1187=variabl1187.replaceAll(;,;); variabl1187=variabl1187.replaceAll(。,;); variabl1187=variabl1187.replaceAll(:,;); variabl1187=variabl1187.replaceAll(:,;); if (variabl1187.indexOf(;)0){ String s601 .indexOf(;)0){ String s602 .split(;); variabl2405 ))]=s602 ; variabl1187=variabl1187+,+s602 ; variabl2851++; } else { variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { String s601 ; else variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { variabl1187=; for (int i1=0;i1variabl2405.length;i1++){ if (i1==0) variabl1187=variabl1187+i1; else variabl1187=variabl1187+,+i1; variabl2851++; } } variabl1187=,+variabl1187+,; variabl2483=main1.variabl2483; variabl2503=main1.variabl2503; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ; m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } variabl2483=m1 ; variabl2503=m2 ; } }catch(Exception e2){} variabl2603=parameter ; variabl1325=parameter ; variabl2049=parameter ; if (variabl1325.lastIndexOf(,)==variabl1325.length()-1 ) variabl1325=variabl1325.substring(0,variabl1325.length()-1); String .length()0){ variabl1735=parameter .split(,); variabl2517=new String ; for (int i=0;ivariabl1735.length;i++){ variabl2517 =s6 )]; variabl2517 =variabl2517 ; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; } else { variabl2517=new String ; for (int i=0;is6.length;i++){ variabl2517 =s6 ; variabl2517 =s6 ; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; s2= * ; } try { con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=sta3.executeQuery(select +s2+ from +variabl2603); rsmd3 = rs.getMetaData(); variabl2651=rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; for (int i=0;ivariabl2651;i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 =variabl2517 .length(); if (variabl1489 50) variabl1489 =50; b++; } int rowNumber=0; rs.last(); rowNumber=rs.getRow(); variabl2197=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); } catch(SQLException e) { JOptionPane.showMessageDialog( null, 读取数据出错!); } frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 5,variabl2483-10,variabl2503-10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20,variabl2483-50,variabl2503-20); tableModel = new DefaultTableModel(variabl2197,variabl2517); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 40,variabl2483-100,variabl2503-150); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); for (int i=0;ivariabl2651;i++) { TableColumn tc = table.getColumn(variabl2517 ); tc.setPreferredWidth(variabl1489 *12); } panel.add(scrollPane); JLabel label=new JLabel(请选择字段名:); label.setBounds(20,5, 100, 20); panel.add(label); choice = new Choice(); s6=variabl1325.split(,); for (int i=0;is6.length;i++) { choice.add(s6 ); } choice.setBounds(130, 5 , 100,60); panel.add(choice); choice1 = new Choice(); for (int i=0;i8;i++) { choice1.add(variabl2319 ); } choice1.setBounds(240, 5 ,80,60); panel.add(choice1); aTextField = new JTextField( , 10); aTextField.setBounds(330, 5 ,150, 20); panel.add(aTextField); variabl2339=(variabl2483-520)/variabl2851; int variabl2337=490; final JButton selectButton = new JButton(variabl2405 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try{ con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String s0=; String s1=choice.getSelectedItem(); String s2=variabl1501 ; String s3=aTextField.getText().trim(); String s4=variabl2319 ; if ((main1.variabl1539.lastIndexOf(s2))=0){ JOptionPane.showMessageDialog(null,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if(main1.variabl1545.lastIndexOf(,+s2+,)=0){ if(s4.indexOf(like)=0){ JOptionPane.showMessageDialog(null,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else{ s1=s1+s4+s3.trim(); } } else if(main1.variabl1537.lastIndexOf(s2)=0){ if(s4.indexOf(like)=0){ s3= '%+s3+%'; s1=s1+s4+s3; } else{ JOptionPane.showMessageDialog(null,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { if(s4.indexOf(like)=0) s3=%+s3+%; else { if ((s2.indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(null,日期时间类型进行查询时数据格式必须为yyyy-yy-dd,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((s2.indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.000 +08:00; } s1=s1+s4+'+s3+'; } if (s1.length()1) s0= where +s1; s0=select +variabl1325+ from +variabl2603+s0; ResultSet rs=sta3.executeQuery(s0); int rowNumber=0; rs.last(); rowNumber=rs.getRow(); rsmd3 = rs.getMetaData(); variabl2651=rsmd3.getColumnCount(); variabl2197=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); tableModel = new DefaultTableModel(variabl2197,variabl2517); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.setViewportView(table); } catch(Exception e1) { JOptionPane.showMessageDialog( null, 查询数据出错!+s1); } } }); selectButton.setBounds(variabl2337, variabl2503-100 ,variabl2339, 20); if (variabl1187.indexOf(,0,)=0) { variabl2337=variabl2337+variabl2339; panel.add(selectButton); } final JButton exitButton = new JButton(variabl2405 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(variabl2337, variabl2503-100 ,variabl2339, 20); if (variabl1187.indexOf(,1,)=0) { variabl2337=variabl2337+variabl2339; panel.add(exitButton); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } } 8.源码8,部件程序,多表可选字段名、选择关系符单条件查询,可按字典表变换字段名。 /** * 程序文件名:dataQuery4.java * 作者:程学先 * 完成时间:2013年11月17日 * 部件功能:可指定多数据表,选择字段、选择关系条件、输入查询数据之后 * 做多表数据查询并显示结果。 可利用字典表变换字段名 。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.sql.*; public class dataQuery4 extends JFrame { static dataQuery4 frame = new dataQuery4(); static String variabl2603; static String variabl1873; static String variabl2429; static DefaultTableModel tableModel; static JTable table; static JScrollPane scrollPane = new JScrollPane(); static JTextField aTextField; static JButton b1,b2; static String s1=; static ResultSet rs; static int b=0,c=0; static int variabl2651; static int variabl2113; static String variabl2517; static String variabl2319={{ ,大于},{ ,小于},{ = ,等于},{ = ,大于等于},{ = ,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; static String variabl1501; static String variabl1489; static int variabl1735; static int variabl2337=80; static Connection con; static ResultSetMetaData rsmd3; static Statement sta3; static int variabl2483 = 1000, variabl2503 = 600; static String parameter) { frame = new dataQuery4(); variabl2603=; scrollPane = new JScrollPane(); s1=; b=0;c=0; variabl2337=80;variabl2483 = 1000; variabl2503 = 700; variabl2319 = ; variabl2319 =大于; variabl2319 = ; variabl2319 =小于; variabl2319 = = ; variabl2319 =等于; variabl2319 = = ; variabl2319 =大于等于; variabl2319 = = ; variabl2319 =小于等于; variabl2319 = ; variabl2319 =不等于; variabl2319 = like ; variabl2319 =包含; variabl2319 = not like ; variabl2319 =不包含; String ; variabl2851=0; for (int i0=0;i0variabl240501.length;i0++) variabl2405 = variabl240501 ; if (parameter .length()0){ variabl1187=parameter ; variabl1187=variabl1187.replaceAll(;,;); variabl1187=variabl1187.replaceAll(。,;); variabl1187=variabl1187.replaceAll(:,;); variabl1187=variabl1187.replaceAll(:,;); if (variabl1187.indexOf(;)0){ String s601 .indexOf(;)0){ String s602 .split(;); variabl2405 ))]=s602 ; variabl1187=variabl1187+,+s602 ; variabl2851++; } else { variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { String s601 ; else variabl1187=variabl1187+,+s601 ; variabl2851++; } } } else { variabl1187=; for (int i1=0;i1variabl2405.length;i1++){ if (i1==0) variabl1187=variabl1187+i1; else variabl1187=variabl1187+,+i1; variabl2851++; } } variabl1187=,+variabl1187+,; variabl2483=main1.variabl2483; variabl2503=main1.variabl2503; int m1,m2; try{ if (parameter .length()==0) { m1=0;m2=0; } else { m1=Integer.parseInt(parameter ) ; m2=Integer.parseInt(parameter ) ; } if (m10){ if (m280){ m1=m1*10; m2=m2*10; } variabl2483=m1 ; variabl2503=m2 ; } }catch(Exception e2){} variabl2603=parameter ; variabl2049=parameter ; variabl2429=parameter ; variabl1325=parameter ; if (variabl1325.lastIndexOf(,)==variabl1325.length()-1 ) variabl1325=variabl1325.substring(0,variabl1325.length()-1); String .length()0){ variabl1735=parameter .split(,); variabl2517=new String ; for (int i=0;ivariabl1735.length;i++){ variabl2517 =s6 )]; variabl2517 =variabl2517 ; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; } else { variabl2517=new String ; for (int i=0;is6.length;i++){ variabl2517 =s6 ; variabl2517 =s6 ; if (s2.length()0) s2=s2+,+variabl2517 ; else s2=variabl2517 ; } variabl1325=s2; s2= * ; } String s11=variabl2603; if (variabl2603.indexOf(,)0){ String ; } String .lastIndexOf(s11+字典表)=0) variabl1873=t1 ; } if (variabl1873.length()0){ try { con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); s1 = select * from + variabl1873; rs = sta3.executeQuery(s1); ResultSetMetaData rsmd = rs.getMetaData(); int variabl26510=rsmd.getColumnCount(); int numberOfColumns=rsmd.getColumnCount(); String s14=; String s15=; int b=1; while (rs.absolute(b)) { b++; s14=rs.getString(1); s15=rs.getString(2); for (int j=0;jvariabl2517 .length;j++){ if ((variabl2517 .trim().equals(s14.trim()))||(variabl2517 .indexOf(.+s14)0)){ variabl2517 =s15; break; } } } rs.close(); con.close(); sta3.close(); } catch (SQLException e) { JOptionPane.showMessageDialog( null, 连接数据库出错!); } } try { con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String s; if (variabl2049.trim().length()0) s=select +variabl1325+ from +variabl2603+ where +variabl2049; else s=select +variabl1325+ from +variabl2603; ResultSet rs=sta3.executeQuery(s); rsmd3 = rs.getMetaData(); variabl2651=rsmd3.getColumnCount(); variabl1501 = new String ; variabl1489 = new int ; for (int i=0;ivariabl2651;i++) { variabl1501 = rsmd3.getColumnTypeName(i + 1); variabl1489 = rsmd3.getColumnDisplaySize(i + 1); if (variabl1489 variabl2517 .length()) variabl1489 =variabl2517 .length(); if (variabl1489 50) variabl1489 =50; b++; } int rowNumber=0; rs.last(); rowNumber=rs.getRow(); variabl2197=new String ; rs.absolute(1); c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); con.close(); } catch(SQLException e) { JOptionPane.showMessageDialog( null, 查询数据出错!); } frame.setTitle(查询部件程序 作者:程学先); frame.setBounds(10, 10,variabl2483-10,variabl2503-10); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null); final JPanel panel = new JPanel(false); panel.setLayout(null); panel.setBounds(20, 20,variabl2483-50,variabl2503-20); tableModel = new DefaultTableModel(variabl2197,variabl2517 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.getViewport().add(table, null); scrollPane.setBounds(30, 60,variabl2483-100,variabl2503-200); for (int i=0;ivariabl2651;i++) { TableColumn tc = table.getColumn(variabl2517 ); tc.setPreferredWidth(variabl1489 *12); } panel.add(scrollPane); JLabel label=new JLabel(请选择字段名:); label.setBounds(20,10, 100, 20); panel.add(label); final Choice choice = new Choice(); for (int i=0;ivariabl2651;i++) { choice.add(variabl2517 ); } choice.setBounds(130, 10 , 100,60); panel.add(choice); final Choice choice1 = new Choice(); for (int i=0;i8;i++) { choice1.add(variabl2319 ); } choice1.setBounds(240, 10 ,80,60); panel.add(choice1); aTextField = new JTextField(, 10); aTextField.setBounds(330, 10 ,150, 20); panel.add(aTextField); variabl2339=(variabl2483-480)/variabl2851; int variabl2337=450; final JButton selectButton = new JButton(variabl2405 ); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s0=; try{ con=main1.getConn(); sta3 = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); int variabl2099=Integer.valueOf(choice.getSelectedIndex()); String s1=variabl2517 ; String s2=variabl1501 ; String s3=aTextField.getText().trim(); String s4=variabl2319 ; if ((main1.variabl1539.lastIndexOf(s2))=0){ JOptionPane.showMessageDialog(null,不允许使用图形与二进制数据类型作为查询条件!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if(main1.variabl1545.lastIndexOf(,+s2+,)=0){ if(s4.indexOf(like)=0){ JOptionPane.showMessageDialog(null,数字数据类型不能进行模式匹配!,提示, JOptionPane.INFORMATION_MESSAGE); return; } else{ s1=s1+s4+s3.trim(); } } else if(main1.variabl1537.lastIndexOf(s2)=0){ if(s4.indexOf(like)=0){ s3= '%+s3+%'; s1=s1+s4+s3; } else{ JOptionPane.showMessageDialog(null,文本类大数据类型只能用包含或不包含进行查询,提示, JOptionPane.INFORMATION_MESSAGE); return; } } else { if(s4.indexOf(like)=0) s3=%+s3+%; else { if ((s2.indexOf(datetime)=0) (s3.length()10)){ JOptionPane.showMessageDialog(null,日期时间类型进行查询时数据格式必须为yyyy-yy-dd,提示, JOptionPane.INFORMATION_MESSAGE); return; } else if ((s2.equals(datetime)) (s3.length()11)) s3=s3+ 00:00:00.000; else if ((s2.equals(smalldatetime)) (s3.length()11)) s3=s3+ 00:00:00.00; else if ((s2.indexOf(datetimeoffset)=0) (s3.length()11)) s3=s3+ 00:00:00.000 +08:00; } s1=s1+s4+'+s3+'; } if (variabl2049.trim().length()0) s0= where +variabl2049+ and +s1; else if (s1.length()1) s0= where +s1; s0=select +variabl1325+ from +variabl2603+s0; ResultSet rs=sta3.executeQuery(s0); int rowNumber=0; rs.last(); rowNumber=rs.getRow(); rsmd3 = rs.getMetaData(); variabl2651=rsmd3.getColumnCount(); variabl2197=new String ; c=0; b=0; while(crowNumber) { rs.absolute(c+1); while(bvariabl2651){ variabl2197 =rs.getString(b+1); b++; } c++; b=0; } rs.close(); sta3.close(); con.close(); tableModel = new DefaultTableModel(variabl2197,variabl2517 ); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch(Exception e1) { JOptionPane.showMessageDialog( null, 查询数据出错!+s0); } } }); selectButton.setBounds(variabl2337, 10 ,variabl2339, 20); if (variabl1187.indexOf(,0,)=0) { variabl2337=variabl2337+variabl2339; panel.add(selectButton); } final JButton exitButton = new JButton(variabl2405 ); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(false); frame.setVisible(false); frame.dispose(); } }); exitButton.setBounds(variabl2337, 10 ,variabl2339, 20); if (variabl1187.indexOf(,1,)=0) { variabl2337=variabl2337+variabl2339; panel.add(exitButton); } frame.getContentPane().add(panel, null); frame.setVisible(true); frame.getContentPane().add(panel, BorderLayout.SOUTH); } public static String array; String s1=str; int i=1; while(s1.indexOf(,)!=-1){ s1=s1.substring(s1.indexOf(,)+1,s1.length()); i++; } array=new String ; int j=0; while(str.indexOf(,)!=-1){ array =str.substring(0,str.indexOf(,)); str=str.substring(str.indexOf(,)+1,str.length()); array =str; j++; } return array; } }
个人分类: 生活点滴|1891 次阅读|0 个评论
管理信息系统软件生产线源码1-3
求新 2018-5-26 17:02
版本1 1.源码1,数据库桌面操作系统主程序。 import java.util.ArrayList; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.tree.*; import java.io.*; import java.sql.*; /** * 程序文件名:sysParametric.java * 作者:程学先 * 用途:数据库桌面系统入口程序。 * 完成日期:2015年3月15日 * 操作时首先必须输入部件名,输入部件名后,可能需要输入参数的文本框被激活 * 其他文本框被灰掉,选择部分被激活的文本框,在其中输入参数 * 除表名、关键字名及程序主要参数外,不要求所有的参数框都填上数据。 * 一般部件程序都要求输入数据表名称,之后如果需要选择关键字、字段名等,会在列表框中得到提示, * 如果需要选择按钮,在列表框中会显示供选按钮名,只需点击就可完成输入。 * 在第一次点击“数据表名”文本框时由于需要读取数据库中表名数据,反映比较慢,请耐心等候。 * “关键字段名”中要求输入字段名称, “要求字段号表”、“要求按钮号表”等中输入顺序号,从列表框可获得顺序号。 * “DBMS数据库名”、“数据库名称”、“ODBC数据源”等在执行“0系统初始化.jar”(cover.java)程序时定义,一般无需输入。 * 在许多部件程序中,“关键字段名”为识别与区分记录的主要标志,不允许重复,不允许为空,可以是单一字段, * 也可以是多个字段。如果是多字段,以英文逗号分隔。 * “要求字段号表”:所操作数据可以是表的全部字段,也可以只涉及部分字段。如果选择全部字段,初始值设为。 * 否则写入所有将涉及的字段在表中的顺序号,号与号之间以英文逗号分隔,选择字段可呈现不同视图。 * 不同部件预设的按钮情况不同,“要求按钮号表”要求选择程序运行时界面 中的顺序号,各按钮号用逗号分隔, * 通过选择按钮使完成不同功能,使一个部件程序作不同构件程序使用。 * 其他文本框填写方法参看各部件使用说明。 * 参数填写完毕后,点击“执行”按钮,将调出相应部件程序进行关于数据库的操作。 */ public class sysParametric extends JFrame{// implements TreeModelListener private static sysParametric frame; private static JPanel 面板1; private JTree tree; private JScrollPane treeScroll; //树滚动条 private static JLabel la0,la1,la2,la3,la4,la5,la6,la7,la8,la9,la10; //19个标签 private static JLabel la11,la12,la13,la14,la15,la16,la17,la18,la19; private static JTextField fa0,fa1,fa2,fa3,fa4,fa5,fa6,fa7,fa8,fa9,fa10; //19个文本框 private static JTextField fa11,fa12,fa13,fa14,fa15,fa16,fa17,fa18,fa19; private static List list; //列表框 static Connection con; // 连接数据库 static String url; // 某些数据库的连接URL private static DefaultTreeModel treeModel=null; private static String ODBC数据源=sql1; private static String nodeName=null;//原有节点名称 private static String 参数=new String ; private static String 附加参数=new String ; private static String ; //传给部件程序的参数数组名 private static String 节点路径; private static int 序号=0; private static ArrayList 表名1=new ArrayList(); private static String 当前表名=; private static String 表名表=; private static String 字段名表=; private static String s1=,s2=; private static String 连接条件串=; private static String ; private static int 关键字序号=0; private static int 列数; private static int 列数0; private static int 次数=1; private static ArrayListString 列名=new ArrayListString(); private static ArrayListString 列名1=new ArrayListString(); private static ArrayListString 列名所属=new ArrayListString(); private static int 当前组件号=0,部件号=0; private static int 右键标志; private static int ; //假定在一个系统中每个部件重复使用次数100 static String 关系符={{,大于},{,小于},{=,等于},{=,大于等于},{=,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; public static void main(String ; 附加参数=new String ; parameter1=new String ; 序号=0; 表名1=new ArrayList(); 当前表名=;表名表=;字段名表=; s1=;s2=; 连接条件串=; 关键字数组=new String ;关键字序号=0; 列名=new ArrayListString(); 列名1=new ArrayListString(); 列名所属=new ArrayListString(); 当前组件号=0;部件号=0; 部件使用号=new int ; 关系符 =; 关系符 =大于; 关系符 =; 关系符 =小于; 关系符 ==; 关系符 =等于; 关系符 ==; 关系符 =大于等于; 关系符 ==; 关系符 =小于等于; 关系符 =!; 关系符 =不等于; 关系符 =$; 关系符 =包含; 关系符 =!$; 关系符 =不包含; treeModel=null;ODBC数据源=sql1;nodeName=null; 参数=new String ;附加参数=new String ; parameter1=new String ;表名1=new ArrayList(); 当前表名=;表名表=;字段名表=;s1=;s2=; 连接条件串=;关键字数组=new String ;关键字序号=0; 次数=1;列名=new ArrayListString(); 列名1=new ArrayListString();列名所属=new ArrayListString(); 当前组件号=0;部件号=0;部件使用号=new int ; String sk=,大于。,小于。=,等于。=,大于等于。=,小于等于。,不等于。 like ,包含。 not like ,不包含; String =sk0 .split(,); frame = new sysParametric(); frame.setVisible(true); } static void delNode(String 节点){ //迭代删除数组中某一节点的全部子节点(做标记) for (int i1=0;i1=序号;i1++) //查子节点 if (参数 .trim().equals(节点.trim())){//如果有某个节点父节点等于当前节点 参数 =+100;//做删除标记 delNode(参数 ); //查再下一级节点 } } static void addNode(DefaultMutableTreeNode 父节点,String 节点){//迭代组装节点的全部子节点 for (int i1=1;i1序号;i1++){ //查子节点 if (参数 .trim().equals(节点.trim())){//如果有某个节点父节点等于当前节点 DefaultMutableTreeNode nodek1=new DefaultMutableTreeNode(参数 ); 父节点.add(nodek1); addNode(nodek1,参数 ); //继续查下一级子节点 } } } static ResultSet GetRs() { // 获取当前数据库中所有数据表的名字,供list1显示,并传递给部件程序 try { String s6=s1.split(,); for (int i=0;is6.length;i++){ 当前表名=s6 ; readStructure(); } 字段名表=; for (int i=0;i列名1.size();i++) 字段名表=字段名表+列名1.get(i)+,; } static void readStructure() //读结构 { if (la5.getText().trim().equals(表名)){ 列名.clear(); 列名1.clear(); 列名所属.clear(); 字段名表=; 连接条件串=; } String .substring(0,关键字数组 .indexOf(.)-1).equals(当前表名.trim())))){ 关键字数组 =列名1.get(i); if (fa7.getText().length()1){ fa7.setText(列); } else { fa8.setText(列); } 关键字序号++; } if (连接条件串.length()==0) 连接条件串=列名所属.get(i)+.+列+=+当前表名+.+列; else 连接条件串=连接条件串+ and +列名所属.get(i)+.+列+=+当前表名+.+列; break; } } 列名.add(当前表名+.+列+ as +列+0+x);//重复字段修改输出用列名,带表名 列名1.add(当前表名+.+列+ as +列+0+x);//重复字段修改输出用列名 列名所属.add(当前表名); } b0++; } rs.close(); con.close(); }catch (SQLException e){ JOptionPane.showMessageDialog( null, 连接数据库出错!); } } public sysParametric() { for (int i=0;i100;i++) { 附加参数 = ; 附加参数 = ; } setTitle(数据库桌面系统入口程序 作者:程学先); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //窗口 setBounds(10, 10, 950, 660); //窗口大小位置 main1.driver1(); con=main1.getConn(); try { //查找当前数据库中所有数据表名称并放到表名表中 ResultSet rst = GetRs(); while (rst.next()) { 表名1.add(rst.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } for (int i=0;i表名1.size();i++){ 表名表=表名表+表名1.get(i).toString(); if (i表名1.size()-1) 表名表=表名表+,; } 面板1 = new JPanel(); //面板名 面板1.setLayout(null); //自定义(关闭)面板的布局管理器 setContentPane(面板1); //安装面板1 la1 = new JLabel(部件名称); la1.setBounds(280, 30, 100, 25); 面板1.add(la1); fa1 = new JTextField(0); fa1.setBounds(380, 30, 200, 25); 面板1.add(fa1); fa1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=1; list.removeAll(); } }); la2 = new JLabel(DBMS名称); la2.setBounds(280,100, 100, 25); 面板1.add(la2); fa2 = new JTextField(0); fa2.setBounds(380,100, 200, 25); 面板1.add(fa2); fa2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=2; list.removeAll(); } }); la3 = new JLabel(数据库名称); la3.setBounds(280, 125, 100, 25); 面板1.add(la3); fa3 = new JTextField(0); fa3.setBounds(380, 125, 200, 25); 面板1.add(fa3); fa3.setText(); fa3.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=3; list.removeAll(); if (表名1.size()1){ try { ResultSet rst = GetRs(); while (rst.next()) { // 遍历集合 表名1.add(rst.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } } for (int i=0;i表名1.size();i++){ list.add(表名1.get(i).toString()); } } }); la4 = new JLabel(ODBC源名); la4.setBounds(280,150, 100,25); 面板1.add(la4); fa4 = new JTextField(0); fa4.setBounds(380,150, 200,25); 面板1.add(fa4); fa4.setText(); fa4.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=4; list.removeAll(); if (部件号48) { if (表名1.size()1){ try { ResultSet rst = GetRs(); while (rst.next()) { // 遍历集合 表名1.add(rst.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } } for (int i=0;i表名1.size();i++) list.add(表名1.get(i).toString()); } } }); la5 = new JLabel(数据表名); la5.setBounds(280, 175, 100, 25); 面板1.add(la5); fa5 = new JTextField(0); fa5.setBounds(380, 175, 200, 25); 面板1.add(fa5); fa5.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=5; list.removeAll(); for (int i=0;i表名1.size();i++) { //在列表框中加入所有表名 list.add(表名1.get(i).toString()); } String 表名0=表名表; } }); la6 = new JLabel(接口参数表名); la6.setBounds(280, 200, 100, 25); 面板1.add(la6); fa6 = new JTextField(0); fa6.setBounds(380, 200, 200, 25); 面板1.add(fa6); fa6.setText(); fa6.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 右键标志=evt.getModifiers(); Object sk={,,,,,,,,,,,,,,,,,,,,,}; if (右键标志==4){ JOptionPane.showMessageDialog( null, 右键标志+参数设置!+部件号+fa1.getText()); } 当前组件号=6; list.removeAll(); if (,29,31,32,33,35,36,38,39,.indexOf(,+部件号+,)=0){ //表格式维护10、11;单记录维护3、6、7有安全、完整性控制,条件存放在文件中 final JFileChooser fc = new JFileChooser(.\\\\); //文件夹对话框 fc.showOpenDialog(null); //打开文件夹对话框 if (fc.getSelectedFile()!=null){ s1=fc.getSelectedFile().toString(); s2=; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).equals(\\\\)) s2=s2+ \\\\+\\\\ ; else s2=s2+s1.substring(i,i+1); fa6.setText(s2); } } if ((部件号4)(部件号9)) { if (表名1.size()1){ try { ResultSet rst = GetRs(); while (rst.next()) { // 遍历集合 表名1.add(rst.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } } for (int i=0;i表名1.size();i++) list.add(表名1.get(i).toString()); } } }); la7 = new JLabel(关键字名); la7.setBounds(280, 225, 100, 25); 面板1.add(la7); fa7 = new JTextField(0); fa7.setBounds(380, 225, 200, 25); 面板1.add(fa7); fa7.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=7; list.removeAll(); 当前表名 = fa5.getText(); for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); } }); la8 = new JLabel(外关键字名); la8.setBounds(280, 250, 100, 25); 面板1.add(la8); fa8 = new JTextField(); fa8.setBounds(380, 250, 200,25); 面板1.add(fa8); fa8.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=8; list.removeAll(); 当前表名 = fa5.getText(); for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); } }); la9 = new JLabel(字段号表); la9.setBounds(280, 275, 100, 25); 面板1.add(la9); fa9 = new JTextField(0); fa9.setBounds(380, 275, 200, 25); 面板1.add(fa9); fa9.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=9; list.removeAll(); 当前表名 = fa5.getText(); for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); } }); la10 = new JLabel(字段号表2); la10.setBounds(280, 300, 100, 25); 面板1.add(la10); fa10 = new JTextField(0); fa10.setBounds(380, 300, 200, 25); 面板1.add(fa10); fa10.setText(); fa10.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=10; list.removeAll(); 当前表名 = fa5.getText(); for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); } }); la11 = new JLabel(字段号表3); la11.setBounds(280, 325, 100, 25); 面板1.add(la11); fa11 = new JTextField(0); fa11.setBounds(380, 325, 200, 25); 面板1.add(fa11); fa11.setText(); fa11.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=11; list.removeAll(); 当前表名 = fa5.getText(); if ((部件号17) ||(部件号19)) for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); else { list.add(请先选列名,再选关系符,再选与,再选列名,再选关系符); for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); list.add( 格式例1:学号大于?); list.add(与); list.add(或者); list.add( 格式例2:学号大于?与性别等于?); for (int i=0;i关系符.length;i++) list.add(关系符 +?); } } }); la12 = new JLabel(按钮号表); la12.setBounds(280, 350, 100, 25); 面板1.add(la12); fa12 = new JTextField(0); fa12.setBounds(380, 350, 200, 25); 面板1.add(fa12); fa12.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=12; list.removeAll(); for (int i=0;i按钮集1.length;i++){ list.add(按钮集1 ); } } }); la13 = new JLabel(按钮号表2); la13.setBounds(280, 375, 100, 25); 面板1.add(la13); fa13 = new JTextField(0); fa13.setBounds(380, 375, 200, 25); 面板1.add(fa13); fa13.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=13; list.removeAll(); if (部件号26) for (int i=0;i关系符.length;i++) list.add(关系符 ); else for (int i=0;i按钮集1.length;i++){ list.add(按钮集1 ); } } }); la14 = new JLabel(条件表达式); la14.setBounds(280, 400, 100, 25); 面板1.add(la14); fa14 = new JTextField(0); fa14.setBounds(380, 400, 200, 25); 面板1.add(fa14); fa14.setText(); fa14.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=14; list.removeAll(); 当前表名 = fa5.getText(); String s9={p01 统计方差,p02 标准偏差,p03 平均偏差, p04 变中文大写元角分(壹仟零叁拾元),p05 变中文元角分(一千零二十元), p06 变表格格式中文大写元角分(壹仟零佰贰拾零元),p07 变为表格格式中文元角分(一千零百二十零元), p08 变表格格式中文元角分(一仟零三十元零三角)为数字, p09 变表格格式中文大写元角分(壹仟零百贰拾零元叁角零分)为数字, p10 变中文元角分(亿千百十万千百十元零一二三四五六七八九)为数字, p11 变大写中文(亿仟佰拾万仟佰拾元零壹贰叁肆伍陆柒捌玖)为数字, p12 小写变大写字母,p13 对多表全连接, p14 返回数字型星期值,p15 返回年份,p16 返回字符型星期值, p17 返回小时部分,p18 返回分钟部分,p19 返回月份值, p20 返回秒钟部分,p21 返回一个日期值,p22 返回二个日期相隔天数, p23 返回当前的日期和时间,p24 变日期为数字年月日(2003年 1月15日), p25 变日期格式为字符****.**.**格式,p26 变日期格式为字符****-**-**格式, p27 变日期格式为(YYYYMMDD)格式,p28 变中文年月日(二零零三年元月十五日)为日期格式, p29 变中文年月日(二零零三年元月十五日)为日期格式,p30 变数字年月日(2003年 1月15日)格式为日期格式, p31 返回月份英文名称,p32 求和,p33 求平均,p34 求最大,p35 求最小,p36 求UTF-16BE码,p37 按文件变换}; if ((部件号==36)||(部件号==37)) for (int i=0;is8.length;i++) list.add(s8 ); else if (部件号==38) for (int i=0;is9.length;i++) list.add(s9 ); if (部件号==6){ for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); list.add(以下再选关系符); for (int i=0;i关系符.length;i++) list.add(关系符 ); } else if (部件号26) for (int i=0;i关系符.length;i++) list.add(关系符 ); else if (部件号==63){ list.add(请先选列名,再选关系符,再选与,再选列名,再选关系符); for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); list.add( 请选择关系符并输入查询内容值); list.add( ); list.add( ); list.add( = ); list.add( = ); list.add( = ); list.add( ); list.add( like ); list.add( 如果是多条件请选择逻辑符:); list.add( and ); list.add( or ); } else { for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); } } }); la15 = new JLabel(输出要求); la15.setBounds(280, 425, 100, 25); 面板1.add(la15); fa15 = new JTextField(0); fa15.setBounds(380, 425, 200, 25); 面板1.add(fa15); fa15.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=15; list.removeAll(); 当前表名 = fa5.getText(); for (int i=0;i列名1.size();i++) list.add(列名1.get(i)); } }); la16 = new JLabel(格式文件名); la16.setBounds(280, 450, 100, 25); 面板1.add(la16); fa16 = new JTextField(0); fa16.setBounds(380, 450, 200, 25); 面板1.add(fa16); fa16.setText(); fa16.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=16; list.removeAll(); final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile()!=null){ s1=fc.getSelectedFile().toString(); s2=; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).equals(\\\\)) s2=s2+ \\\\+\\\\ ; else s2=s2+s1.substring(i,i+1); fa16.setText(s2); }} }); la17 = new JLabel(格式文件名2); la17.setBounds(280, 475, 100, 25); 面板1.add(la17); fa17 = new JTextField(0); fa17.setBounds(380, 475, 200, 25); 面板1.add(fa17); fa17.setText(); fa17.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=17; list.removeAll(); final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile()!=null) s1=fc.getSelectedFile().toString(); s2=; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).equals(\\\\)) s2=s2+ \\\\+\\\\ ; else s2=s2+s1.substring(i,i+1); fa17.setText(s2); } }); la18 = new JLabel(文件类型); la18.setBounds(280, 500, 100, 25); 面板1.add(la18); fa18 = new JTextField(0); fa18.setBounds(380, 500, 200, 25); 面板1.add(fa18); fa18.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=18; list.removeAll(); } }); la19 = new JLabel(文件名); la19.setBounds(280, 525, 100, 25); 面板1.add(la19); fa19 = new JTextField(0); fa19.setBounds(380, 525, 200, 25); 面板1.add(fa19); fa19.setText(); fa19.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { 当前组件号=19; list.removeAll(); if (! la19.getText().equals(面板高度)) { final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile()!=null){ s1=fc.getSelectedFile().toString(); s2=; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).equals(\\\\)) s2=s2+ \\\\+\\\\ ; else s2=s2+s1.substring(i,i+1); fa19.setText(s2); } } } }); 清屏0(); JLabel la20 = new JLabel(请选择输入内容); la20.setBounds(600, 30,400, 20); 面板1.add(la20); list = new List(30,false); //列长30,只能单选 list.setBounds(600, 60,300,460); JScrollPane listScroll = new JScrollPane(list);//加滚动条到list list.addMouseListener(new MouseAdapter() { //列表框响应事件 public void mouseClicked(MouseEvent evt) { switch (当前组件号) { //根据当前组件号确定焦点 //各个控件动作控制 case 2: //DBMS名称 fa2.setText(list.getSelectedItem()); break; case 3: //导入或导出数据表名,关系操作表2名 fa3.setText(list.getSelectedItem()); break; case 4: //ODBC源名 fa4.setText(list.getSelectedItem()); break; case 6: //接口参数表名 if (部件号==6) if (fa6.getText().length()0){ fa6.setText(fa6.getText()+,+list.getSelectedItem()); } else fa6.setText(list.getSelectedItem()); else fa6.setText(list.getSelectedItem()); break; case 18: //文件类型 fa18.setText(list.getSelectedItem()); break; case 5: //数据表名 if (fa5.getText().length()1){ fa5.setText(list.getSelectedItem()); } else if (la5.getText().trim().equals(表名))//20160209 fa5.setText(list.getSelectedItem()); else{ fa5.setText(fa5.getText()+,+list.getSelectedItem()); } 当前表名=list.getSelectedItem(); readStructure(); break; case 7: //关键字名 if (fa7.getText().length()1) fa7.setText(list.getSelectedItem()); else fa7.setText(fa7.getText()+,+list.getSelectedItem()); break; case 8: //外关键字名 if (部件号==6) fa8.setText(list.getSelectedItem()); else if (fa8.getText().length()1) fa8.setText(list.getSelectedItem()); else fa8.setText(fa8.getText()+,+list.getSelectedItem()); break; case 9: //字段号表 if (部件号==6) if (fa9.getText().length()1) fa9.setText(list.getSelectedItem()); else fa9.setText(fa9.getText()+,+list.getSelectedItem()); else if (fa9.getText().length()1) fa9.setText(+list.getSelectedIndex()); else fa9.setText(fa9.getText()+,+list.getSelectedIndex()); break; case 10: //字段号表2、查询字段 if ((部件号18)(部件号!=6)(部件号!=11)(部件号!=12)) fa10.setText(+list.getSelectedIndex()); else if (部件号==6) fa10.setText(+list.getSelectedItem()); else if (fa10.getText().length()1) fa10.setText(+list.getSelectedIndex()); else fa10.setText(fa10.getText()+,+list.getSelectedIndex()); break; case 11: //字段号表3 if (部件号18) fa11.setText(+list.getSelectedIndex()); else if ((部件号==18)||(部件号==19)) fa11.setText(fa11.getText()+list.getSelectedItem()); else if (fa11.getText().length()1) fa11.setText(+list.getSelectedItem()); else fa11.setText(fa11.getText()+,+list.getSelectedItem()); break; case 12: //按钮号表 if (fa12.getText().length()1) fa12.setText(+list.getSelectedIndex()); else fa12.setText(fa12.getText()+,+list.getSelectedIndex()); break; case 13: //按钮号表2 if ((部件号13)(部件号17)) fa13.setText(+list.getSelectedItem()); else{ if (fa13.getText().length()1) fa13.setText(+list.getSelectedItem()); else fa13.setText(fa13.getText()+,+list.getSelectedItem()); } break; case 14: //条件表达式 if (((部件号10)(部件号20))||((部件号35)(部件号39))) fa14.setText(+list.getSelectedItem()); else{ if (fa14.getText().length()1) fa14.setText(+list.getSelectedItem()); else if ((部件号==63)||(部件号==39)) fa14.setText(fa14.getText()+list.getSelectedItem()); else if (部件号==6) fa14.setText(fa14.getText()+ +list.getSelectedItem()); else fa14.setText(fa14.getText()+,+list.getSelectedItem()); } break; case 15: //输出要求 if (部件号==6) if (fa15.getText().length()1) fa15.setText(+list.getSelectedItem()); else fa15.setText(fa15.getText()+++list.getSelectedItem()); else if ((部件号35)(部件号39)) fa15.setText(+list.getSelectedItem()); else{ if (fa15.getText().length()1) fa15.setText(+list.getSelectedItem()); else fa15.setText(fa15.getText()+,+list.getSelectedItem()); } break; } } }); 面板1.add(list); //建立目录树 DefaultMutableTreeNode root=new DefaultMutableTreeNode(部件集); //加根节点 int k=0; for (int i1=0;i1大类表.length;i1++){ DefaultMutableTreeNode root1=new DefaultMutableTreeNode(大类表 );//加第一级节点 root.add(root1); addNode(root1,大类表 ); //加子节点 for (int j1=0;j1子类数量 ;j1++){ DefaultMutableTreeNode root2=new DefaultMutableTreeNode(部件名表 );//加第一级节点 root1.add(root2); addNode(root2,部件名表 ); //加子节点 k++; } } tree=new JTree(root); //定义树 treeScroll=new JScrollPane(tree); //定义滚动条 tree.addMouseListener(new MouseHandle()); //添加鼠标监听 treeModel=(DefaultTreeModel)tree.getModel(); treeScroll.setBounds(10, 30, 260, 560);//滚动条大小 面板1.add(treeScroll);//安装滚动条 this.setVisible(true);//激活 this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //创建一个新的DefaultMutableTreeNode节点 tree.repaint(); //树更新 JButton 清屏 = new JButton(清屏); 清屏.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { 清屏0(); } }); 清屏.setBounds(600, 550,100, 25); 面板1.add(清屏); JButton 执行 = new JButton(执行); 执行.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for (int i=0;i22;i++) parameter1 =; parameter1 =表名表; //当前数据库中全部表的表名列表 if (fa2.getText().trim().length()0){ parameter1 =fa2.getText(); } if (fa3.getText().trim().length()0){ parameter1 =fa3.getText(); } if (fa4.getText().trim().length()0){ parameter1 =fa4.getText(); } if (fa5.getText().trim().length()0){ parameter1 =fa5.getText(); } if (fa6.getText().trim().length()0){ parameter1 =fa6.getText(); } if (fa7.getText().trim().length()0){ parameter1 =fa7.getText(); } if (fa8.getText().trim().length()0){ parameter1 =fa8.getText(); } if (fa9.getText().trim().length()0){ parameter1 =fa9.getText(); } if (fa10.getText().trim().length()0){ parameter1 =fa10.getText(); } if (fa11.getText().trim().length()0){ parameter1 =fa11.getText(); } if (fa12.getText().trim().length()0){ parameter1 =fa12.getText(); } if (fa13.getText().trim().length()0){ parameter1 =fa13.getText(); } if (fa14.getText().trim().length()0){ parameter1 =fa14.getText(); } if (fa15.getText().trim().length()0){ parameter1 =fa15.getText(); } if (fa16.getText().trim().length()0){ parameter1 =fa16.getText(); } if (fa17.getText().trim().length()0){ parameter1 =fa17.getText(); } if (fa18.getText().trim().length()0){ parameter1 =fa18.getText(); } if (fa19.getText().trim().length()0){ parameter1 =fa19.getText(); } 字段名表=; for (int k=0;k列名1.size();k++) if (k列名1.size()-1) 字段名表=字段名表+列名1.get(k)+,; else 字段名表=字段名表+列名1.get(k); parameter1 =字段名表; parameter1 =连接条件串; //连接条件 parameter1 =1; //如果是dataTenance4为本次调用顺序号,其他为1 switch (部件号+1){ case 1:{tableTenance2.means(parameter1);break;} case 2:{tableTenance3.means(parameter1);break;} case 3:{tableTenance4.means(parameter1);break;} case 4:{tableTenance5.means(parameter1);break;} case 5:{tableTenance6.means(parameter1);break;} case 6:{tableTenance7.means(parameter1);break;} case 7:{tableTenance8.means(parameter1);break;} case 8:{tableTenance10.means(parameter1);break;} case 9:{tableTenance11.means(parameter1);break;} case 10:{tableTenance12.means(parameter1);break;} case 11:{tableTenance13.means(parameter1);break;} case 12:{dataQuery1.means(parameter1);break;} case 13:{dataQuery2.means(parameter1);break;} case 14:{dataQuery3.means(parameter1);break;} case 15:{dataQuery4.means(parameter1);break;} case 16:{dataQuery5.means(parameter1);break;} case 17:{dataQuery6.means(parameter1);break;} case 18:{dataQuery7.means(parameter1);break;} case 19:{dataQuery8.means(parameter1);break;} case 20:{dataQuery9.means(parameter1);break;} case 21:{dataQuery10.means(parameter1);break;} case 22:{dataQuery11.means(parameter1);break;} case 23:{dataQuery12.means(parameter1);break;} case 24:{dataQuery13.means(parameter1);break;} case 25:{dataQuery14.means(parameter1);break;} case 26:{dataQuery15.means(parameter1);break;} case 27:{dataQuery16.means(parameter1);break;} case 28:{dataTenance1.means(parameter1);break;} case 29:{dataTenance2.means(parameter1);break;} case 30:{dataTenance3.means(parameter1);break;} case 31:{ switch (次数){ case 1:{dataTenance4.means(parameter1,frame1.framet1);次数++;break;} case 2:{dataTenance4.means(parameter1,frame1.framet2);次数++;break;} case 3:{dataTenance4.means(parameter1,frame1.framet3);次数++;break;} case 4:{dataTenance4.means(parameter1,frame1.framet4);次数++;break;} case 5:{dataTenance4.means(parameter1,frame1.framet5);次数++;break;} case 6:{dataTenance4.means(parameter1,frame1.framet6);次数++;break;} case 7:{dataTenance4.means(parameter1,frame1.framet7);次数++;break;} case 8:{dataTenance4.means(parameter1,frame1.framet8);次数++;break;} case 9:{dataTenance4.means(parameter1,frame1.framet9);次数++;break;} case 10:{dataTenance4.means(parameter1,frame1.framet10);次数=1;break;} } break; } case 32:{dataTenance5.means(parameter1);break;} case 33:{dataTenance6.means(parameter1);break;} case 34:{dataTenance7.means(parameter1);break;} case 35:{dataTenance8.means(parameter1);break;} case 36:{dataTenance9.means(parameter1);break;} case 37:{dataStatistic1.means(parameter1);break;} case 38:{dataStatistic2.means(parameter1);break;} case 39:{dataStatistic3.means(parameter1);break;} case 40:{dataStatistic4.means(parameter1);break;} case 41:{dataStatistic5.means(parameter1);break;} case 42:{dataStatistic6.means(parameter1);break;} case 43:{dataStatistic7.means(parameter1);break;} case 44:{dataStatistic8.means(parameter1);break;} case 45:{dataStatistic9.means(parameter1);break;} case 46:{dataStatistic10.means(parameter1);break;} case 47:{dataStatistic11.means(parameter1);break;} case 48:{dataStatistic12.means(parameter1);break;} case 49:{dataStatistic13.means(parameter1);break;} case 50:{dataTransfer1.means(parameter1);break;} case 51:{dataTransfer2.means(parameter1);break;} case 52:{dataTransfer3.means(parameter1);break;} case 53:{dataTransfer4.means(parameter1);break;} case 54:{dataTransfer5.means(parameter1);break;} case 55:{dataTransfer6.means(parameter1);break;} case 56:{dataTransfer7.means(parameter1);break;} case 57:{dataTransfer8.means(parameter1);break;} case 58:{dataTransfer9.means(parameter1);break;} case 59:{dataTransfer10.means(parameter1);break;} case 60:{dataTransfer11.means(parameter1);break;} case 61:{dataTransfer12.means(parameter1);break;} case 62:{dataTransfer13.means(parameter1);break;} case 63:{dataTransfer16.means(parameter1);break;} case 64:{dataTransfer17.means(parameter1);break;} case 65:{dataTransfer18.means(parameter1);break;} case 66:{printFormat1.means(parameter1);break;} case 67:{printFormat2.means(parameter1);break;} case 68:{printFormat3.means(parameter1);break;} case 69:{printFormat4.means(parameter1);break;} case 70:{printFormat5.means(parameter1);break;} case 71:{printFormat6.means(parameter1);break;} case 72:{printFormat7.means(parameter1);break;} case 73:{dataPreview.means(parameter1);break;} case 74:{dataPreview2.means(parameter1);break;} case 75:{dataPreview3.means(parameter1);break;} case 76:{dataPreview4.means(parameter1);break;} case 77:{dataPreview5.means(parameter1);break;} case 78:{dataPreview6.means(parameter1);break;} case 79:{dataPrint.means(parameter1);break;} case 80:{dataPrint2.means(parameter1);break;} case 81:{dataPrint3.means(parameter1);break;} case 82:{dataPrint4.means(parameter1);break;} case 83:{dataPrint5.means(parameter1);break;} case 84:{userTenance.means(parameter1);break;} case 85:{purviewTenance.means(parameter1);break;} } } }); 执行.setBounds(710, 550,100, 25); 面板1.add(执行, null); JButton 退出 = new JButton(退 出); 退出.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.setVisible(false); frame.dispose(); } }); 退出.setBounds(820, 550,100, 25); 面板1.add(退出); } class MouseHandle extends MouseAdapter{ //鼠标点击,树节点监听程序,内部类 public void mousePressed(MouseEvent e){ try{ 节点路径=tree.getSelectionPath().toString();//节点的路径 int w1=节点路径.lastIndexOf(,); //最后一个逗号位置 int w2=0; String 父节点=; if (w10) { nodeName=节点路径.substring(w1+2,节点路径.length()-1); w2=节点路径.substring(0,w1).lastIndexOf(,); } else 父节点=部件集; //系统 if (w2=0) 父节点=部件集; //系统 else 父节点=节点路径.substring(w2+2,w1); 字段名表=; 连接条件串=; 列名.clear(); 列名1.clear(); 列名所属.clear(); for (int i=0;i部件名表.length;i++){ //查当前节点所在数组中位置 if (部件名表 .trim().equals(nodeName.trim())){ //如果部件被选中 部件号=i; fa1.setText(参数名称 ); 列名.clear() ; for (int j=1;j20;j++){ if (参数名称 .trim().length()0) switch (j){ case 1:{ fa2.setEditable(true); fa2.setText(); la2.setText(); la2.setText(参数名称 .trim()); break; } case 2:{ fa3.setEditable(true); fa3.setText(); la3.setText(); la3.setText(参数名称 .trim()); break; } case 3:{ fa4.setEditable(true); fa4.setText(); la4.setText(); la4.setText(参数名称 .trim()); break; } case 4:{ fa5.setEditable(true); fa5.setText(); la5.setText(); la5.setText(参数名称 .trim()); break; } case 5:{ fa6.setEditable(true); fa6.setText(); la6.setText(); la6.setText(参数名称 .trim()); break; } case 6:{ fa7.setEditable(true); fa7.setText(); la7.setText(参数名称 .trim()); break; } case 7:{ fa8.setEditable(true); fa8.setText(); la8.setText(参数名称 .trim()); break; } case 8:{ fa9.setEditable(true); fa9.setText(); la9.setText(参数名称 .trim()); break; } case 9:{ fa10.setEditable(true); fa10.setText(); la10.setText(参数名称 .trim()); break; } case 10:{ fa11.setEditable(true); fa11.setText(); la11.setText(参数名称 .trim()); break; } case 11:{ fa12.setEditable(true); fa12.setText(); la12.setText(参数名称 .trim()); break; } case 12:{ fa13.setEditable(true); fa13.setText(); la13.setText(参数名称 .trim()); break; } case 13:{ fa14.setEditable(true); fa14.setText(); la14.setText(参数名称 .trim()); break; } case 14:{ fa15.setEditable(true); fa15.setText(); la15.setText(参数名称 .trim()); break; } case 15:{ fa16.setEditable(true); fa16.setText(); la16.setText(参数名称 .trim()); break; } case 16:{ fa17.setEditable(true); fa17.setText(); la17.setText(参数名称 .trim()); break; } case 17:{ fa18.setEditable(true); fa18.setText(); la18.setText(参数名称 .trim()); break; } case 18:{ fa19.setEditable(true); fa19.setText(); la19.setText(参数名称 .trim()); break; } case 19:{ 按钮集1=参数名称 .split(,); } } else //不在参数名表之列 switch (j){ case 1:{ la2.setText(); fa2.setText(); fa2.setEditable(false); break; } case 2:{ la3.setText(); fa3.setText(); fa3.setEditable(false); break; } case 3:{ la4.setText(); fa4.setText(); fa4.setEditable(false); break; } case 4:{ la5.setText(); fa5.setText(); fa5.setEditable(false); break; } case 5:{ la6.setText(); fa6.setText(); fa6.setEditable(false); break; } case 6:{ la7.setText(); fa7.setText(); fa7.setEditable(false); break; } case 7:{ la8.setText(); fa8.setText(); fa8.setEditable(false); break; } case 8:{ la9.setText(); fa9.setText(); fa9.setEditable(false); break; } case 9:{ la10.setText(); fa10.setText(); fa10.setEditable(false); break; } case 10:{ la11.setText(); fa11.setText(); fa11.setEditable(false); break; } case 11:{ la12.setText(); fa12.setText(); fa12.setEditable(false); break; } case 12:{ la13.setText(); fa13.setText(); fa13.setEditable(false); break; } case 13:{ la14.setText(); fa14.setText(); fa14.setEditable(false); break; } case 14:{ la15.setText(); fa15.setText(); fa15.setEditable(false); break; } case 15:{ la16.setText(); fa16.setText(); fa16.setEditable(false); break; } case 16:{ la17.setText(); fa17.setText(); fa17.setEditable(false); break; } case 17:{ la18.setText(); fa18.setText(); fa18.setEditable(false); break; } case 18:{ la19.setText(); fa19.setText(); fa19.setEditable(false); break; } } } } } }catch(NullPointerException ne){} } } static int componentsNo(String 部件名,int 号){ int 号1=号; return 号1; } static void 清屏0(){ la1.setText(); fa1.setText(); fa1.setEditable(false); la2.setText(); fa2.setText(); fa2.setEditable(false); la3.setText(); fa3.setText(); fa3.setEditable(false); la4.setText(); fa4.setText(); fa4.setEditable(false); la5.setText(); fa5.setText(); fa5.setEditable(false); la6.setText(); fa6.setText(); fa6.setEditable(false); la7.setText(); fa7.setText(); fa7.setEditable(false); la8.setText(); fa8.setText(); fa8.setEditable(false); la9.setText(); fa9.setText(); fa9.setEditable(false); la10.setText(); fa10.setText(); fa10.setEditable(false); la11.setText(); fa11.setText(); fa11.setEditable(false); la12.setText(); fa12.setText(); fa12.setEditable(false); la13.setText(); fa13.setText(); fa13.setEditable(false); la14.setText(); fa14.setText(); fa14.setEditable(false); la15.setText(); fa15.setText(); fa15.setEditable(false); la16.setText(); fa16.setText(); fa16.setEditable(false); la17.setText(); fa17.setText(); fa17.setEditable(false); la18.setText(); fa18.setText(); fa18.setEditable(false); la19.setText(); fa19.setText(); fa19.setEditable(false); } //如果要增加一个节点,首先检查“大类表”设定,再修改 “部件名表”,它是提示内容 //再修改“参数名称”,这是将来调用程序的名称及相关参数 //最后修改“子类数量”,其项数与“大类表”对应,其数字与“部件名表”对应。 private static String 子类数量={11,16,9,13,6,10,7,11,2};//与前后三表都要对应 private static String 部件名表={ //供显示的菜单项,与参数名称每组第一个数据(部件名)对应 {1,1,表格式维护2}, //1表格式维护 {1,2,表格维护3,数据直接录入}, {1,3,表格维护4,显示代码、变换标签}, {1,4,表格维护5,需先添加空记录}, {1,5,表格维护6,可使用字典表与代码表}, {1,6,表格维护7,使用代码、字典表与参数表}, {1,7,清库与批处理8}, {1,8,表格维护10,单记录加表格}, {1,9,表格维护11,增加状态行}, {1,10,表格维护12,灵活改变数据表后维护有安全性完整性控制}, {1,11,表格维护13,可使用字典表有安全性完整性控制}, {2,1,单条件查询1}, //2查询 {2,2,单查询2}, {2,3,单查询3}, {2,4,单查询4}, {2,5,二条件查询5}, {2,6,二条件查询6}, {2,7,二条件查询7}, {2,8,指定条件查询8}, {2,9,指定条件查询9}, {2,10,单表组合查询10}, {2,11,组合查询11}, {2,12,组合查询12}, {2,13,组合查询13}, {2,14,统计查询14}, {2,15,文本查询15}, {2,16,文本查询16}, {3,1,单记录维护1}, //3单记录维护 {3,2,单记录维护2,可使用字典表与代码表}, {3,3,单记录维护3,可自定义布局、有安全、完整性控制}, {3,4,单记录维护4,可使用字典表与代码表,可多次调用}, {3,5,单记录维护5,可使用字典表与代码表,组合框显示代码}, {3,6,单记录维护6,有字典表代码表(组合框)安全、完整性}, {3,7,数据子表维护,可自定义布局有安全、完整性控制}, {3,8,多对多联系表数据维护}, {3,9,单记录维护9,自定布局、安全完整性、字典表代码表}, {4,1,全表统计1}, //4数据统计与处理 {4,2,分组统计2}, {4,3,横向数据处理3}, {4,4,纵向数据处理4}, {4,5,删除重复记录5}, {4,6,求关系差集6}, {4,7,求关系并集7}, {4,8,求关系交集8}, {4,9,关系除法9}, {4,10,单数据交叉表10}, {4,11,多数据交叉表11}, {4,12,一元线性回归12}, {4,13,关系代数综合实验13}, { 5,1,覆盖式导出到表或文本文件1}, //5数据导出 { 5,2,添加式导出到表或文本文件2}, { 5,3,修改式导出到表或文本文件3}, { 5,4,覆盖式导出到Office文件4}, { 5,5,添加式导出到Office文件5}, { 5,6,修改式导出到Office文件6}, { 6,1,从表或文本文件覆盖式导入7}, //6数据导入 { 6,2,从表或文本文件添加式导入8}, { 6,3,从表或文本文件修改式导入9}, {6,4,从Office文件覆盖式导入10}, {6,5,从Office文件添加式导入11}, {6,6,从Office文件修改式导入12}, {6,7,导入网页到文本字段}, {6,8,通用导出16}, {6,9,通用导入17}, {6,10,通用导出18}, {7,1,表格式格式生成1}, //7生成打印格式文件 {7,2,带分组统计格式生成2}, {7,3,统计图表格式生成3}, {7,4,带统计图报表格式生成4}, {7,5,单记录式格式生成5}, {7,6,表格式标签格式生成6}, {7,7,单记录式标签格式生成}, {8,1,打印预览表格式报表1}, //8打印预览与打印 {8,2,打印预览单记录报表2}, //打印预览与打印 {8,3,打印预览表格式标签表3}, {8,4,打印预览单记录式标签表4}, {8,5,打印预览统计报表5}, {8,6,打印预览交叉表6}, {8,7,打印表格报表7}, {8,8,打印单记录报表8}, {8,9,打印表格式标签表9}, {8,10,打印单记录式标签表10}, {8,11,打印交叉表11}, {9,1,用户表维护}, //9系统管理 {9,2,权限表维护} }; private static String ; static String 参数名称={ {tableTenance2,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,当前行存盘,删除,修改存盘,退出}, {tableTenance3,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,,删除,退出}, {tableTenance4,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,,删除,退出}, {tableTenance5,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,添加空记录,删除,当前行存盘,全部表存盘,退出}, {tableTenance6,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,添加空记录,删除,当前行存盘,全部表存盘,退出}, {tableTenance7,,,,表名,接口参数表名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,添加空记录,删除,当前行存盘,全部表存盘,退出}, {tableTenance8,,导出表名,,表名,清空表名集,关键字段名,,清除字段名表,结果字段名,,要求按钮号表,,条件表达式,计算公式,,,面板宽度,面板高度,全部清空,按字段号清空,批处理,覆盖式转存,添加式转存,执行SQL语句,退出}, {tableTenance10,,,,表名,接口参数表名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,,第一条,下一条,上一条,末一条,删除记录,录入存盘,修改存盘,退 出}, {tableTenance11,,,,表名,接口参数表名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,下一条,上一条,末一条,删除记录,录入存盘,修改存盘,退 出}, {tableTenance12,,,,,,,,,,,要求按钮号表,,,,,,面板宽度,面板高度,添加,修改,删除,退出}, {tableTenance13,,,,,,,,,,,要求按钮号表,,,,,,面板宽度,面板高度,添加,修改,删除,退出}, {dataQuery1,,,,表名,,,,要求字段号表,查询字段号,,要求按钮号表,,关系符,,打印格式文件名,,面板宽度,面板高度,查询,打印预览,打印,退出}, {dataQuery2,,,,表名集,,,,要求字段号表,查询字段号,,要求按钮号表,,关系符,,,,面板宽度,面板高度,查询,退出}, {dataQuery3,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,查询,退出}, {dataQuery4,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,查询,退出}, {dataQuery5,,,,表名,,,,要求字段号表,查询字段号1,查询字段号2,要求按钮号表,关系符1,关系符2,,打印格式文件名,,面板宽度,面板高度,查询,打印预览,打印,退出}, {dataQuery6,,,,表名集,,,,要求字段号表,查询字段号1,查询字段号2,要求按钮号表,关系符1,关系符2,,,,面板宽度,面板高度,查询,退出}, {dataQuery7,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,查询,退出}, {dataQuery8,,,,表名集,,,,要求字段号表,,条件表达式,要求按钮号表,,,输出要求,打印格式文件名,,面板宽度,面板高度,查询,打印预览,打印,退出}, {dataQuery9,,,,表名集,分组字段表,,,要求字段号表,,条件表达式,要求按钮号表,,,输出要求,打印格式文件名,,面板宽度,面板高度,查询,退出}, {dataQuery10,,,,表名,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery11,,,,表名集,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery12,,,,表名集,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery13,,,,表名集,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery14,,,,表名集,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery15,,,,表名,,,,要求字段号表,,,要求按钮号表,按钮号表2,,,打印格式文件名,,面板宽度,面板高度,浏览显示,第一条,下一条,上一条,最后一条,打印预览,打印,导出,退出}, {dataQuery16,,,,表名,,,,要求字段号表,,,要求按钮号表,按钮号表2,,,打印格式文件名,,面板宽度,面板高度,浏览显示,第一条,下一条,上一条,最后一条,打印预览,打印,导出,退出}, {dataTenance1,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,下一条,最后一条,上一条,浏览,存盘,清屏,修改存盘,删除,退出}, {dataTenance2,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,下一条,最后一条,上一条,浏览,存盘,清屏,修改存盘,删除,退出}, {dataTenance3,,,,表名,接口参数文件名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,下一条,最后一条,上一条,浏览,存盘,清屏,修改存盘,删除,退出}, {dataTenance4,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,下一条,最后一条,上一条,查询,浏览,存盘,清屏,修改存盘,删除,批处理,图片存盘,退出}, {dataTenance5,,,,表名,接口参数文件名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,下一条,最后一条,上一条,浏览,存盘,清屏,修改存盘,删除,退出}, {dataTenance6,,,,表名,接口参数文件名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,下一条,最后一条,上一条,查询,浏览,存盘,清屏,修改存盘,删除,退出}, {dataTenance7,,主表名,,子表名,,关键字段名,外键名,主表字段号表,子表字段号表,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,下一条,最后一条,上一条,浏览,存盘,清屏,修改存盘,删除,退出}, {dataTenance8,,主表名1,主表名2,表名,,关键字段名,,,,,要求按钮号表,,条件表达式1,条件表达式2,,,面板宽度,面板高度,第一条,下一条,最后一条,上一条,浏览,存盘,清屏,修改存盘,删除,退出}, {dataTenance9,,,,表名,接口参数文件名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,下一条,最后一条,上一条,浏览,查询,存盘,清屏,修改存盘,批修改,录入图形,播放声音,连续播放删除,退出}, {dataStatistic1,,,,表名,,,,要求字段号表,统计字段名集,,要求按钮号表,,统计项目名,,,,,,统计,打印预览,打印,导出,退出}, {dataStatistic2,,,,表名集,,,,要求字段号表,统计字段名集,分组字段名,要求按钮号表,,统计项目名,分类比例,,,,,统计,打印预览,打印,导出,退出}, {dataStatistic3,,,,表名集,接口文件名,关键字段名,关键字段名1,要求字段号表,统计字段名集,结果字段名,要求按钮号表,,统计项目名,,,,,,统计,显示,导出,退出}, {dataStatistic4,,,,表名集,,,,要求字段号表,统计字段名集,分组字段名,要求按钮号表,,,分类比例,,,,,求和,求平均,求最大,求最小,求记录条数,平均偏差,求相对偏差,标准偏差,填充标准偏差,统计方差,填充统计方差,求ABC分类,退出,打印预览,打印,导出}, {dataStatistic5,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,,,,,删除重复记录值,退 出}, {dataStatistic6,,子表名,,表名,,,,要求字段号表,子表字段名表,,要求按钮号表,,,,,,,,表1减表2,退出}, {dataStatistic7,,子表名,,表名,,,,要求字段号表,子表字段名表,,要求按钮号表,,,,,,,,求并集,退出}, {dataStatistic8,,子表名,,表名,,,,要求字段号表,子表字段名表,,要求按钮号表,,,,,,,,求交集,退出}, {dataStatistic9,,子表名,,表名,,,,要求字段号表,子表字段名表,,要求按钮号表,,,,,,,,表1除以表2,退出}, {dataStatistic10,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,打印格式文件名,,,,生成交叉表,生成转置表,生成新表,导出到文件,显示统计图,退出}, {dataStatistic11,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,打印格式文件名,,,,生成交叉表,打印预览,打印,生成新表,导出到文件,显示统计图,退出}, {dataStatistic12,,,,表名,,,,,,,要求按钮号表,,,,,,,,显示图表,退出}, {dataStatistic13,,子表名,,表名,,,,要求字段号表,子表字段名表,,,,,,,,,,求笛卡尔积,求并集,求交集,表1减表2,求连接,左连接,全连接,表1除以表2,选择,投影,退出,导出,打印预览,打印,存入数据库}, {dataTransfer1,目的库DBMS,导出数据表名,目的库ODBC,源数据表名集,,,,要求字段号表,,,按钮号表,,,,,,,导出文件名,导出到数据库表,标准格式到文本文件,紧缩格式到文本文件,自定义格式到文本,覆盖式到XML文件,退出}, {dataTransfer2,目的库DBMS,导出数据表名,目的库ODBC,源数据表名集,,,,要求字段号表,,,按钮号表,,,,,,,导出文件名,导出到数据库表,标准格式到文本文件,紧缩格式到文本文件,自定义格式到文本,覆盖式到XML文件,退出}, {dataTransfer3,目的库DBMS,导出数据表名,目的库ODBC,源数据表名集,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,导出文件名,导出到数据库表,标准格式到文本文件,紧缩格式到文本文件,自定义格式到文本,覆盖式到XML文件,退出}, {dataTransfer4,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,,,,导出文件名,导出到word,导出到excel,导出到PDF,退出}, {dataTransfer5,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,,,,导出文件名,导出到word,导出到excel,导出到PDF,退出}, {dataTransfer6,,,,表名集,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,导出文件名,导出到word,导出到excel,导出到PDF,退出}, {dataTransfer7,源库DBMS,源表名,源库ODBC,目的表名,,,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从数据表导入,标准格式导入,紧缩格式导入,自定义格式导入,从XML文件导入,退出}, {dataTransfer8,源库DBMS,源表名,源库ODBC,目的表名,,,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从数据表导入,标准格式导入,紧缩格式导入,自定义格式导入,从XML文件导入,退出}, {dataTransfer9,源库DBMS,源表名,源库ODBC,目的表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从数据表导入,标准格式导入,紧缩格式导入,自定义格式导入,从XML文件导入,退出}, {dataTransfer10,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从word导入,从excel导入,从PDF文件导入,退出}, {dataTransfer11,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从word导入,从excel导入,从PDF文件导入,退出}, {dataTransfer12,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从word导入,从excel导入,从PDF文件导入,退出}, {dataTransfer13,,网页地址,,表名,,关键字段名,,,导入字段名,,要求按钮号表,,,,,,,,解析网页,导入源程序,导入网页内容,删除当前记录,新记录存盘,退出}, {dataTransfer16,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,打印格式文件名,,,,排序,接续排序,打印,导出到数据表,导出到txt文件,退出}, {dataTransfer17,源库DBMS,导入源表名,源库ODBC,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,导入条件式,,,,,,建新表并导入,复盖式导入,添加式导入,修改式导入,退出}, {dataTransfer18,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,打印格式文件名,,,,排序,接续排序,打印,导出到数据表,导出到txt文件,退出}, {printFormat1,,,,表名集,,,,,,,,,,,,,,,}, {printFormat2,,,,表名集,,,,,,,,,,,,,,,}, {printFormat3,,,,表名集,,,,,,,,,,,,,,,}, {printFormat4,,,,表名集,,,,,,,,,,,,,,,}, {printFormat5,,,,表名集,,,,,,,,,,,,,,,}, {printFormat6,,,,表名集,,,,,,,,,,,,,,,}, {printFormat7,,,,表名集,,,,,,,,,,,,,,,}, {dataPreview,,,,表名集,,,,,,,,,,,打印格式文件名,,,,}, //dataPreview {dataPreview2,,,,表名集,,,,,,,,,,,打印格式文件名,,,,当前记录预览,预览下一条,退出}, //dataPreview2 {dataPreview3,,,,表名集,,,,,,,,,,,打印格式文件名,,,,打印相同记录,依次打印记录,退出}, {dataPreview4,,,,表名集,,,,,,,,,,,打印格式文件名,,,,当前记录重复,顺次预览,退出}, {dataPreview5,,,,表名集,,,,,,,,,,,打印格式文件名,,,,打印预览,打印,退出}, {dataPreview6,,,,表名集,,,,,,,,,,,打印格式文件名,,,,}, {dataPrint,,,,表名集,,,,,,,,,,,打印格式文件名,,,,}, {dataPrint2,,,,表名集,,,,,,,要求按钮号表,,,,打印格式文件名,,,,打印,打印下一条,退出}, {dataPrint3,,,,表名集,,,,,,,要求按钮号表,,,,打印格式文件名,,,,打印相同记录,依次打印记录,退出}, {dataPrint4,,,,表名集,,,,,,,要求按钮号表,,,,打印格式文件名,,,,当前记录重复,顺次预览,退出}, {dataPrint5,,,,表名集,,,,,,,,,,,打印格式文件名,,,,}, {userTenance,,,,表名,,关键字段名,,要求字段号表,密码字段号,1:要求重复输入密码,要求按钮号表,,,,,,,,第一条,下一条,最后一条,上一条,浏览,存盘,清屏,修改存盘,删除,退出}, {purviewTenance,,,,表名,,关键字段名,,要求字段号表,密码字段号,1:要求重复输入密码,要求按钮号表,,,,,,,,第一条,下一条,最后一条,上一条,浏览,存盘,清屏,修改存盘,删除,退出} }; } 2.源码2,应用系统主程序。 /* * 程序文件名:main1.java * 作者:程学先 * 本程序用于构成应用系统主程序,显示应用系统封面,同时为其他部件程序提供公用的某些参数 * 根据项目文件夹中文件cover.txt的有关设置调用或不调用登录程序login.java, * 在作应用系统主程序时,当登录成功后调出系统菜单,由菜单控制系统运行。 * 文件cover.txt由程序cover.java设置。 * 程序后面加了5个struct1……类,为试验所用,使单记录数据维护部件4可用不同名字调用, */ import java.awt.Color; import java.awt.Font; import java.awt.event.*; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import javax.swing.*; import java.sql.*; import java.util.ArrayList; public class main1 { static String url; static int 当前行行号=0; public static String DBMS系统=sqlserver; //公共参数: DBMS系统 public static String ODBC数据源=sql1; static Connection con=null; //连接数据库 public static String 数据库名=学生; public static String 是否有登录=否; public static String 表名; //将操作的数据表名 static String 字典表名 =; public static String 背景图名=; public static String 列名; //数据表列名 public static String 列数据宽度; public static int 记录条数=0; //记录条数 public static int 结束标志=0,数据项号=0; //数据项号为工作流驱动中流程序号 public static String 表格数据=new String ; //存放表格数据的数组 public static String 要求字段号表= ; //需要显示的字段的顺序号 public static String 要求按钮号表= ,人员姓名1=,人员姓名2=; //要求按钮号表:需要显示的按钮的顺序号,人员姓名1\\2为工作流驱动中工作流程表中负责人名与操作者名 public static int 窗口宽=1000,窗口高=700;//默认窗口宽、窗口高 public static int 窗口左边距 =10,窗口到顶距=10; public static String username=,rolename=; //用户,角色 private static File file1; public static int sw1=0; //涉及工作流程序时公共变量 public static String sw7=,sw8=,sw9=,sw10=; public static String sw2=,sw3=,sw4=,sw5=,sw6=; public static int n=0; public static void driver1(){ //许多部件程序共享的接jdbc驱动的程序段 file1 = new File(.\\\\cover.txt); //存放环境参数数据的文件 n=0; try{ //读取环境参数数据 if (file1.exists()) { FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); String tempStr = null; String ; String ; for (int i = 0; (tempStr = br.readLine()) != null; i++){ String s3=tempStr.substring(0,2); if (s3.equals(1,)){ s4=tempStr.substring(2,tempStr.length()).split(,); n++; } else { s5=tempStr.substring(2,tempStr.length()).split(,); for (int j=0;js5.length;j++){ 表格数据 =s5 ; if (表格数据 !=null) {} else 表格数据 = ; } n++; } } if (s4 .compareTo( )0) DBMS系统=s4 ; if (s4 .compareTo( )0) ODBC数据源=s4 ; if (s4 .compareTo( )0) 数据库名=s4 ; if (s4 .compareTo( )0) 是否有登录=s4 ; 窗口左边距=0;窗口到顶距=0;窗口宽=1200;窗口高=900; if (s4 .compareTo( )0) 窗口宽=Integer.parseInt(s4 ); if (s4 .compareTo( )0) 窗口高=Integer.parseInt(s4 ); if (s4 .compareTo( )0) 窗口左边距 =Integer.parseInt(s4 ); if (s4 .compareTo( )0) 窗口到顶距=Integer.parseInt(s4 ); 背景图名=.\\\\zz.jpg; if (s4 .compareTo( )0) 背景图名=s4 ; if (DBMS系统.equals(sqlserver)){ String ; for (int i=0;i列数据类型0.length;i++)列数据类型 =列数据类型0 ; } else if (DBMS系统.equals(oracle)){ String ; for (int i=0;i列数据类型0.length;i++)列数据类型 =列数据类型0 ; } else if (DBMS系统.equals(Mysql)){ String ; for (int i=0;i列数据类型0.length;i++)列数据类型 =列数据类型0 ; } else if (DBMS系统.equals(access)){ String ; for (int i=0;i列数据类型0.length;i++)列数据类型 =列数据类型0 ; } else if (DBMS系统.equals(DB2)){ String ; for (int i=0;i列数据类型0.length;i++)列数据类型 =列数据类型0 ; } else if (DBMS系统.equals(JavaDB)){ String ; for (int i=0;i列数据类型0.length;i++)列数据类型 =列数据类型0 ; } else { //Sybase String ; for (int i=0;i列数据类型0.length;i++)列数据类型 =列数据类型0 ; } } }catch(IOException e2) { JOptionPane.showMessageDialog( null, 打开文件错!); } try { if (DBMS系统.indexOf(sqlserver)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); //接sql server的jdbc驱动 else if (DBMS系统.indexOf(oracle)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); //接oracle的jdbc驱动 else if (DBMS系统.indexOf(Mysql)==0) Class.forName(com.mysql.jdbc.Driver); //接Mysql的jdbc驱动 else if (DBMS系统.indexOf(access)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); //接access的jdbc驱动 else if (DBMS系统.indexOf(JavaDB)==0) Class.forName(org.apache.derby.jdbc.EmbeddedDriver); //接JavaDB的jdbc驱动 else if (DBMS系统.indexOf(DB2)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); //接DB2的jdbc驱动 else if (DBMS系统.indexOf(Sybase)==0) Class.forName(com.sybase.jdbc.SybDriver); //接Sybase的jdbc驱动 } catch(Exception e) { JOptionPane.showMessageDialog( null, 接驱动程序错!); } } public static Connection getConn(){ //许多部件程序共享的连接ODBC程序 String url; try { if (DBMS系统.indexOf(sqlserver) == 0) { //接SQL Server驱动 con = DriverManager.getConnection(jdbc:odbc: + ODBC数据源); } else if (DBMS系统.indexOf(oracle) == 0) //mysql { url = jdbc:oracle:thin:@localhost:1521:orcl3; // 获取连接URL String user = system; // 连接用户名,默认system String password = ; // 连接密码 con = DriverManager.getConnection(url, user, password); // 连接数据库 } else if (DBMS系统.indexOf(Mysql) == 0) { url = jdbc:mysql://localhost:3306/information_schema; // 定义与连接数据库的url /xsxx?characterEncoding=utf8,root,123456); String user = root; // 定义连接数据库的用户名,默认root String passWord = ; // 定义连接数据库的密码 con = DriverManager.getConnection(url, user, passWord); // 连接Mysql数据库 } else if (DBMS系统.indexOf(access) == 0) con = DriverManager.getConnection(jdbc:odbc: + ODBC数据源); // 连接access数据库 else if (DBMS系统.indexOf(JavaDB) == 0) { url = jdbc:derby:db_database22; // 定义与连接数据库的url con = DriverManager.getConnection(url + ;create=true); // 连接JavaDB数据库 } else if (DBMS系统.indexOf(DB2) == 0) con = DriverManager.getConnection(jdbc:odbc: + ODBC数据源); // 连接DB2数据库 else con = DriverManager.getConnection(jdbc:odbc: + ODBC数据源); // 连接Sybase数据库 } catch (SQLException e1) { JOptionPane.showMessageDialog( null, 连接数据库未成功!); } return con; } static void color1(int c,JLabel fl){ //某些部件要求设置颜色的共享程序 switch (c) { case 1: fl.setForeground(Color.red); break; case 2: fl.setForeground(Color.blue); break; case 3: fl.setForeground(Color.green); break; case 4: fl.setForeground(Color.white); break; case 5: fl.setForeground(Color.black); break; case 6: fl.setForeground(Color.darkGray); break; case 7: fl.setForeground(Color.cyan); break; case 8: fl.setForeground(Color.yellow); break; case 9: fl.setForeground(Color.gray); break; case 10: fl.setForeground(Color.lightGray); break; case 11: fl.setForeground(Color.magenta); break; case 12: fl.setForeground(Color.orange); break; } } public static void main(String !=null) { } else 表格数据 = ; } if ((表格数据 .compareTo(0)=0)||(表格数据 .compareTo(0)=0)|| (表格数据 .compareTo(0)=0)||(表格数据 .compareTo(0)=0)){ 表格数据 = ; 表格数据 =0; 表格数据 =0; 表格数据 =0; 表格数据 =0; } if (表格数据 .compareTo(0)=0) 表格数据 =宋体; if (表格数据 .compareTo(0)=0) 表格数据 =9; if (表格数据 .compareTo(0)=0) 表格数据 =0; } int d1=0,t1=0,l1=0,h1=0,字号=9,颜色=0; for (int i=1;in;i++){ if (表格数据 .compareTo( )0) { d1=Integer.parseInt(表格数据 ); t1=Integer.parseInt(表格数据 ); l1=Integer.parseInt(表格数据 ); h1=Integer.parseInt(表格数据 ); 字号=Integer.parseInt(表格数据 ); 颜色=Integer.parseInt(表格数据 ); switch (i) { case 1: fl1=new JLabel(表格数据 ); Font font = new Font(表格数据 ,Font.PLAIN,字号); fl1.setFont(font); color1(颜色,fl1); fl1.setBounds(d1,t1,l1*字号*2,字号); mpanel1.add(fl1); break; case 2: fl2=new JLabel(表格数据 ); Font font2 = new Font(表格数据 ,Font.PLAIN,字号); fl2.setFont(font2); color1(颜色,fl2); fl2.setBounds(d1,t1,l1*字号*2,字号); mpanel1.add(fl2); break; case 3: fl3=new JLabel(表格数据 ); Font font3 = new Font(表格数据 ,Font.PLAIN,字号); fl3.setFont(font3); color1(颜色,fl3); fl3.setBounds(d1,t1,l1*字号*2,字号); mpanel1.add(fl3); break; case 4: fl4=new JLabel(表格数据 ); Font font4 = new Font(表格数据 ,Font.PLAIN,字号); fl4.setFont(font4); color1(颜色,fl4); fl4.setBounds(d1,t1,l1*字号*2,字号); mpanel1.add(fl4); break; case 5: fl5=new JLabel(表格数据 ); Font font5 = new Font(表格数据 ,Font.PLAIN,字号); fl5.setFont(font5); color1(颜色,fl5); fl5.setBounds(d1,t1,l1*字号*2,字号); mpanel1.add(fl5); break; case 6: fl6=new JLabel(表格数据 ); Font font6 = new Font(表格数据 ,Font.PLAIN,字号); fl6.setFont(font6); color1(颜色,fl6); fl6.setBounds(d1,t1,l1*字号*2,字号); mpanel1.add(fl6); break; case 7: fl7=new JLabel(表格数据 ); Font font7 = new Font(表格数据 ,Font.PLAIN,字号); fl7.setFont(font7); color1(颜色,fl7); fl7.setBounds(d1,t1,l1*字号*2,字号); mpanel1.add(fl7); break; case 8: fl8=new JLabel(表格数据 ); Font font8 = new Font(表格数据 ,Font.PLAIN,字号); fl8.setFont(font8); color1(颜色,fl8); fl8.setBounds(d1,t1,l1*字号*2,字号); mpanel1.add(fl8); break; case 9: fl9=new JLabel(表格数据 ); Font font9 = new Font(表格数据 ,Font.PLAIN,字号); fl9.setFont(font9); color1(颜色,fl9); fl9.setBounds(d1,t1,l1*字号*2,字号); mpanel1.add(fl9); break; } } } if (是否有登录.equals(有)){ //如果初始环境参数中规定有登录程序,则先调用登录程序 login.means(); while (true) if (username.length()0) break; } menu.JMenuDemo1(); } } class struct1{//为数据单记录维护程序4特殊设计的5个公共类,实验当多次调用同一个部件且均不关闭时的问题 String ; public struct1(String =title ; } } class struct2{ String ; public struct2(String =tableTitle ; } } class struct3{ String ; public struct3(String =table1 ; } } class struct4{ String ; public struct4(String =table2 ; } } class struct5{ String ; public struct5(String =table3 ; } } 3.源码3,环境参数设置程序 /* * 作者:程学先 * 本程序用于系统运行环境参数设置,包括主程序窗口及大小位置参数设置。 * 宽度、高度以字符个数为单位。左边距、到顶距以象素为单位 * 在程序中设置的宽度、高度、左边距、到顶距要与所填入数据及字号计算结果相适应 * 所有数据保存在文件cover.txt中。 * 操作内容分为添加与修改,添加:首先在文本框输入目录,即第一列文字,不得与已有第一列内容相同 * 之后,输入其他文本框数据,完毕后点击“添加到表格中”,将在表格中增加一行数据。 * 修改:首先点击欲修改的某一行,该行数据将复制到文本框中,之后修改文本框中数据。 * 完毕后点击“修改表格数据”。也可删除。 * 文件中数据分为二组,第一组只一行,其前面用1,标志。其中依次存放DBMS名字,ODBC名字, * 数据库名字,窗口宽度,窗口高度,窗口左边距,窗口到顶距 * 第二组每行存放主程序窗口一个字符串的属性,其前均用2,标志。 * “辅助计算”对标题以下行根据输入的汉字个数计算欲在封面上显示的控件的以象素点为单位的左边距、到顶距。 * (注意不修改标题以上行数据和其他数据) * 如果按下“辅助计算”按钮,操作结果将替代已经输入的边距、到顶距, * 因此,如果准备辅助计算,除输入封面中某一行的文字内容外可以不输入除字号外任何数据。 * 注意要求已经输入所有内容的字号,操作前请一定检查所有内容的字号都已经输入后再操作。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import javax.swing.tree.DefaultMutableTreeNode; import java.io.*; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Vector; public class cover extends JFrame { private static cover frame1 = new cover(); private static JPanel panel1 = new JPanel(); //定义面板 private static DefaultTableModel 表格模型; // 定义表格模型对象 private static JTable 表格; // 定义表格对象 private static JScrollPane scrollPane = new JScrollPane(); //定义表格滚动条 private static JScrollPane scrollPane1 = new JScrollPane(); //定义列表框滚动条 private static List list1 = new List(); private static JLabel fl0,fl1,fl2,fl3,fl4,fl5,fl6,fl7,fl8,fl9,fl10; private static JTextField fa0,fa1,fa2,fa3,fa4,fa5,fa6,fa7,fa8,fa9,fa10; //定义文本框用来放存入、修改数据 private static String 当前值; private static int 选中行号=-1,当前行号=0,表格行数=0,当前列号=0,列数=0; private static int 字段序号=0; private static String 表格数据; private static ArrayListString 读入数据 = new ArrayList(); private static String ; private static File file1; private static ArrayListString list = new ArrayListString(); static String s1=,s2=; //临时变量 private static ArrayList 表名1=new ArrayList(); static String ) { frame1 = new cover();panel1 = new JPanel(); scrollPane = new JScrollPane();scrollPane1 = new JScrollPane(); list1 = new List(); 选中行号=-1;当前行号=0;表格行数=0;当前列号=0;列数=0; 字段序号=0; 一行数据=new String ;list = new ArrayListString(); s1=;s2=;表名1=new ArrayList(); DBMS名 =sqlserver;DBMS名 =oracle; DBMS名 =Mysql;DBMS名 =access; DBMS名 =JavaDB;DBMS名 =DB2;DBMS名 =Sybase; frame1.setTitle(环境参数设置程序,所有参数以字符个数为单位。 作者:程学先); //窗口标题 frame1.setBounds(10, 10, 880, 660); //窗口位置大小 frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式 frame1.getContentPane().setLayout(null); // 关闭布局管理器 panel1.setBounds(10, 10, 880, 660); //定义面板大小与位置 panel1.setLayout(null); //关闭面板布局管理器 final String 目录 = { DBMS名字,ODBC名字,数据库名字,是否有登录程序,窗口宽度,窗口高度,窗口左边距,窗口到顶距, 背景图像, 标题, 副标题1, 副标题2, 单位名称, 第1作者, 其他作者, 日期}; final String 字体={宋体,黑体,仿宋_GB2312,楷体,仿宋}; 表格数据=new String ; file1 = new File(.\\\\cover.txt); try{ if (file1.exists()) { //如果文件存在 FileReader fr = new FileReader(file1);//读方式打开文件 BufferedReader br = new BufferedReader(fr);//建立文件输入字符流 String tempStr = null; 读入数据.clear(); //清空列表队列 String = ; for (int i1=0;i19;i1++){ 表格数据 =目录 ; 表格数据 =s4 ; n++; } } else { 表格数据 =tempStr.substring(2,tempStr.length()).split(,); n++; } } } else { for (int i=0;i目录.length;i++){ 表格数据 =目录 ; 表格数据 =初始数据 ; for (int j=2;j8;j++) 表格数据 = ; } } }catch(IOException e2) { JOptionPane.showMessageDialog( null, 打开文件错!); } 表格模型 = new DefaultTableModel(表格数据, 列名); // 创建表格模型 表格 = new JTable(表格模型); // 创建指定表格模型的表格 表格.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格的选择模式为单选 表格.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //表格自动设置列宽 int ); } 表格.addMouseListener(new MouseAdapter() { // 为表格添加鼠标事件监听器 public void mouseClicked(MouseEvent e) { // 发生了点击事件 int 选中行号 = 表格.getSelectedRow(); // 获得被选中行的索引 for (int j=0;j列名.length;j++){ if (表格模型.getValueAt(选中行号,j)!=null) 当前值 = 表格模型.getValueAt(选中行号,j).toString(); // 从表格模型中获得指定值 else 当前值=; switch (j){ case 0: fa1.setText(当前值.toString()); // 将获得的值赋值给文本框 break; case 1: fa2.setText(当前值.toString()); break; case 2: fa3.setText(当前值.toString()); break; case 3: fa4.setText(当前值.toString()); break; case 4: fa5.setText(当前值.toString()); break; case 5: fa6.setText(当前值.toString()); break; case 6: fa7.setText(当前值.toString()); break; case 7: fa8.setText(当前值.toString()); break; case 8: fa9.setText(当前值.toString()); break; } } } }); scrollPane.setBounds(10, 40, 700, 400); //表格滚动条大小、位置 scrollPane.setViewportView(表格); panel1.add(scrollPane, BorderLayout.CENTER); fl1=new JLabel(目录); fl1.setBounds(30,460,60, 20); panel1.add(fl1); //定义文本框的标签 fa1 = new JTextField(,20); fa1.setBounds(90,460, 100, 20); panel1.add(fa1); //加入文本框 fa1.addFocusListener(new FocusAdapter() { //加入监听 public void focusGained(final FocusEvent arg0) { //获得焦点 list1.removeAll(); 当前列号=1; for (int i=0;i目录.length;i++) { list1.add(目录 ); } } }); fl2=new JLabel(内容); fl2.setBounds(210,460,60, 20); panel1.add(fl2); //定义文本框的标签 fa2 = new JTextField(,20); //定义文本框,预设值 fa2.setBounds(270,460,400, 20); panel1.add(fa2); //加入文本框 fa2.addFocusListener(new FocusAdapter() { //加入监听 public void focusGained(final FocusEvent arg0) { //获得焦点 当前列号=2; list1.removeAll(); if (fa1.getText().equals(DBMS名字)) for (int i=0;iDBMS名.length;i++) list1.add(DBMS名 ); else { s2=,; for (int i=0;i表格模型.getRowCount();i++){ if (表格模型.getValueAt(i,当前列号-1)!=null) if (s2.lastIndexOf(,+表格模型.getValueAt(i,当前列号-1).toString()+,)0){ list1.add(表格模型.getValueAt(i,当前列号-1).toString()); s2=s2+表格模型.getValueAt(i,当前列号-1).toString()+,; } } } } }); fl3=new JLabel(宽度); fl3.setBounds(690,460,60, 20); panel1.add(fl3); //定义文本框的标签 fa3 = new JTextField(,20); //定义文本框,预设值 fa3.setBounds(750,460,60, 20); panel1.add(fa3); //加入文本框 fa3.addFocusListener(new FocusAdapter() { //加入监听 public void focusGained(final FocusEvent arg0) { //获得焦点 当前列号=3; list1.removeAll(); s2=,; for (int i=0;i表格模型.getRowCount();i++){ if (表格模型.getValueAt(i,当前列号-1)!=null) if (s2.lastIndexOf(,+表格模型.getValueAt(i,当前列号-1).toString()+,)0){ list1.add(表格模型.getValueAt(i,当前列号-1).toString()); s2=s2+表格模型.getValueAt(i,当前列号-1).toString()+,; } } } }); fl4=new JLabel( 高度); fl4.setBounds(30,500,50, 20); panel1.add(fl4); //定义文本框的标签 fa4 = new JTextField(,20); //定义文本框,预设值 fa4.setBounds(80,500,50, 20); panel1.add(fa4); //加入文本框 fa4.addFocusListener(new FocusAdapter() { //加入监听 public void focusGained(final FocusEvent arg0) { //获得焦点 当前列号=4; list1.removeAll(); s2=,; for (int i=0;i表格模型.getRowCount();i++){ if (表格模型.getValueAt(i,当前列号-1)!=null) if (s2.lastIndexOf(,+表格模型.getValueAt(i,当前列号-1).toString()+,)0){ list1.add(表格模型.getValueAt(i,当前列号-1).toString()); s2=s2+表格模型.getValueAt(i,当前列号-1).toString()+,; } } } }); fl5=new JLabel( 左边距); fl5.setBounds(150,500,50, 20); panel1.add(fl5); //定义文本框的标签 fa5 = new JTextField(,20); //定义文本框,预设值 fa5.setBounds(200,500,50, 20); panel1.add(fa5); //加入文本框 fa5.addFocusListener(new FocusAdapter() { //加入监听 public void focusGained(final FocusEvent arg0) { //获得焦点 当前列号=5; list1.removeAll(); s2=,; for (int i=0;i表格模型.getRowCount();i++){ if (表格模型.getValueAt(i,当前列号-1)!=null) if (s2.lastIndexOf(,+表格模型.getValueAt(i,当前列号-1).toString()+,)0){ list1.add(表格模型.getValueAt(i,当前列号-1).toString()); s2=s2+表格模型.getValueAt(i,当前列号-1).toString()+,; } } } }); fl6=new JLabel(到顶距); panel1.add(fl6); //定义文本框的标签 fa6 = new JTextField(,20); //定义文本框,预设值 panel1.add(fa6); //加入文本框 fl6.setBounds(270,500,50, 20); fa6.setBounds(320,500,50, 20); fa6.addFocusListener(new FocusAdapter() { //加入监听 public void focusGained(final FocusEvent arg0) { //获得焦点 当前列号=6; list1.removeAll(); s2=,; for (int i=0;i表格模型.getRowCount();i++){ if (表格模型.getValueAt(i,当前列号-1)!=null) if (s2.lastIndexOf(,+表格模型.getValueAt(i,当前列号-1).toString()+,)0){ list1.add(表格模型.getValueAt(i,当前列号-1).toString()); s2=s2+表格模型.getValueAt(i,当前列号-1).toString()+,; } } } }); fl7=new JLabel( 字体); panel1.add(fl7); //定义文本框的标签 fa7 = new JTextField(,20); //定义文本框,预设值 panel1.add(fa7); //加入文本框 fl7.setBounds(390,500,50, 20); fa7.setBounds(440,500,70, 20); fa7.addFocusListener(new FocusAdapter() { //加入监听 public void focusGained(final FocusEvent arg0) { //获得焦点 当前列号=7; list1.removeAll(); for (int i=0;i字体.length;i++){ list1.add(字体 ); } } }); fl8=new JLabel(字号); panel1.add(fl8); //定义文本框的标签 fa8 = new JTextField(,20); //定义文本框,预设值 panel1.add(fa8); //加入文本框 fl8.setBounds(530,500,50, 20); fa8.setBounds(580,500,70, 20); fa8.addFocusListener(new FocusAdapter() { //加入监听 public void focusGained(final FocusEvent arg0) { //获得焦点 当前列号=8; list1.removeAll(); final String ); } } }); fl9=new JLabel(颜色); panel1.add(fl9); //定义文本框的标签 fa9 = new JTextField(,20); //定义文本框,预设值 panel1.add(fa9); //加入文本框 fl9.setBounds(670,500,50, 20); fa9.setBounds(720,500,90, 20); final String ); } } }); list1.setBounds(720, 10,120,430); //列表框大小位置 panel1.add(list1); list1.addMouseListener(new MouseAdapter() { // 添加鼠标事件监听器 public void mouseClicked(MouseEvent e) { int w1,w2,h1,h2; switch (当前列号) { //根据当前列号确定焦点 case 1: //目录 fa1.setText(list1.getSelectedItem()); break; case 2: //内容 fa2.setText(list1.getSelectedItem()); break; case 3: //宽度 fa3.setText(list1.getSelectedItem()); break; case 4: //高度 fa4.setText(list1.getSelectedItem()); break; case 5: //左边距 fa5.setText(list1.getSelectedItem()); break; case 6: //到顶距 fa6.setText(list1.getSelectedItem()); break; case 7: //字体 fa7.setText(list1.getSelectedItem()); break; case 8: //字号 fa8.setText(list1.getSelectedItem()); break; case 9: //颜色 fa9.setText(list1.getSelectedItem().substring(0,5).trim()); break; } } }); final JButton addButton = new JButton(添加到表格中); //定义添加按钮 addButton.setBounds(10,540,120, 20); addButton.addActionListener(new ActionListener() { //定义添加按钮监听器 public void actionPerformed(ActionEvent e) { //定义添加按钮事件方法 int 选中行号=-1; for (int i=0;i表格模型.getRowCount();i++){ if ((表格模型.getValueAt(i,0)!=null)(表格模型.getValueAt(i,0).equals(fa1.getText()))){ 选中行号=i; break; } } if (选中行号0){ String ; private static String variabl1927=new String ; private static String ; private static String variabl1717; private static int variabl2673=0; private static ArrayList variabl26031=new ArrayList(); private static String variabl1861=; private static String variabl2429=; private static String variabl1633=; private static String s1=,s2=; private static String variabl1393=; private static String ; private static int variabl1287=0; private static int variabl2651; private static int variabl26510; private static int variabl2647=1; private static ArrayListString variabl2517=new ArrayListString(); private static ArrayListString variabl25171=new ArrayListString(); private static ArrayListString variabl1729=new ArrayListString(); private static int variabl1591=0,variabl2307=0; private static int variabl1655; private static int ; static String variabl2259={{,大于},{,小于},{=,等于},{=,大于等于},{=,小于等于},{,不等于},{ like ,包含},{ not like ,不包含}}; public static void main(String ; variabl1927=new String ; parameter1=new String ; variabl2673=0; variabl26031=new ArrayList(); variabl1861=;variabl2429=;variabl1633=; s1=;s2=; variabl1393=; variabl1433=new String ;variabl1287=0; variabl2517=new ArrayListString(); variabl25171=new ArrayListString(); variabl1729=new ArrayListString(); variabl1591=0;variabl2307=0; variabl1363=new int ; variabl2259 =; variabl2259 =大于; variabl2259 =; variabl2259 =小于; variabl2259 ==; variabl2259 =等于; variabl2259 ==; variabl2259 =大于等于; variabl2259 ==; variabl2259 =小于等于; variabl2259 =!; variabl2259 =不等于; variabl2259 =$; variabl2259 =包含; variabl2259 =!$; variabl2259 =不包含; treeModel=null;variabl1091=sql1;nodeName=null; variabl2551=new String ;variabl1927=new String ; parameter1=new String ;variabl26031=new ArrayList(); variabl1861=;variabl2429=;variabl1633=;s1=;s2=; variabl1393=;variabl1433=new String ;variabl1287=0; variabl2647=1;variabl2517=new ArrayListString(); variabl25171=new ArrayListString();variabl1729=new ArrayListString(); variabl1591=0;variabl2307=0;variabl1363=new int ; String sk=,大于。,小于。=,等于。=,大于等于。=,小于等于。,不等于。 like ,包含。 not like ,不包含; String =sk0 .split(,); frame = new sysParametric(); frame.setVisible(true); } static void delNode(String variabl2527){ for (int i1=0;i1=variabl2673;i1++) if (variabl2551 .trim().equals(variabl2527.trim())){ variabl2551 =+100; delNode(variabl2551 ); } } static void addNode(DefaultMutableTreeNode variabl2299,String variabl2527){ for (int i1=1;i1variabl2673;i1++){ if (variabl2551 .trim().equals(variabl2527.trim())){ DefaultMutableTreeNode nodek1=new DefaultMutableTreeNode(variabl2551 ); variabl2299.add(nodek1); addNode(nodek1,variabl2551 ); } } } static ResultSet GetRs() { try { String s6=s1.split(,); for (int i=0;is6.length;i++){ variabl1861=s6 ; readStructure(); } variabl1633=; for (int i=0;ivariabl25171.size();i++) variabl1633=variabl1633+variabl25171.get(i)+,; } static void readStructure() { if (la5.getText().trim().equals(表名)){ variabl2517.clear(); variabl25171.clear(); variabl1729.clear(); variabl1633=; variabl1393=; } String .substring(0,variabl1433 .indexOf(.)-1).equals(variabl1861.trim())))){ variabl1433 =variabl25171.get(i); if (fa7.getText().length()1){ fa7.setText(variabl2703); } else { fa8.setText(variabl2703); } variabl1287++; } if (variabl1393.length()==0) variabl1393=variabl1729.get(i)+.+variabl2703+=+variabl1861+.+variabl2703; else variabl1393=variabl1393+ and +variabl1729.get(i)+.+variabl2703+=+variabl1861+.+variabl2703; break; } } variabl2517.add(variabl1861+.+variabl2703+ as +variabl2703+0+x); variabl25171.add(variabl1861+.+variabl2703+ as +variabl2703+0+x); variabl1729.add(variabl1861); } b0++; } rs.close(); con.close(); }catch (SQLException e){ JOptionPane.showMessageDialog( null, 连接数据库出错!); } } public sysParametric() { for (int i=0;i100;i++) { variabl1927 = ; variabl1927 = ; } setTitle(数据库桌面系统入口程序 作者:程学先); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(10, 10, 950, 660); main1.driver1(); con=main1.getConn(); try { ResultSet rst = GetRs(); while (rst.next()) { variabl26031.add(rst.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } for (int i=0;ivariabl26031.size();i++){ variabl2429=variabl2429+variabl26031.get(i).toString(); if (ivariabl26031.size()-1) variabl2429=variabl2429+,; } variabl26131 = new JPanel(); variabl26131.setLayout(null); setContentPane(variabl26131); la1 = new JLabel(部件名称); la1.setBounds(280, 30, 100, 25); variabl26131.add(la1); fa1 = new JTextField(0); fa1.setBounds(380, 30, 200, 25); variabl26131.add(fa1); fa1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=1; list.removeAll(); } }); la2 = new JLabel(DBMS名称); la2.setBounds(280,100, 100, 25); variabl26131.add(la2); fa2 = new JTextField(0); fa2.setBounds(380,100, 200, 25); variabl26131.add(fa2); fa2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=2; list.removeAll(); } }); la3 = new JLabel(数据库名称); la3.setBounds(280, 125, 100, 25); variabl26131.add(la3); fa3 = new JTextField(0); fa3.setBounds(380, 125, 200, 25); variabl26131.add(fa3); fa3.setText(); fa3.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=3; list.removeAll(); if (variabl26031.size()1){ try { ResultSet rst = GetRs(); while (rst.next()) { variabl26031.add(rst.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } } for (int i=0;ivariabl26031.size();i++){ list.add(variabl26031.get(i).toString()); } } }); la4 = new JLabel(ODBC源名); la4.setBounds(280,150, 100,25); variabl26131.add(la4); fa4 = new JTextField(0); fa4.setBounds(380,150, 200,25); variabl26131.add(fa4); fa4.setText(); fa4.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=4; list.removeAll(); if (variabl230748) { if (variabl26031.size()1){ try { ResultSet rst = GetRs(); while (rst.next()) { variabl26031.add(rst.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } } for (int i=0;ivariabl26031.size();i++) list.add(variabl26031.get(i).toString()); } } }); la5 = new JLabel(数据表名); la5.setBounds(280, 175, 100, 25); variabl26131.add(la5); fa5 = new JTextField(0); fa5.setBounds(380, 175, 200, 25); variabl26131.add(fa5); fa5.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=5; list.removeAll(); for (int i=0;ivariabl26031.size();i++) { list.add(variabl26031.get(i).toString()); } String variabl26030=variabl2429; } }); la6 = new JLabel(接口参数表名); la6.setBounds(280, 200, 100, 25); variabl26131.add(la6); fa6 = new JTextField(0); fa6.setBounds(380, 200, 200, 25); variabl26131.add(fa6); fa6.setText(); fa6.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1655=evt.getModifiers(); Object sk={,,,,,,,,,,,,,,,,,,,,,}; if (variabl1655==4){ JOptionPane.showMessageDialog( null, variabl1655+参数设置!+variabl2307+fa1.getText()); } variabl1591=6; list.removeAll(); if (,29,31,32,33,35,36,38,39,.indexOf(,+variabl2307+,)=0){ final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile()!=null){ s1=fc.getSelectedFile().toString(); s2=; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).equals(\\\\)) s2=s2+ \\\\+\\\\ ; else s2=s2+s1.substring(i,i+1); fa6.setText(s2); } } if ((variabl23074)(variabl23079)) { if (variabl26031.size()1){ try { ResultSet rst = GetRs(); while (rst.next()) { variabl26031.add(rst.getString(TABLE_NAME)); } } catch (Exception e) { e.printStackTrace(); } } for (int i=0;ivariabl26031.size();i++) list.add(variabl26031.get(i).toString()); } } }); la7 = new JLabel(关键字名); la7.setBounds(280, 225, 100, 25); variabl26131.add(la7); fa7 = new JTextField(0); fa7.setBounds(380, 225, 200, 25); variabl26131.add(fa7); fa7.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=7; list.removeAll(); variabl1861 = fa5.getText(); for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); } }); la8 = new JLabel(外关键字名); la8.setBounds(280, 250, 100, 25); variabl26131.add(la8); fa8 = new JTextField(); fa8.setBounds(380, 250, 200,25); variabl26131.add(fa8); fa8.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=8; list.removeAll(); variabl1861 = fa5.getText(); for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); } }); la9 = new JLabel(字段号表); la9.setBounds(280, 275, 100, 25); variabl26131.add(la9); fa9 = new JTextField(0); fa9.setBounds(380, 275, 200, 25); variabl26131.add(fa9); fa9.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=9; list.removeAll(); variabl1861 = fa5.getText(); for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); } }); la10 = new JLabel(字段号表2); la10.setBounds(280, 300, 100, 25); variabl26131.add(la10); fa10 = new JTextField(0); fa10.setBounds(380, 300, 200, 25); variabl26131.add(fa10); fa10.setText(); fa10.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=10; list.removeAll(); variabl1861 = fa5.getText(); for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); } }); la11 = new JLabel(字段号表3); la11.setBounds(280, 325, 100, 25); variabl26131.add(la11); fa11 = new JTextField(0); fa11.setBounds(380, 325, 200, 25); variabl26131.add(fa11); fa11.setText(); fa11.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=11; list.removeAll(); variabl1861 = fa5.getText(); if ((variabl230717) ||(variabl230719)) for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); else { list.add(请先选列名,再选关系符,再选与,再选列名,再选关系符); for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); list.add( 格式例1:学号大于?); list.add(与); list.add(或者); list.add( 格式例2:学号大于?与性别等于?); for (int i=0;ivariabl2259.length;i++) list.add(variabl2259 +?); } } }); la12 = new JLabel(按钮号表); la12.setBounds(280, 350, 100, 25); variabl26131.add(la12); fa12 = new JTextField(0); fa12.setBounds(380, 350, 200, 25); variabl26131.add(fa12); fa12.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=12; list.removeAll(); for (int i=0;ivariabl24051.length;i++){ list.add(variabl24051 ); } } }); la13 = new JLabel(按钮号表2); la13.setBounds(280, 375, 100, 25); variabl26131.add(la13); fa13 = new JTextField(0); fa13.setBounds(380, 375, 200, 25); variabl26131.add(fa13); fa13.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=13; list.removeAll(); if (variabl230726) for (int i=0;ivariabl2259.length;i++) list.add(variabl2259 ); else for (int i=0;ivariabl24051.length;i++){ list.add(variabl24051 ); } } }); la14 = new JLabel(条件表达式); la14.setBounds(280, 400, 100, 25); variabl26131.add(la14); fa14 = new JTextField(0); fa14.setBounds(380, 400, 200, 25); variabl26131.add(fa14); fa14.setText(); fa14.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=14; list.removeAll(); variabl1861 = fa5.getText(); String s9={p01 统计方差,p02 标准偏差,p03 平均偏差, p04 变中文大写元角分(壹仟零叁拾元),p05 变中文元角分(一千零二十元), p06 变表格格式中文大写元角分(壹仟零佰贰拾零元),p07 变为表格格式中文元角分(一千零百二十零元), p08 变表格格式中文元角分(一仟零三十元零三角)为数字, p09 变表格格式中文大写元角分(壹仟零百贰拾零元叁角零分)为数字, p10 变中文元角分(亿千百十万千百十元零一二三四五六七八九)为数字, p11 变大写中文(亿仟佰拾万仟佰拾元零壹贰叁肆伍陆柒捌玖)为数字, p12 小写变大写字母,p13 对多表全连接, p14 返回数字型星期值,p15 返回年份,p16 返回字符型星期值, p17 返回小时部分,p18 返回分钟部分,p19 返回月份值, p20 返回秒钟部分,p21 返回一个日期值,p22 返回二个日期相隔天数, p23 返回当前的日期和时间,p24 变日期为数字年月日(2003年 1月15日), p25 变日期格式为字符****.**.**格式,p26 变日期格式为字符****-**-**格式, p27 变日期格式为(YYYYMMDD)格式,p28 变中文年月日(二零零三年元月十五日)为日期格式, p29 变中文年月日(二零零三年元月十五日)为日期格式,p30 变数字年月日(2003年 1月15日)格式为日期格式, p31 返回月份英文名称,p32 求和,p33 求平均,p34 求最大,p35 求最小,p36 求UTF-16BE码,p37 按文件变换}; if ((variabl2307==36)||(variabl2307==37)) for (int i=0;is8.length;i++) list.add(s8 ); else if (variabl2307==38) for (int i=0;is9.length;i++) list.add(s9 ); if (variabl2307==6){ for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); list.add(以下再选关系符); for (int i=0;ivariabl2259.length;i++) list.add(variabl2259 ); } else if (variabl230726) for (int i=0;ivariabl2259.length;i++) list.add(variabl2259 ); else if (variabl2307==63){ list.add(请先选列名,再选关系符,再选与,再选列名,再选关系符); for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); list.add( 请选择关系符并输入查询内容值); list.add( ); list.add( ); list.add( = ); list.add( = ); list.add( = ); list.add( ); list.add( like ); list.add( 如果是多条件请选择逻辑符:); list.add( and ); list.add( or ); } else { for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); } } }); la15 = new JLabel(输出要求); la15.setBounds(280, 425, 100, 25); variabl26131.add(la15); fa15 = new JTextField(0); fa15.setBounds(380, 425, 200, 25); variabl26131.add(fa15); fa15.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=15; list.removeAll(); variabl1861 = fa5.getText(); for (int i=0;ivariabl25171.size();i++) list.add(variabl25171.get(i)); } }); la16 = new JLabel(格式文件名); la16.setBounds(280, 450, 100, 25); variabl26131.add(la16); fa16 = new JTextField(0); fa16.setBounds(380, 450, 200, 25); variabl26131.add(fa16); fa16.setText(); fa16.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=16; list.removeAll(); final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile()!=null){ s1=fc.getSelectedFile().toString(); s2=; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).equals(\\\\)) s2=s2+ \\\\+\\\\ ; else s2=s2+s1.substring(i,i+1); fa16.setText(s2); }} }); la17 = new JLabel(格式文件名2); la17.setBounds(280, 475, 100, 25); variabl26131.add(la17); fa17 = new JTextField(0); fa17.setBounds(380, 475, 200, 25); variabl26131.add(fa17); fa17.setText(); fa17.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=17; list.removeAll(); final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile()!=null) s1=fc.getSelectedFile().toString(); s2=; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).equals(\\\\)) s2=s2+ \\\\+\\\\ ; else s2=s2+s1.substring(i,i+1); fa17.setText(s2); } }); la18 = new JLabel(文件类型); la18.setBounds(280, 500, 100, 25); variabl26131.add(la18); fa18 = new JTextField(0); fa18.setBounds(380, 500, 200, 25); variabl26131.add(fa18); fa18.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=18; list.removeAll(); } }); la19 = new JLabel(文件名); la19.setBounds(280, 525, 100, 25); variabl26131.add(la19); fa19 = new JTextField(0); fa19.setBounds(380, 525, 200, 25); variabl26131.add(fa19); fa19.setText(); fa19.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { variabl1591=19; list.removeAll(); if (! la19.getText().equals(面板高度)) { final JFileChooser fc = new JFileChooser(.\\\\); fc.showOpenDialog(null); if (fc.getSelectedFile()!=null){ s1=fc.getSelectedFile().toString(); s2=; for (int i=0;is1.length();i++) if (s1.substring(i,i+1).equals(\\\\)) s2=s2+ \\\\+\\\\ ; else s2=s2+s1.substring(i,i+1); fa19.setText(s2); } } } }); variabl26010(); JLabel la20 = new JLabel(请选择输入内容); la20.setBounds(600, 30,400, 20); variabl26131.add(la20); list = new List(30,false); list.setBounds(600, 60,300,460); JScrollPane listScroll = new JScrollPane(list); list.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { switch (variabl1591) { case 2: fa2.setText(list.getSelectedItem()); break; case 3: fa3.setText(list.getSelectedItem()); break; case 4: fa4.setText(list.getSelectedItem()); break; case 6: if (variabl2307==6) if (fa6.getText().length()0){ fa6.setText(fa6.getText()+,+list.getSelectedItem()); } else fa6.setText(list.getSelectedItem()); else fa6.setText(list.getSelectedItem()); break; case 18: fa18.setText(list.getSelectedItem()); break; case 5: if (fa5.getText().length()1){ fa5.setText(list.getSelectedItem()); } else if (la5.getText().trim().equals(表名)) fa5.setText(list.getSelectedItem()); else{ fa5.setText(fa5.getText()+,+list.getSelectedItem()); } variabl1861=list.getSelectedItem(); readStructure(); break; case 7: if (fa7.getText().length()1) fa7.setText(list.getSelectedItem()); else fa7.setText(fa7.getText()+,+list.getSelectedItem()); break; case 8: if (variabl2307==6) fa8.setText(list.getSelectedItem()); else if (fa8.getText().length()1) fa8.setText(list.getSelectedItem()); else fa8.setText(fa8.getText()+,+list.getSelectedItem()); break; case 9: if (variabl2307==6) if (fa9.getText().length()1) fa9.setText(list.getSelectedItem()); else fa9.setText(fa9.getText()+,+list.getSelectedItem()); else if (fa9.getText().length()1) fa9.setText(+list.getSelectedIndex()); else fa9.setText(fa9.getText()+,+list.getSelectedIndex()); break; case 10: if ((variabl230718)(variabl2307!=6)(variabl2307!=11)(variabl2307!=12)) fa10.setText(+list.getSelectedIndex()); else if (variabl2307==6) fa10.setText(+list.getSelectedItem()); else if (fa10.getText().length()1) fa10.setText(+list.getSelectedIndex()); else fa10.setText(fa10.getText()+,+list.getSelectedIndex()); break; case 11: if (variabl230718) fa11.setText(+list.getSelectedIndex()); else if ((variabl2307==18)||(variabl2307==19)) fa11.setText(fa11.getText()+list.getSelectedItem()); else if (fa11.getText().length()1) fa11.setText(+list.getSelectedItem()); else fa11.setText(fa11.getText()+,+list.getSelectedItem()); break; case 12: if (fa12.getText().length()1) fa12.setText(+list.getSelectedIndex()); else fa12.setText(fa12.getText()+,+list.getSelectedIndex()); break; case 13: if ((variabl230713)(variabl230717)) fa13.setText(+list.getSelectedItem()); else{ if (fa13.getText().length()1) fa13.setText(+list.getSelectedItem()); else fa13.setText(fa13.getText()+,+list.getSelectedItem()); } break; case 14: if (((variabl230710)(variabl230720))||((variabl230735)(variabl230739))) fa14.setText(+list.getSelectedItem()); else{ if (fa14.getText().length()1) fa14.setText(+list.getSelectedItem()); else if ((variabl2307==63)||(variabl2307==39)) fa14.setText(fa14.getText()+list.getSelectedItem()); else if (variabl2307==6) fa14.setText(fa14.getText()+ +list.getSelectedItem()); else fa14.setText(fa14.getText()+,+list.getSelectedItem()); } break; case 15: if (variabl2307==6) if (fa15.getText().length()1) fa15.setText(+list.getSelectedItem()); else fa15.setText(fa15.getText()+++list.getSelectedItem()); else if ((variabl230735)(variabl230739)) fa15.setText(+list.getSelectedItem()); else{ if (fa15.getText().length()1) fa15.setText(+list.getSelectedItem()); else fa15.setText(fa15.getText()+,+list.getSelectedItem()); } break; } } }); variabl26131.add(list); DefaultMutableTreeNode root=new DefaultMutableTreeNode(部件集); int k=0; for (int i1=0;i1variabl2303.length;i1++){ DefaultMutableTreeNode root1=new DefaultMutableTreeNode(variabl2303 ); root.add(root1); addNode(root1,variabl2303 ); for (int j1=0;j1variabl1809 ;j1++){ DefaultMutableTreeNode root2=new DefaultMutableTreeNode(variabl2073 ); root1.add(root2); addNode(root2,variabl2073 ); k++; } } tree=new JTree(root); treeScroll=new JScrollPane(tree); tree.addMouseListener(new MouseHandle()); treeModel=(DefaultTreeModel)tree.getModel(); treeScroll.setBounds(10, 30, 260, 560); variabl26131.add(treeScroll); this.setVisible(true); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); tree.repaint(); JButton variabl2601 = new JButton(清屏); variabl2601.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { variabl26010(); } }); variabl2601.setBounds(600, 550,100, 25); variabl26131.add(variabl2601); JButton variabl2621 = new JButton(执行); variabl2621.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for (int i=0;i22;i++) parameter1 =; parameter1 =variabl2429; if (fa2.getText().trim().length()0){ parameter1 =fa2.getText(); } if (fa3.getText().trim().length()0){ parameter1 =fa3.getText(); } if (fa4.getText().trim().length()0){ parameter1 =fa4.getText(); } if (fa5.getText().trim().length()0){ parameter1 =fa5.getText(); } if (fa6.getText().trim().length()0){ parameter1 =fa6.getText(); } if (fa7.getText().trim().length()0){ parameter1 =fa7.getText(); } if (fa8.getText().trim().length()0){ parameter1 =fa8.getText(); } if (fa9.getText().trim().length()0){ parameter1 =fa9.getText(); } if (fa10.getText().trim().length()0){ parameter1 =fa10.getText(); } if (fa11.getText().trim().length()0){ parameter1 =fa11.getText(); } if (fa12.getText().trim().length()0){ parameter1 =fa12.getText(); } if (fa13.getText().trim().length()0){ parameter1 =fa13.getText(); } if (fa14.getText().trim().length()0){ parameter1 =fa14.getText(); } if (fa15.getText().trim().length()0){ parameter1 =fa15.getText(); } if (fa16.getText().trim().length()0){ parameter1 =fa16.getText(); } if (fa17.getText().trim().length()0){ parameter1 =fa17.getText(); } if (fa18.getText().trim().length()0){ parameter1 =fa18.getText(); } if (fa19.getText().trim().length()0){ parameter1 =fa19.getText(); } variabl1633=; for (int k=0;kvariabl25171.size();k++) if (kvariabl25171.size()-1) variabl1633=variabl1633+variabl25171.get(k)+,; else variabl1633=variabl1633+variabl25171.get(k); parameter1 =variabl1633; parameter1 =variabl1393; parameter1 =1; switch (variabl2307+1){ case 1:{tableTenance2.means(parameter1);break;} case 2:{tableTenance3.means(parameter1);break;} case 3:{tableTenance4.means(parameter1);break;} case 4:{tableTenance5.means(parameter1);break;} case 5:{tableTenance6.means(parameter1);break;} case 6:{tableTenance7.means(parameter1);break;} case 7:{tableTenance8.means(parameter1);break;} case 8:{tableTenance10.means(parameter1);break;} case 9:{tableTenance11.means(parameter1);break;} case 10:{tableTenance12.means(parameter1);break;} case 11:{tableTenance13.means(parameter1);break;} case 12:{dataQuery1.means(parameter1);break;} case 13:{dataQuery2.means(parameter1);break;} case 14:{dataQuery3.means(parameter1);break;} case 15:{dataQuery4.means(parameter1);break;} case 16:{dataQuery5.means(parameter1);break;} case 17:{dataQuery6.means(parameter1);break;} case 18:{dataQuery7.means(parameter1);break;} case 19:{dataQuery8.means(parameter1);break;} case 20:{dataQuery9.means(parameter1);break;} case 21:{dataQuery10.means(parameter1);break;} case 22:{dataQuery11.means(parameter1);break;} case 23:{dataQuery12.means(parameter1);break;} case 24:{dataQuery13.means(parameter1);break;} case 25:{dataQuery14.means(parameter1);break;} case 26:{dataQuery15.means(parameter1);break;} case 27:{dataQuery16.means(parameter1);break;} case 28:{dataTenance1.means(parameter1);break;} case 29:{dataTenance2.means(parameter1);break;} case 30:{dataTenance3.means(parameter1);break;} case 31:{ switch (variabl2647){ case 1:{dataTenance4.means(parameter1,frame1.framet1);variabl2647++;break;} case 2:{dataTenance4.means(parameter1,frame1.framet2);variabl2647++;break;} case 3:{dataTenance4.means(parameter1,frame1.framet3);variabl2647++;break;} case 4:{dataTenance4.means(parameter1,frame1.framet4);variabl2647++;break;} case 5:{dataTenance4.means(parameter1,frame1.framet5);variabl2647++;break;} case 6:{dataTenance4.means(parameter1,frame1.framet6);variabl2647++;break;} case 7:{dataTenance4.means(parameter1,frame1.framet7);variabl2647++;break;} case 8:{dataTenance4.means(parameter1,frame1.framet8);variabl2647++;break;} case 9:{dataTenance4.means(parameter1,frame1.framet9);variabl2647++;break;} case 10:{dataTenance4.means(parameter1,frame1.framet10);variabl2647=1;break;} } break; } case 32:{dataTenance5.means(parameter1);break;} case 33:{dataTenance6.means(parameter1);break;} case 34:{dataTenance7.means(parameter1);break;} case 35:{dataTenance8.means(parameter1);break;} case 36:{dataTenance9.means(parameter1);break;} case 37:{dataStatistic1.means(parameter1);break;} case 38:{dataStatistic2.means(parameter1);break;} case 39:{dataStatistic3.means(parameter1);break;} case 40:{dataStatistic4.means(parameter1);break;} case 41:{dataStatistic5.means(parameter1);break;} case 42:{dataStatistic6.means(parameter1);break;} case 43:{dataStatistic7.means(parameter1);break;} case 44:{dataStatistic8.means(parameter1);break;} case 45:{dataStatistic9.means(parameter1);break;} case 46:{dataStatistic10.means(parameter1);break;} case 47:{dataStatistic11.means(parameter1);break;} case 48:{dataStatistic12.means(parameter1);break;} case 49:{dataStatistic13.means(parameter1);break;} case 50:{dataTransfer1.means(parameter1);break;} case 51:{dataTransfer2.means(parameter1);break;} case 52:{dataTransfer3.means(parameter1);break;} case 53:{dataTransfer4.means(parameter1);break;} case 54:{dataTransfer5.means(parameter1);break;} case 55:{dataTransfer6.means(parameter1);break;} case 56:{dataTransfer7.means(parameter1);break;} case 57:{dataTransfer8.means(parameter1);break;} case 58:{dataTransfer9.means(parameter1);break;} case 59:{dataTransfer10.means(parameter1);break;} case 60:{dataTransfer11.means(parameter1);break;} case 61:{dataTransfer12.means(parameter1);break;} case 62:{dataTransfer13.means(parameter1);break;} case 63:{dataTransfer16.means(parameter1);break;} case 64:{dataTransfer17.means(parameter1);break;} case 65:{dataTransfer18.means(parameter1);break;} case 66:{printFormat1.means(parameter1);break;} case 67:{printFormat2.means(parameter1);break;} case 68:{printFormat3.means(parameter1);break;} case 69:{printFormat4.means(parameter1);break;} case 70:{printFormat5.means(parameter1);break;} case 71:{printFormat6.means(parameter1);break;} case 72:{printFormat7.means(parameter1);break;} case 73:{dataPreview.means(parameter1);break;} case 74:{dataPreview2.means(parameter1);break;} case 75:{dataPreview3.means(parameter1);break;} case 76:{dataPreview4.means(parameter1);break;} case 77:{dataPreview5.means(parameter1);break;} case 78:{dataPreview6.means(parameter1);break;} case 79:{dataPrint.means(parameter1);break;} case 80:{dataPrint2.means(parameter1);break;} case 81:{dataPrint3.means(parameter1);break;} case 82:{dataPrint4.means(parameter1);break;} case 83:{dataPrint5.means(parameter1);break;} case 84:{userTenance.means(parameter1);break;} case 85:{purviewTenance.means(parameter1);break;} } } }); variabl2621.setBounds(710, 550,100, 25); variabl26131.add(variabl2621, null); JButton variabl2599 = new JButton(退 出); variabl2599.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.setVisible(false); frame.dispose(); } }); variabl2599.setBounds(820, 550,100, 25); variabl26131.add(variabl2599); } class MouseHandle extends MouseAdapter{ public void mousePressed(MouseEvent e){ try{ variabl1717=tree.getSelectionPath().toString(); int w1=variabl1717.lastIndexOf(,); int w2=0; String variabl2299=; if (w10) { nodeName=variabl1717.substring(w1+2,variabl1717.length()-1); w2=variabl1717.substring(0,w1).lastIndexOf(,); } else variabl2299=部件集; if (w2=0) variabl2299=部件集; else variabl2299=variabl1717.substring(w2+2,w1); variabl1633=; variabl1393=; variabl2517.clear(); variabl25171.clear(); variabl1729.clear(); for (int i=0;ivariabl2073.length;i++){ if (variabl2073 .trim().equals(nodeName.trim())){ variabl2307=i; fa1.setText(variabl1833 ); variabl2517.clear() ; for (int j=1;j20;j++){ if (variabl1833 .trim().length()0) switch (j){ case 1:{ fa2.setEditable(true); fa2.setText(); la2.setText(); la2.setText(variabl1833 .trim()); break; } case 2:{ fa3.setEditable(true); fa3.setText(); la3.setText(); la3.setText(variabl1833 .trim()); break; } case 3:{ fa4.setEditable(true); fa4.setText(); la4.setText(); la4.setText(variabl1833 .trim()); break; } case 4:{ fa5.setEditable(true); fa5.setText(); la5.setText(); la5.setText(variabl1833 .trim()); break; } case 5:{ fa6.setEditable(true); fa6.setText(); la6.setText(); la6.setText(variabl1833 .trim()); break; } case 6:{ fa7.setEditable(true); fa7.setText(); la7.setText(variabl1833 .trim()); break; } case 7:{ fa8.setEditable(true); fa8.setText(); la8.setText(variabl1833 .trim()); break; } case 8:{ fa9.setEditable(true); fa9.setText(); la9.setText(variabl1833 .trim()); break; } case 9:{ fa10.setEditable(true); fa10.setText(); la10.setText(variabl1833 .trim()); break; } case 10:{ fa11.setEditable(true); fa11.setText(); la11.setText(variabl1833 .trim()); break; } case 11:{ fa12.setEditable(true); fa12.setText(); la12.setText(variabl1833 .trim()); break; } case 12:{ fa13.setEditable(true); fa13.setText(); la13.setText(variabl1833 .trim()); break; } case 13:{ fa14.setEditable(true); fa14.setText(); la14.setText(variabl1833 .trim()); break; } case 14:{ fa15.setEditable(true); fa15.setText(); la15.setText(variabl1833 .trim()); break; } case 15:{ fa16.setEditable(true); fa16.setText(); la16.setText(variabl1833 .trim()); break; } case 16:{ fa17.setEditable(true); fa17.setText(); la17.setText(variabl1833 .trim()); break; } case 17:{ fa18.setEditable(true); fa18.setText(); la18.setText(variabl1833 .trim()); break; } case 18:{ fa19.setEditable(true); fa19.setText(); la19.setText(variabl1833 .trim()); break; } case 19:{ variabl24051=variabl1833 .split(,); } } else switch (j){ case 1:{ la2.setText(); fa2.setText(); fa2.setEditable(false); break; } case 2:{ la3.setText(); fa3.setText(); fa3.setEditable(false); break; } case 3:{ la4.setText(); fa4.setText(); fa4.setEditable(false); break; } case 4:{ la5.setText(); fa5.setText(); fa5.setEditable(false); break; } case 5:{ la6.setText(); fa6.setText(); fa6.setEditable(false); break; } case 6:{ la7.setText(); fa7.setText(); fa7.setEditable(false); break; } case 7:{ la8.setText(); fa8.setText(); fa8.setEditable(false); break; } case 8:{ la9.setText(); fa9.setText(); fa9.setEditable(false); break; } case 9:{ la10.setText(); fa10.setText(); fa10.setEditable(false); break; } case 10:{ la11.setText(); fa11.setText(); fa11.setEditable(false); break; } case 11:{ la12.setText(); fa12.setText(); fa12.setEditable(false); break; } case 12:{ la13.setText(); fa13.setText(); fa13.setEditable(false); break; } case 13:{ la14.setText(); fa14.setText(); fa14.setEditable(false); break; } case 14:{ la15.setText(); fa15.setText(); fa15.setEditable(false); break; } case 15:{ la16.setText(); fa16.setText(); fa16.setEditable(false); break; } case 16:{ la17.setText(); fa17.setText(); fa17.setEditable(false); break; } case 17:{ la18.setText(); fa18.setText(); fa18.setEditable(false); break; } case 18:{ la19.setText(); fa19.setText(); fa19.setEditable(false); break; } } } } } }catch(NullPointerException ne){} } } static int componentsNo(String variabl2271,int variabl2699){ int variabl26991=variabl2699; return variabl26991; } static void variabl26010(){ la1.setText(); fa1.setText(); fa1.setEditable(false); la2.setText(); fa2.setText(); fa2.setEditable(false); la3.setText(); fa3.setText(); fa3.setEditable(false); la4.setText(); fa4.setText(); fa4.setEditable(false); la5.setText(); fa5.setText(); fa5.setEditable(false); la6.setText(); fa6.setText(); fa6.setEditable(false); la7.setText(); fa7.setText(); fa7.setEditable(false); la8.setText(); fa8.setText(); fa8.setEditable(false); la9.setText(); fa9.setText(); fa9.setEditable(false); la10.setText(); fa10.setText(); fa10.setEditable(false); la11.setText(); fa11.setText(); fa11.setEditable(false); la12.setText(); fa12.setText(); fa12.setEditable(false); la13.setText(); fa13.setText(); fa13.setEditable(false); la14.setText(); fa14.setText(); fa14.setEditable(false); la15.setText(); fa15.setText(); fa15.setEditable(false); la16.setText(); fa16.setText(); fa16.setEditable(false); la17.setText(); fa17.setText(); fa17.setEditable(false); la18.setText(); fa18.setText(); fa18.setEditable(false); la19.setText(); fa19.setText(); fa19.setEditable(false); } private static String variabl1809={11,16,9,13,6,10,7,11,2}; private static String variabl2073={ {1,1,表格式维护2}, {1,2,表格维护3,数据直接录入}, {1,3,表格维护4,显示代码、变换标签}, {1,4,表格维护5,需先添加空记录}, {1,5,表格维护6,可使用字典表与代码表}, {1,6,表格维护7,使用代码、字典表与参数表}, {1,7,清库与批处理8}, {1,8,表格维护10,单记录加表格}, {1,9,表格维护11,增加状态行}, {1,10,表格维护12,灵活改变数据表后维护有安全性完整性控制}, {1,11,表格维护13,可使用字典表有安全性完整性控制}, {2,1,单条件查询1}, {2,2,单查询2}, {2,3,单查询3}, {2,4,单查询4}, {2,5,二条件查询5}, {2,6,二条件查询6}, {2,7,二条件查询7}, {2,8,指定条件查询8}, {2,9,指定条件查询9}, {2,10,单表组合查询10}, {2,11,组合查询11}, {2,12,组合查询12}, {2,13,组合查询13}, {2,14,统计查询14}, {2,15,文本查询15}, {2,16,文本查询16}, {3,1,单记录维护1}, {3,2,单记录维护2,可使用字典表与代码表}, {3,3,单记录维护3,可自定义布局、有安全、完整性控制}, {3,4,单记录维护4,可使用字典表与代码表,可多次调用}, {3,5,单记录维护5,可使用字典表与代码表,组合框显示代码}, {3,6,单记录维护6,有字典表代码表(组合框)安全、完整性}, {3,7,数据子表维护,可自定义布局有安全、完整性控制}, {3,8,多对多联系表数据维护}, {3,9,单记录维护9,自定布局、安全完整性、字典表代码表}, {4,1,全表统计1}, {4,2,分组统计2}, {4,3,横向数据处理3}, {4,4,纵向数据处理4}, {4,5,删除重复记录5}, {4,6,求关系差集6}, {4,7,求关系并集7}, {4,8,求关系交集8}, {4,9,关系除法9}, {4,10,单数据交叉表10}, {4,11,多数据交叉表11}, {4,12,一元线性回归12}, {4,13,关系代数综合实验13}, { 5,1,覆盖式导出到表或文本文件1}, { 5,2,添加式导出到表或文本文件2}, { 5,3,修改式导出到表或文本文件3}, { 5,4,覆盖式导出到Office文件4}, { 5,5,添加式导出到Office文件5}, { 5,6,修改式导出到Office文件6}, { 6,1,从表或文本文件覆盖式导入7}, { 6,2,从表或文本文件添加式导入8}, { 6,3,从表或文本文件修改式导入9}, {6,4,从Office文件覆盖式导入10}, {6,5,从Office文件添加式导入11}, {6,6,从Office文件修改式导入12}, {6,7,导入网页到文本字段}, {6,8,通用导出16}, {6,9,通用导入17}, {6,10,通用导出18}, {7,1,表格式格式生成1}, {7,2,带分组统计格式生成2}, {7,3,统计图表格式生成3}, {7,4,带统计图报表格式生成4}, {7,5,单记录式格式生成5}, {7,6,表格式标签格式生成6}, {7,7,单记录式标签格式生成}, {8,1,打印预览表格式报表1}, {8,2,打印预览单记录报表2}, {8,3,打印预览表格式标签表3}, {8,4,打印预览单记录式标签表4}, {8,5,打印预览统计报表5}, {8,6,打印预览交叉表6}, {8,7,打印表格报表7}, {8,8,打印单记录报表8}, {8,9,打印表格式标签表9}, {8,10,打印单记录式标签表10}, {8,11,打印交叉表11}, {9,1,用户表维护}, {9,2,权限表维护} }; private static String ; static String variabl1833={ {tableTenance2,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,当前行存盘,variabl2633,variabl1697,退出}, {tableTenance3,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,,删除,退出}, {tableTenance4,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,,删除,退出}, {tableTenance5,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,添加空记录,variabl2633,variabl1291,全部表存盘,退出}, {tableTenance6,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,添加空记录,variabl2633,variabl1291,全部表存盘,退出}, {tableTenance7,,,,表名,接口参数表名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,添加空记录,variabl2633,variabl1291,全部表存盘,退出}, {tableTenance8,,导出表名,,表名,清空表名集,关键字段名,,清除字段名表,结果字段名,,要求按钮号表,,条件表达式,计算公式,,,面板宽度,面板高度,全部清空,按字段号清空,variabl2315,variabl1535,variabl1299,variabl1101,退出}, {tableTenance10,,,,表名,接口参数表名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,,第一条,variabl2325,variabl2255,variabl2853,variabl1893,录入存盘,variabl1697,退 出}, {tableTenance11,,,,表名,接口参数表名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,variabl2325,variabl2255,variabl2853,variabl1893,录入存盘,variabl1697,退 出}, {tableTenance12,,,,,,,,,,,要求按钮号表,,,,,,面板宽度,面板高度,添加,variabl2683,variabl2633,退出}, {tableTenance13,,,,,,,,,,,要求按钮号表,,,,,,面板宽度,面板高度,添加,variabl2683,variabl2633,退出}, {dataQuery1,,,,表名,,,,要求字段号表,查询字段号,,要求按钮号表,,关系符,,打印格式文件名,,面板宽度,面板高度,查询,variabl2091,variabl2617,退出}, {dataQuery2,,,,表名集,,,,要求字段号表,查询字段号,,要求按钮号表,,关系符,,,,面板宽度,面板高度,查询,退出}, {dataQuery3,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,查询,退出}, {dataQuery4,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,查询,退出}, {dataQuery5,,,,表名,,,,要求字段号表,查询字段号1,查询字段号2,要求按钮号表,关系符1,关系符2,,打印格式文件名,,面板宽度,面板高度,查询,variabl2091,variabl2617,退出}, {dataQuery6,,,,表名集,,,,要求字段号表,查询字段号1,查询字段号2,要求按钮号表,关系符1,关系符2,,,,面板宽度,面板高度,查询,退出}, {dataQuery7,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,查询,退出}, {dataQuery8,,,,表名集,,,,要求字段号表,,条件表达式,要求按钮号表,,,,打印格式文件名,,面板宽度,面板高度,查询,variabl2091,variabl2617,退出}, {dataQuery9,,,,表名集,,,,要求字段号表,,条件表达式,要求按钮号表,,,输出字段要求,,,面板宽度,面板高度,查询,退出}, {dataQuery10,,,,表名,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery11,,,,表名集,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery12,,,,表名集,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery13,,,,表名集,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery14,,,,表名集,,,,要求字段号表,,,,,,,,,面板宽度,面板高度,}, {dataQuery15,,,,表名,,,,要求字段号表,,,要求按钮号表,按钮号表2,,,打印格式文件名,,面板宽度,面板高度,浏览显示,variabl2375,variabl2325,variabl2255,variabl1971,variabl2091,variabl2617,variabl2639,退出}, {dataQuery16,,,,表名,,,,要求字段号表,,,要求按钮号表,按钮号表2,,,打印格式文件名,,面板宽度,面板高度,浏览显示,variabl2375,variabl2325,variabl2255,variabl1971,variabl2091,variabl2617,variabl2639,退出}, {dataTenance1,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,variabl2325,variabl1971,variabl2255,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,退出}, {dataTenance2,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,variabl2325,variabl1971,variabl2255,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,退出}, {dataTenance3,,,,表名,接口参数文件名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,variabl2325,variabl1971,variabl2255,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,退出}, {dataTenance4,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,variabl2325,variabl1971,variabl2255,variabl2637,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,variabl2315,图片存盘,退出}, {dataTenance5,,,,表名,接口参数文件名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,variabl2325,variabl1971,variabl2255,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,退出}, {dataTenance6,,,,表名,接口参数文件名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,variabl2325,variabl1971,variabl2255,variabl2637,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,退出}, {dataTenance7,,主表名,,子表名,,关键字段名,外键名,主表字段号表,子表字段号表,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,variabl2325,variabl1971,variabl2255,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,退出}, {dataTenance8,,主表名1,主表名2,表名,,关键字段名,,,,,要求按钮号表,,条件表达式1,条件表达式2,,,面板宽度,面板高度,第一条,variabl2325,variabl1971,variabl2255,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,退出}, {dataTenance9,,,,表名,接口参数文件名,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,面板宽度,面板高度,第一条,variabl2325,variabl1971,variabl2255,variabl2531,variabl2637,variabl2611,variabl2601,variabl1697,variabl2455,variabl2825,variabl2827,连续播放删除,退出}, {dataStatistic1,,,,表名,,,,要求字段号表,统计字段名集,,要求按钮号表,,统计项目名,,,,,,统计,variabl2091,variabl2617,variabl2639,退出}, {dataStatistic2,,,,表名集,,,,要求字段号表,统计字段名集,分组字段名,要求按钮号表,,统计项目名,分类比例,,,,,统计,variabl2091,variabl2617,variabl2639,退出}, {dataStatistic3,,,,表名集,接口文件名,关键字段名,关键字段名1,要求字段号表,统计字段名集,结果字段名,要求按钮号表,,统计项目名,,,,,,统计,variabl2541,variabl2639,退出}, {dataStatistic4,,,,表名集,,,,要求字段号表,统计字段名集,分组字段名,要求按钮号表,,,分类比例,,,,,求和,variabl2295,variabl2335,variabl2493,variabl1279,平均偏差,variabl1521,标准偏差,填充标准偏差,统计方差,填充统计方差,求ABC分类,variabl2599,variabl2091,variabl2617,导出}, {dataStatistic5,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,,,,,删除重复记录值,退 出}, {dataStatistic6,,子表名,,表名,,,,要求字段号表,子表字段名表,,要求按钮号表,,,,,,,,表1减表2,退出}, {dataStatistic7,,子表名,,表名,,,,要求字段号表,子表字段名表,,要求按钮号表,,,,,,,,求并集,退出}, {dataStatistic8,,子表名,,表名,,,,要求字段号表,子表字段名表,,要求按钮号表,,,,,,,,求交集,退出}, {dataStatistic9,,子表名,,表名,,,,要求字段号表,子表字段名表,,要求按钮号表,,,,,,,,表1除以表2,退出}, {dataStatistic10,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,打印格式文件名,,,,生成交叉表,生成转置表,variabl2005,导出到文件,显示统计图,退出}, {dataStatistic11,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,打印格式文件名,,,,生成交叉表,variabl2091,variabl2617,variabl2005,导出到文件,显示统计图,退出}, {dataStatistic12,,,,表名,,,,,,,要求按钮号表,,,,,,,,显示图表,退出}, {dataStatistic13,,子表名,,表名,,,,要求字段号表,子表字段名表,,,,,,,,,,求笛卡尔积,variabl2285,variabl2287,variabl1449,variabl2491,variabl2415,variabl2425,variabl1151,variabl2537,variabl2549,variabl2599,variabl2639,variabl2091,variabl2617,存入数据库}, {dataTransfer1,目的库DBMS,导出数据表名,目的库ODBC,源数据表名集,,,,要求字段号表,,,按钮号表,,,,,,,导出文件名,导出到数据库表,标准格式到文本文件,紧缩格式到文本文件,自定义格式到文本,覆盖式到XML文件,退出}, {dataTransfer2,目的库DBMS,导出数据表名,目的库ODBC,源数据表名集,,,,要求字段号表,,,按钮号表,,,,,,,导出文件名,导出到数据库表,标准格式到文本文件,紧缩格式到文本文件,自定义格式到文本,覆盖式到XML文件,退出}, {dataTransfer3,目的库DBMS,导出数据表名,目的库ODBC,源数据表名集,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,导出文件名,导出到数据库表,标准格式到文本文件,紧缩格式到文本文件,自定义格式到文本,覆盖式到XML文件,退出}, {dataTransfer4,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,,,,导出文件名,导出到word,导出到excel,导出到PDF,退出}, {dataTransfer5,,,,表名集,,,,要求字段号表,,,要求按钮号表,,,,,,,导出文件名,导出到word,导出到excel,导出到PDF,退出}, {dataTransfer6,,,,表名集,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,导出文件名,导出到word,导出到excel,导出到PDF,退出}, {dataTransfer7,源库DBMS,源表名,源库ODBC,目的表名,,,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从数据表导入,标准格式导入,紧缩格式导入,自定义格式导入,从XML文件导入,退出}, {dataTransfer8,源库DBMS,源表名,源库ODBC,目的表名,,,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从数据表导入,标准格式导入,紧缩格式导入,自定义格式导入,从XML文件导入,退出}, {dataTransfer9,源库DBMS,源表名,源库ODBC,目的表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从数据表导入,标准格式导入,紧缩格式导入,自定义格式导入,从XML文件导入,退出}, {dataTransfer10,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从word导入,从excel导入,从PDF文件导入,退出}, {dataTransfer11,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从word导入,从excel导入,从PDF文件导入,退出}, {dataTransfer12,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,,,,导入文件名,从word导入,从excel导入,从PDF文件导入,退出}, {dataTransfer13,,网页地址,,表名,,关键字段名,,,导入字段名,,要求按钮号表,,,,,,,,解析网页,variabl1347,variabl1205,删除当前记录,新记录存盘,退出}, {dataTransfer16,,,,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,,,打印格式文件名,,,,排序,接续排序,variabl2617,导出到数据表,导出到txt文件,退出}, {dataTransfer17,源库DBMS,导入源表名,源库ODBC,表名,,关键字段名,,要求字段号表,,,要求按钮号表,,导入条件式,,,,,,建新表并导入,复盖式导入,添加式导入,修改式导入,退出}, {dataTransfer18,,,,表名,,,,要求字段号表,,,要求按钮号表,,,,打印格式文件名,,,,排序,接续排序,variabl2617,导出到数据表,导出到txt文件,退出}, {printFormat1,,,,表名集,,,,,,,,,,,,,,,}, {printFormat2,,,,表名集,,,,,,,,,,,,,,,}, {printFormat3,,,,表名集,,,,,,,,,,,,,,,}, {printFormat4,,,,表名集,,,,,,,,,,,,,,,}, {printFormat5,,,,表名集,,,,,,,,,,,,,,,}, {printFormat6,,,,表名集,,,,,,,,,,,,,,,}, {printFormat7,,,,表名集,,,,,,,,,,,,,,,}, {dataPreview,,,,表名集,,,,,,,,,,,打印格式文件名,,,,}, {dataPreview2,,,,表名集,,,,,,,,,,,打印格式文件名,,,,当前记录预览,预览下一条,退出}, {dataPreview3,,,,表名集,,,,,,,,,,,打印格式文件名,,,,打印相同记录,依次打印记录,退出}, {dataPreview4,,,,表名集,,,,,,,,,,,打印格式文件名,,,,当前记录重复,顺次预览,退出}, {dataPreview5,,,,表名集,,,,,,,,,,,打印格式文件名,,,,打印预览,variabl2617,退出}, {dataPreview6,,,,表名集,,,,,,,,,,,打印格式文件名,,,,}, {dataPrint,,,,表名集,,,,,,,,,,,打印格式文件名,,,,}, {dataPrint2,,,,表名集,,,,,,,要求按钮号表,,,,打印格式文件名,,,,打印,打印下一条,退出}, {dataPrint3,,,,表名集,,,,,,,要求按钮号表,,,,打印格式文件名,,,,打印相同记录,依次打印记录,退出}, {dataPrint4,,,,表名集,,,,,,,要求按钮号表,,,,打印格式文件名,,,,当前记录重复,顺次预览,退出}, {dataPrint5,,,,表名集,,,,,,,,,,,打印格式文件名,,,,}, {userTenance,,,,表名,,关键字段名,,要求字段号表,密码字段号,1:要求重复输入密码,要求按钮号表,,,,,,,,第一条,variabl2325,variabl1971,variabl2255,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,退出}, {purviewTenance,,,,表名,,关键字段名,,要求字段号表,密码字段号,1:要求重复输入密码,要求按钮号表,,,,,,,,第一条,variabl2325,variabl1971,variabl2255,variabl2531,variabl2611,variabl2601,variabl1697,variabl2633,退出} }; } 2.源码2,应用系统主程序 /* * 程序文件名:main1.java * 作者:程学先 * 本程序用于构成应用系统主程序,显示应用系统封面,同时为其他部件程序提供公用的某些参数 * 根据项目文件夹中文件cover.txt的有关设置调用或不调用登录程序login.java, * 在作应用系统主程序时,当登录成功后调出系统菜单,由菜单控制系统运行。 * 文件cover.txt由程序cover.java设置。 * 程序后面加了5个struct1……类,为试验所用,使单记录数据维护部件4可用不同名字调用, */ import java.awt.Color; import java.awt.Font; import java.awt.event.*; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import javax.swing.*; import java.sql.*; import java.util.ArrayList; public class main1 { static String url; static int variabl1327=0; public static String variabl1275=sqlserver; public static String variabl1091=sql1; static Connection con=null; public static String variabl2221=学生; public static String variabl1401=否; public static String variabl2603; static String variabl1873 =; public static String variabl1639=; public static String variabl2517; public static String variabl1489; public static int variabl1853=0; public static int variabl1959=0,variabl2039=0; public static String variabl2197=new String ; public static String variabl1153= ; public static String variabl1187= ,variabl16731=,variabl16732=; public static int variabl2483=1000,variabl2503=700; public static int variabl1531 =10,variabl1477=10; public static String username=,rolename=; private static File file1; public static int sw1=0; public static String sw7=,sw8=,sw9=,sw10=; public static String sw2=,sw3=,sw4=,sw5=,sw6=; public static int n=0; public static void driver1(){ file1 = new File(.\\\\cover.txt); n=0; try{ if (file1.exists()) { FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); String tempStr = null; String ; String ; for (int i = 0; (tempStr = br.readLine()) != null; i++){ String s3=tempStr.substring(0,2); if (s3.equals(1,)){ s4=tempStr.substring(2,tempStr.length()).split(,); n++; } else { s5=tempStr.substring(2,tempStr.length()).split(,); for (int j=0;js5.length;j++){ variabl2197 =s5 ; if (variabl2197 !=null) {} else variabl2197 = ; } n++; } } if (s4 .compareTo( )0) variabl1275=s4 ; if (s4 .compareTo( )0) variabl1091=s4 ; if (s4 .compareTo( )0) variabl2221=s4 ; if (s4 .compareTo( )0) variabl1401=s4 ; variabl1531=0;variabl1477=0;variabl2483=1200;variabl2503=900; if (s4 .compareTo( )0) variabl2483=Integer.parseInt(s4 ); if (s4 .compareTo( )0) variabl2503=Integer.parseInt(s4 ); if (s4 .compareTo( )0) variabl1531 =Integer.parseInt(s4 ); if (s4 .compareTo( )0) variabl1477=Integer.parseInt(s4 ); variabl1639=.\\\\zz.jpg; if (s4 .compareTo( )0) variabl1639=s4 ; if (variabl1275.equals(sqlserver)){ String ; for (int i=0;ivariabl15010.length;i++)variabl1501 =variabl15010 ; } else if (variabl1275.equals(oracle)){ String ; for (int i=0;ivariabl15010.length;i++)variabl1501 =variabl15010 ; } else if (variabl1275.equals(Mysql)){ String ; for (int i=0;ivariabl15010.length;i++)variabl1501 =variabl15010 ; } else if (variabl1275.equals(access)){ String ; for (int i=0;ivariabl15010.length;i++)variabl1501 =variabl15010 ; } else if (variabl1275.equals(DB2)){ String ; for (int i=0;ivariabl15010.length;i++)variabl1501 =variabl15010 ; } else if (variabl1275.equals(JavaDB)){ String ; for (int i=0;ivariabl15010.length;i++)variabl1501 =variabl15010 ; } else { String ; for (int i=0;ivariabl15010.length;i++)variabl1501 =variabl15010 ; } } }catch(IOException e2) { JOptionPane.showMessageDialog( null, 打开文件错!); } try { if (variabl1275.indexOf(sqlserver)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); else if (variabl1275.indexOf(oracle)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); else if (variabl1275.indexOf(Mysql)==0) Class.forName(com.mysql.jdbc.Driver); else if (variabl1275.indexOf(access)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); else if (variabl1275.indexOf(JavaDB)==0) Class.forName(org.apache.derby.jdbc.EmbeddedDriver); else if (variabl1275.indexOf(DB2)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); else if (variabl1275.indexOf(Sybase)==0) Class.forName(com.sybase.jdbc.SybDriver); } catch(Exception e) { JOptionPane.showMessageDialog( null, 接驱动程序错!); } } public static Connection getConn(){ String url; try { if (variabl1275.indexOf(sqlserver) == 0) { con = DriverManager.getConnection(jdbc:odbc: + variabl1091); } else if (variabl1275.indexOf(oracle) == 0) { url = jdbc:oracle:thin:@localhost:1521:orcl3; String user = system; String password = ; con = DriverManager.getConnection(url, user, password); } else if (variabl1275.indexOf(Mysql) == 0) { url = jdbc:mysql://localhost:3306/information_schema; String user = root; String passWord = ; con = DriverManager.getConnection(url, user, passWord); } else if (variabl1275.indexOf(access) == 0) con = DriverManager.getConnection(jdbc:odbc: + variabl1091); else if (variabl1275.indexOf(JavaDB) == 0) { url = jdbc:derby:db_database22; con = DriverManager.getConnection(url + ;create=true); } else if (variabl1275.indexOf(DB2) == 0) con = DriverManager.getConnection(jdbc:odbc: + variabl1091); else con = DriverManager.getConnection(jdbc:odbc: + variabl1091); } catch (SQLException e1) { JOptionPane.showMessageDialog( null, 连接数据库未成功!); } return con; } static void color1(int c,JLabel fl){ switch (c) { case 1: fl.setForeground(Color.red); break; case 2: fl.setForeground(Color.blue); break; case 3: fl.setForeground(Color.green); break; case 4: fl.setForeground(Color.white); break; case 5: fl.setForeground(Color.black); break; case 6: fl.setForeground(Color.darkGray); break; case 7: fl.setForeground(Color.cyan); break; case 8: fl.setForeground(Color.yellow); break; case 9: fl.setForeground(Color.gray); break; case 10: fl.setForeground(Color.lightGray); break; case 11: fl.setForeground(Color.magenta); break; case 12: fl.setForeground(Color.orange); break; } } public static void main(String !=null) { } else variabl2197 = ; } if ((variabl2197 .compareTo(0)=0)||(variabl2197 .compareTo(0)=0)|| (variabl2197 .compareTo(0)=0)||(variabl2197 .compareTo(0)=0)){ variabl2197 = ; variabl2197 =0; variabl2197 =0; variabl2197 =0; variabl2197 =0; } if (variabl2197 .compareTo(0)=0) variabl2197 =宋体; if (variabl2197 .compareTo(0)=0) variabl2197 =9; if (variabl2197 .compareTo(0)=0) variabl2197 =0; } int d1=0,t1=0,l1=0,h1=0,variabl2607=9,variabl2659=0; for (int i=1;in;i++){ if (variabl2197 .compareTo( )0) { d1=Integer.parseInt(variabl2197 ); t1=Integer.parseInt(variabl2197 ); l1=Integer.parseInt(variabl2197 ); h1=Integer.parseInt(variabl2197 ); variabl2607=Integer.parseInt(variabl2197 ); variabl2659=Integer.parseInt(variabl2197 ); switch (i) { case 1: fl1=new JLabel(variabl2197 ); Font font = new Font(variabl2197 ,Font.PLAIN,variabl2607); fl1.setFont(font); color1(variabl2659,fl1); fl1.setBounds(d1,t1,l1*variabl2607*2,variabl2607); mpanel1.add(fl1); break; case 2: fl2=new JLabel(variabl2197 ); Font font2 = new Font(variabl2197 ,Font.PLAIN,variabl2607); fl2.setFont(font2); color1(variabl2659,fl2); fl2.setBounds(d1,t1,l1*variabl2607*2,variabl2607); mpanel1.add(fl2); break; case 3: fl3=new JLabel(variabl2197 ); Font font3 = new Font(variabl2197 ,Font.PLAIN,variabl2607); fl3.setFont(font3); color1(variabl2659,fl3); fl3.setBounds(d1,t1,l1*variabl2607*2,variabl2607); mpanel1.add(fl3); break; case 4: fl4=new JLabel(variabl2197 ); Font font4 = new Font(variabl2197 ,Font.PLAIN,variabl2607); fl4.setFont(font4); color1(variabl2659,fl4); fl4.setBounds(d1,t1,l1*variabl2607*2,variabl2607); mpanel1.add(fl4); break; case 5: fl5=new JLabel(variabl2197 ); Font font5 = new Font(variabl2197 ,Font.PLAIN,variabl2607); fl5.setFont(font5); color1(variabl2659,fl5); fl5.setBounds(d1,t1,l1*variabl2607*2,variabl2607); mpanel1.add(fl5); break; case 6: fl6=new JLabel(variabl2197 ); Font font6 = new Font(variabl2197 ,Font.PLAIN,variabl2607); fl6.setFont(font6); color1(variabl2659,fl6); fl6.setBounds(d1,t1,l1*variabl2607*2,variabl2607); mpanel1.add(fl6); break; case 7: fl7=new JLabel(variabl2197 ); Font font7 = new Font(variabl2197 ,Font.PLAIN,variabl2607); fl7.setFont(font7); color1(variabl2659,fl7); fl7.setBounds(d1,t1,l1*variabl2607*2,variabl2607); mpanel1.add(fl7); break; case 8: fl8=new JLabel(variabl2197 ); Font font8 = new Font(variabl2197 ,Font.PLAIN,variabl2607); fl8.setFont(font8); color1(variabl2659,fl8); fl8.setBounds(d1,t1,l1*variabl2607*2,variabl2607); mpanel1.add(fl8); break; case 9: fl9=new JLabel(variabl2197 ); Font font9 = new Font(variabl2197 ,Font.PLAIN,variabl2607); fl9.setFont(font9); color1(variabl2659,fl9); fl9.setBounds(d1,t1,l1*variabl2607*2,variabl2607); mpanel1.add(fl9); break; } } } if (variabl1401.equals(有)){ login.means(); while (true) if (username.length()0) break; } menu.JMenuDemo1(); } } class struct1{ String ; public struct1(String =title ; } } class struct2{ String ; public struct2(String =tableTitle ; } } class struct3{ String ; public struct3(String =table1 ; } } class struct4{ String ; public struct4(String =table2 ; } } class struct5{ String ; public struct5(String =table3 ; } } 3.源码3,环境参数设置程序 /* * 作者:程学先 * 本程序用于系统运行环境参数设置,包括主程序窗口及大小位置参数设置。 * 宽度、高度以字符个数为单位。左边距、到顶距以象素为单位 * 在程序中设置的宽度、高度、左边距、到顶距要与所填入数据及字号计算结果相适应 * 所有数据保存在文件cover.txt中。 * 操作内容分为添加与修改,添加:首先在文本框输入目录,即第一列文字,不得与已有第一列内容相同 * 之后,输入其他文本框数据,完毕后点击“添加到表格中”,将在表格中增加一行数据。 * 修改:首先点击欲修改的某一行,该行数据将复制到文本框中,之后修改文本框中数据。 * 完毕后点击“修改表格数据”。也可删除。 * 文件中数据分为二组,第一组只一行。 * “辅助计算”对标题以下行根据输入的汉字个数计算欲在封面上显示的控件的以象素点为单位的左边距、到顶距。 * (注意不修改标题以上行数据和其他数据) * 如果按下“辅助计算”按钮,操作结果将替代已经输入的边距、到顶距, * 因此,如果准备辅助计算,除输入封面中某一行的文字内容外可以不输入除字号外任何数据。 * 注意要求已经输入所有内容的字号,操作前请一定检查所有内容的字号都已经输入后再操作。 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import javax.swing.tree.DefaultMutableTreeNode; import java.io.*; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Vector; public class cover extends JFrame { private static cover frame1 = new cover(); private static JPanel panel1 = new JPanel(); private static DefaultTableModel variabl1965; private static JTable variabl2655; private static JScrollPane scrollPane = new JScrollPane(); private static JScrollPane scrollPane1 = new JScrollPane(); private static List list1 = new List(); private static JLabel fl0,fl1,fl2,fl3,fl4,fl5,fl6,fl7,fl8,fl9,fl10; private static JTextField fa0,fa1,fa2,fa3,fa4,fa5,fa6,fa7,fa8,fa9,fa10; private static String variabl2327; private static int variabl1823=-1,variabl1947=0,variabl2193=0,variabl1739=0,variabl2651=0; private static int variabl2127=0; private static String variabl2197; private static ArrayListString variabl1665 = new ArrayList(); private static String ; private static File file1; private static ArrayListString list = new ArrayListString(); static String s1=,s2=; private static ArrayList variabl26031=new ArrayList(); static String ) { frame1 = new cover();panel1 = new JPanel(); scrollPane = new JScrollPane();scrollPane1 = new JScrollPane(); list1 = new List(); variabl1823=-1;variabl1947=0;variabl2193=0;variabl1739=0;variabl2651=0; variabl2127=0; variabl2157=new String ;list = new ArrayListString(); s1=;s2=;variabl26031=new ArrayList(); DBMS名 =sqlserver;DBMS名 =oracle; DBMS名 =Mysql;DBMS名 =access; DBMS名 =JavaDB;DBMS名 =DB2;DBMS名 =Sybase; frame1.setTitle(环境参数设置程序,所有参数以字符个数为单位。 作者:程学先); frame1.setBounds(10, 10, 880, 660); frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame1.getContentPane().setLayout(null); panel1.setBounds(10, 10, 880, 660); panel1.setLayout(null); final String variabl2609 = { DBMS名字,ODBC名字,数据库名字,是否有登录程序,窗口宽度,窗口高度,窗口左边距,窗口到顶距, 背景图像, 标题, 副标题1, 副标题2, 单位名称, 第1作者, 其他作者, 日期}; final String variabl2629={宋体,黑体,仿宋_GB2312,楷体,仿宋}; variabl2197=new String ; file1 = new File(.\\\\cover.txt); try{ if (file1.exists()) { FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); String tempStr = null; variabl1665.clear(); String = ; for (int i1=0;i19;i1++){ variabl2197 =variabl2609 ; variabl2197 =s4 ; n++; } } else { variabl2197 =tempStr.substring(2,tempStr.length()).split(,); n++; } } } else { for (int i=0;ivariabl2609.length;i++){ variabl2197 =variabl2609 ; variabl2197 =variabl2117 ; for (int j=2;j8;j++) variabl2197 = ; } } }catch(IOException e2) { JOptionPane.showMessageDialog( null, 打开文件错!); } variabl1965 = new DefaultTableModel(variabl2197, variabl2517); variabl2655 = new JTable(variabl1965); variabl2655.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); variabl2655.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); int ); } variabl2655.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int variabl1823 = variabl2655.getSelectedRow(); for (int j=0;jvariabl2517.length;j++){ if (variabl1965.getValueAt(variabl1823,j)!=null) variabl2327 = variabl1965.getValueAt(variabl1823,j).toString(); else variabl2327=; switch (j){ case 0: fa1.setText(variabl2327.toString()); break; case 1: fa2.setText(variabl2327.toString()); break; case 2: fa3.setText(variabl2327.toString()); break; case 3: fa4.setText(variabl2327.toString()); break; case 4: fa5.setText(variabl2327.toString()); break; case 5: fa6.setText(variabl2327.toString()); break; case 6: fa7.setText(variabl2327.toString()); break; case 7: fa8.setText(variabl2327.toString()); break; case 8: fa9.setText(variabl2327.toString()); break; } } } }); scrollPane.setBounds(10, 40, 700, 400); scrollPane.setViewportView(variabl2655); panel1.add(scrollPane, BorderLayout.CENTER); fl1=new JLabel(目录); fl1.setBounds(30,460,60, 20); panel1.add(fl1); fa1 = new JTextField(,20); fa1.setBounds(90,460, 100, 20); panel1.add(fa1); fa1.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { list1.removeAll(); variabl1739=1; for (int i=0;ivariabl2609.length;i++) { list1.add(variabl2609 ); } } }); fl2=new JLabel(内容); fl2.setBounds(210,460,60, 20); panel1.add(fl2); fa2 = new JTextField(,20); fa2.setBounds(270,460,400, 20); panel1.add(fa2); fa2.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739=2; list1.removeAll(); if (fa1.getText().equals(DBMS名字)) for (int i=0;iDBMS名.length;i++) list1.add(DBMS名 ); else { s2=,; for (int i=0;ivariabl1965.getRowCount();i++){ if (variabl1965.getValueAt(i,variabl1739-1)!=null) if (s2.lastIndexOf(,+variabl1965.getValueAt(i,variabl1739-1).toString()+,)0){ list1.add(variabl1965.getValueAt(i,variabl1739-1).toString()); s2=s2+variabl1965.getValueAt(i,variabl1739-1).toString()+,; } } } } }); fl3=new JLabel(宽度); fl3.setBounds(690,460,60, 20); panel1.add(fl3); fa3 = new JTextField(,20); fa3.setBounds(750,460,60, 20); panel1.add(fa3); fa3.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739=3; list1.removeAll(); s2=,; for (int i=0;ivariabl1965.getRowCount();i++){ if (variabl1965.getValueAt(i,variabl1739-1)!=null) if (s2.lastIndexOf(,+variabl1965.getValueAt(i,variabl1739-1).toString()+,)0){ list1.add(variabl1965.getValueAt(i,variabl1739-1).toString()); s2=s2+variabl1965.getValueAt(i,variabl1739-1).toString()+,; } } } }); fl4=new JLabel( 高度); fl4.setBounds(30,500,50, 20); panel1.add(fl4); fa4 = new JTextField(,20); fa4.setBounds(80,500,50, 20); panel1.add(fa4); fa4.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739=4; list1.removeAll(); s2=,; for (int i=0;ivariabl1965.getRowCount();i++){ if (variabl1965.getValueAt(i,variabl1739-1)!=null) if (s2.lastIndexOf(,+variabl1965.getValueAt(i,variabl1739-1).toString()+,)0){ list1.add(variabl1965.getValueAt(i,variabl1739-1).toString()); s2=s2+variabl1965.getValueAt(i,variabl1739-1).toString()+,; } } } }); fl5=new JLabel( 左边距); fl5.setBounds(150,500,50, 20); panel1.add(fl5); fa5 = new JTextField(,20); fa5.setBounds(200,500,50, 20); panel1.add(fa5); fa5.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739=5; list1.removeAll(); s2=,; for (int i=0;ivariabl1965.getRowCount();i++){ if (variabl1965.getValueAt(i,variabl1739-1)!=null) if (s2.lastIndexOf(,+variabl1965.getValueAt(i,variabl1739-1).toString()+,)0){ list1.add(variabl1965.getValueAt(i,variabl1739-1).toString()); s2=s2+variabl1965.getValueAt(i,variabl1739-1).toString()+,; } } } }); fl6=new JLabel(到顶距); panel1.add(fl6); fa6 = new JTextField(,20); panel1.add(fa6); fl6.setBounds(270,500,50, 20); fa6.setBounds(320,500,50, 20); fa6.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739=6; list1.removeAll(); s2=,; for (int i=0;ivariabl1965.getRowCount();i++){ if (variabl1965.getValueAt(i,variabl1739-1)!=null) if (s2.lastIndexOf(,+variabl1965.getValueAt(i,variabl1739-1).toString()+,)0){ list1.add(variabl1965.getValueAt(i,variabl1739-1).toString()); s2=s2+variabl1965.getValueAt(i,variabl1739-1).toString()+,; } } } }); fl7=new JLabel( 字体); panel1.add(fl7); fa7 = new JTextField(,20); panel1.add(fa7); fl7.setBounds(390,500,50, 20); fa7.setBounds(440,500,70, 20); fa7.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739=7; list1.removeAll(); for (int i=0;ivariabl2629.length;i++){ list1.add(variabl2629 ); } } }); fl8=new JLabel(字号); panel1.add(fl8); fa8 = new JTextField(,20); panel1.add(fa8); fl8.setBounds(530,500,50, 20); fa8.setBounds(580,500,70, 20); fa8.addFocusListener(new FocusAdapter() { public void focusGained(final FocusEvent arg0) { variabl1739=8; list1.removeAll(); final String ); } } }); fl9=new JLabel(颜色); panel1.add(fl9); fa9 = new JTextField(,20); panel1.add(fa9); fl9.setBounds(670,500,50, 20); fa9.setBounds(720,500,90, 20); final String ); } } }); list1.setBounds(720, 10,120,430); panel1.add(list1); list1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int w1,w2,h1,h2; switch (variabl1739) { case 1: fa1.setText(list1.getSelectedItem()); break; case 2: fa2.setText(list1.getSelectedItem()); break; case 3: fa3.setText(list1.getSelectedItem()); break; case 4: fa4.setText(list1.getSelectedItem()); break; case 5: fa5.setText(list1.getSelectedItem()); break; case 6: fa6.setText(list1.getSelectedItem()); break; case 7: fa7.setText(list1.getSelectedItem()); break; case 8: fa8.setText(list1.getSelectedItem()); break; case 9: fa9.setText(list1.getSelectedItem().substring(0,5).trim()); break; } } }); final JButton addButton = new JButton(添加到表格中); addButton.setBounds(10,540,120, 20); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int variabl1823=-1; for (int i=0;ivariabl1965.getRowCount();i++){ if ((variabl1965.getValueAt(i,0)!=null)(variabl1965.getValueAt(i,0).equals(fa1.getText()))){ variabl1823=i; break; } } if (variabl18230){ String[] rowValues = {fa1.getText(),fa2.getText(),fa3.getText(),fa4.getText() ,fa5.getText(),fa6.getText(),fa7.getText(),fa8.getText(),fa9.getText()}; variabl1965.addRow(rowValues); int rowCount = variabl2655.getRowCount() + 1; fa1.setText( );fa2.setText( );fa3.setText(0); fa4.setText(0);fa5.setText(0);fa6.setText(0); fa7.setText( );fa8.setText(0);fa9.setText( ); } else{ JOptionPane.showMessageDialog( null,存在重复,请改按修改!); } } }); panel1.add(addButton); final JButton updButton = new JButton(修改表格数据); updButton.setBounds(130,540,120, 20); updButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { variabl1823=-1; for (int i=0;ivariabl1965.getRowCount();i++){ if ((variabl1965.getValueAt(i,0)!=null)(variabl1965.getValueAt(i,0).equals(fa1.getText()))){ variabl1823=i; break; } } if (variabl1823=0) { variabl1965.setValueAt(fa1.getText(), variabl1823, 0); variabl1965.setValueAt(fa2.getText(), variabl1823, 1); variabl1965.setValueAt(fa3.getText(), variabl1823, 2); variabl1965.setValueAt(fa4.getText(), variabl1823, 3); variabl1965.setValueAt(fa5.getText(), variabl1823, 4); variabl1965.setValueAt(fa6.getText(), variabl1823, 5); variabl1965.setValueAt(fa7.getText(), variabl1823, 6); variabl1965.setValueAt(fa8.getText(), variabl1823, 7); variabl1965.setValueAt(fa9.getText(), variabl1823, 8); } else JOptionPane.showMessageDialog( null,为新数据,请改按添加!); } }); panel1.add(updButton); final JButton delButton = new JButton(从表格中删除); delButton.setBounds(250,540,120, 20); delButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int variabl1823 = variabl2655.getSelectedRow(); if (variabl1823 != -1) variabl1965.removeRow(variabl1823); } }); panel1.add(delButton); final JButton countButton = new JButton(辅助计算); countButton.setBounds(370,540,110, 20); countButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int variabl26071=0,variabl1611=0,variabl2553=0,variabl1727=1200,variabl1783=900; int n1=0,n2=0,n3=0; String s3=; if (JOptionPane.showConfirmDialog(null, 本操作将替代已经输入的所有边距、到顶距,要求已经输入所有内容的字号,是否继续?, ,JOptionPane.YES_NO_OPTION)==0){ for (int i=9;ivariabl1965.getRowCount();i++){ s2=variabl1965.getValueAt(i,1).toString().trim(); s3=variabl1965.getValueAt(i,7).toString().trim(); if ((s2.compareTo(0)0)(s3.length()0)){ variabl26071=Integer.parseInt(s3); n1=0;n2=0;n3=0; for (int j=0;js2.length();j++) if (s2.substring(j,j+1).compareTo(z)0){ if (s2.substring(j,j+1).compareTo(0)0) n1++; else n2++; } else n3++; variabl1611=n1/3+n2/2+n3; variabl1965.setValueAt(1, i, 3); Toolkit ck = Toolkit.getDefaultToolkit(); if (ck.getScreenSize().widthvariabl1727) variabl1727=ck.getScreenSize().width; if (ck.getScreenSize().heightvariabl1783) variabl1783=ck.getScreenSize().height; variabl1783=variabl1783-60; variabl1965.setValueAt(+(variabl1727-variabl1611*variabl26071)/2, i, 4); variabl1611=variabl1965.getValueAt(i,1).toString().length(); variabl1965.setValueAt(+variabl1611, i, 2); if (i==9) { variabl2553=(variabl1783-variabl26071)/4; variabl1965.setValueAt(+variabl2553, i, 5); variabl2553=variabl2553+variabl26071; } else if (i==15) variabl1965.setValueAt(+variabl1783*9/10, i, 5); else { variabl2553=variabl2553+variabl26071; variabl1965.setValueAt(+variabl2553, i, 5); variabl2553=variabl2553+variabl26071; } } } } } }); panel1.add(countButton); final JButton creButton = new JButton(表格内容存盘); creButton.setBounds(480,540,120, 20); creButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { char x1=10,x2=13,x3='',x4=','; file1 = new File(.\\\\cover.txt); FileOutputStream fs; try{ if (!file1.exists()) { file1.createNewFile(); } fs = new FileOutputStream(file1); String s1=1,,s2=; for (int i=0;i9;i++){ s2=; if (variabl1965.getValueAt(i,1)!=null) s2=variabl1965.getValueAt(i,1).toString().trim(); if (s2.compareTo( )=0) s2= ; s1=s1+s2+,; } fs.write((s1+x1).getBytes()); for (int i=9;ivariabl1965.getRowCount();i++){ s1=2,; for (int j=0;j9;j++){ s2=; if (variabl1965.getValueAt(i,j)!=null) s2=variabl1965.getValueAt(i,j).toString().trim(); if (s2.compareTo( )=0) s2= ; s1=s1+s2+,; } fs.write((s1+x1).getBytes()); } fs.close(); }catch(IOException e2) { JOptionPane.showMessageDialog( null,写文件错。); } } }); panel1.add(creButton); final JButton clearButton = new JButton(清参数文本框); clearButton.setBounds(590,540,120, 20); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fa1.setText( );fa2.setText( );fa3.setText(0); fa4.setText(0);fa5.setText(0);fa6.setText(0); fa7.setText( );fa8.setText(0);fa9.setText( ); } }); panel1.add(clearButton); final JButton exitButton = new JButton(退出); exitButton.setBounds(710,540,110, 20); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel1.setVisible(false); frame1.setVisible(false); System.exit(0); } }); panel1.add(exitButton); frame1.add(panel1); frame1.setVisible(true); } }
个人分类: 生活点滴|997 次阅读|0 个评论
软件生产线技术及开源软件声明
求新 2018-5-26 16:55
软件生产线指生产软件的软件,先利用建模工具软件用图解的形式给出应用系统的系统模型,之后自动生成应用系统可执行程序,自动完成建立应用系统的工作。它能有效提高应用系统开发效率,减少软件开发成本,提高软件设计质量,实现软件设计规范化与标准化,降低系统维保费用,是实现软件工业化生产的基础之一。 管理信息系统软件生产线 3.0 版内容包括:软件生产线建模工具、数据库桌面系统、管理信息系统软部件库三部分内容。 软件生产线建模工具模型图包括用例图、数据结构部件图、系统结构部件图、组件图、时序图。 用例图用于需求分析,用角色描述“谁”、用用例表示“做什么”、用实体表示涉及哪些“数据”,用文本框“注释”有关说明。用例图绘制后可以自动绘制数据结构部件图框架图和系统结构部件图框架图。 数据结构部件图用于数据库设计与数据表定义,用部件图表示实体,用一对多与多对多线条表示实体之间联系。要求给出实体 - 关系模型(绘制 E-R 图)完成数据库概念结构设计,继而要求说明实体的属性,自动进行 E-R 图到关系数据模型的变换,完成数据库逻辑结构设计,之后调用数据库生成程序完成数据库物理设计,自动生成数据表。数据表可以为 SQL Server 、 Oracle 、 MySQL 、 DB2 、 Access 等数据库中的数据表。用矩形表示实体(数据表),该矩形分为三层,其上层表述数据库名称,中层表述数据表名称,下层表述各字段属性,包括字段名、数据类型、宽度、小数位、是否为关键字、是否唯一、是否允许空值、域完整性参数、参照完整性参数、默认值等属性,数据结构部件图绘图程序提供从列表框的数据中选择录入数据类型、参照表、关键字等数据的方便,使建表过程尽可能简单、快捷、正确。 系统结构部件图用于描述子系统结构,绘制子系统结构图,保存到子系统结构部件图文件中。也可自动生成规模较小的应用系统。用矩形图表示用例(部件),该矩形分为三层,上层描述应用系统控制菜单的父节点项名称,中层描述菜单项名称,下层表示所选部件名称及参数,参数例如有关数据表的名称、关键字段名称、视图与功能参数等,帮助完成应用系统概要设计与详细设计。之后可自动生成规模较小的应用系统。 组件图用于描述系统结构,说明全系统所涉及的子系统结构部件图的名称、位置。用矩形图表述组件,该矩形分为三层,上层说明父节点名,中层描叙当前节点名,下层说明该相关系统结构部件图所保存的文件名。该程序提供二个方法:自动生成应用系统菜单、自动生成应用系统。应用系统可有二种控制方式:水平下拉菜单控制、目录树菜单控制。 为提高设计效率,各个模型图不是孤立的,彼此之间存在联系:在绘制用例图后可根据其中实体图形自动生成数据结构部件图框架,根据其中用例图形自动生成系统结构部件图图形框架。 时序图用于描述系统业务流程模型,建立业务流程模型、进行任务分析、任务安排、操作定义、角色安排与权限定义。用三层矩形图表示部件、用角色图表述操作者、用虚线表示生命线、用箭头线表示流程。部件图描叙操作内容,定义操作执行的程序;生命线描述部件与角色的关系,说明操作对象与操作内容,给出安全性控制要素;流程描叙操作的时间关系,表明操作与操作之间的联系。系统提供工作流驱动程序驱动任务执行、任务转换、模型管理、业务流程管理等。 软件生产线的核心内容是软部件库,软部件的基础是类与构件。类是可被复用的程序,由一到多个方法组合而成,在每个类中可以定义多个变量,在运行时代表各自的空间。软构件是由一到多个类集成得到的软件实体,是一个可独立部署的单元,具有规范的接口,可以通过它的接口访问它的服务。构件之间可以存在相互联系,可以再组装成新的单元。软部件是由一到多个构件集成的模块级软件实体。一个部件程序通过选择不同参数实现不同的构件的功能,它拥有规范性、标准化接口,使能被建模程序直接调用。部件之间时相互独立的,除与共同的第三方外,不存在彼此间接口。为了提高运行效率、减少运行时因互相耦合造成的故障、减少因互相关联带来修改部件程序的难度,每个部件程序都有比较高的独立性,调用一个部件时,不需要其他部件的配合。软部件本身是高复用软件,但一个部件程序内部的代码复用程度可以不高。 数据库桌面系统是对数据库直接进行可视化操作的程序,可从部件库中选择部件程序对数据库进行可视化的、由用户灵活控制界面的、操作简单且安全规范的数据维护、数据查询、数据处理、数据通信、打印报表等操作,是对一般数据库管理系统软件可视化操作的补充。 软件生产线的设计目标是可以应用于多种数据库、可用于各种单机或局域网上管理信息系统的开发。还可以是原型法生成系统原型的工具。具有开发周期短、开发费用低、维保容易且费用低、开发技术难度小及门槛低等优点,可以充分满足一般中、小企业的需要,且可以随时根据应用的需要扩展与变化,更好适应企业需要。利用软件生产线通过建立用例图、数据结构部件图、组件图、系统结构部件图等系统模型、调用部件程序,用户只需根据提示输入参数,便可一键生成应用系统;也可以调出已经建立的系统模型,修改参数,再一键就可完成系统修改与扩展。普通应用人员也能设计出高质量、界面友好的应用系统。由于维保与扩展所需时间短,不仅大大降低成本,而且可以将维保过程对甲方工作的影响降到最低。 为宣传软件生产线技术,建议建立管理信息系统软件生产线开源软件园。为促进软件生产工业化的实现、促进软件技术发展、普及管理信息系统设计技术、促进计算机更广泛的应用,我们声明软件生产线 3.0 版为开源软件,将从即日起一个月左右时间通过连载博文的方式在科学网发布其全部源程序代码。读者可自由通过复制、粘贴的方式下载源码。为节省篇幅,每篇博文包括多个源程序源代码。每个源码包括二个版本, 版本 1 为加工后程序源代码。所谓“加工”包括二个内容: 1. 改用中文变量名。 2. 添加较详细注释,目的是方便读者了解软件内容,以便修改与仿制。 用户可以从用户的角度、根据自己的需要来使用、定制软件生产线,可以自由的使用、修改源代码。允许用户将修改后的源代码作为开源软件或者私有软件以营利或非营利的方式发布,我们不干预、不收取费用。也欢迎广大应用工作者通过留言提出意见,我们将根据相关意见修改程序或设计新的部件程序后再另行发布。希望通过更多人的参与,修改完善软件的缺陷,开发出更优秀的软件,形成更符合应用需要、更安全可靠的软件生产线,使软件能得到最大范围的使用,以极大地提高软件开发的生产力,尽可能地避免重复劳动。本系统是我们近 20 年研究工作的总结,其内容丰富、实用、深入、完整、全面,通过开源源代码,可让 JAVA 代码爱好者更好的学习参考。如果能比较全面的练习,可以全面了解管理信息系统的结构与设计方法,为学习管理信息系统的设计完美奠基。希望能看到更多软件生产线出现并被使用。 参与本系统研究与设计的有:邵雄凯、李振立、程传慧、曾玲、童亚拉、夏星、胡显波、程传庆、方林、龚晓明、王富强、陈永辉、陈义、王嘉、齐赛、聂志恒、王玉民、龚文义、林姗、杨晓艳、周金松、刘伟、赵岚、沈华、肖模艳、王莉、郑秋华、史函、刘玲玲、熊晓菁、祝苏薇、谌章恒、张军、赵普、高霞、钱涛、张俊、李珺、张慧萍、顾梦霞、贺红艳、罗红芳、陈小娟、饶昆、梅清等,在此一并表示感谢。长期以来,本项研究得到清华大学出版社、中国水利水电出版社的持续有力的支持与帮助,特别表示感谢。
个人分类: 生活点滴|2933 次阅读|0 个评论
介绍水利水电出版社新书:数据库原理与技术(第三版) 实验手册
求新 2018-1-18 12:46
数据库原理与技术(第三版) 实验手册 水利水电出版社2018元月出版 内容提要 本教材是为数据库课程理论教学配套使用的实验教材,配合课堂教学系统地组织上机操作,全面回顾理论教学内容,通过实践加深对基本知识的认识和理解,并学会应用,培养动手能力。本书从SQL Server可视化操作的实验入门,再设计系列验证性实验使更深入学习与掌握数据库基本原理、基本概念。设计了一套实验工具软件,辅助提高实验教学的效果。对数据库数据文件的解剖使能感性认识不同类型数据顺序存储与随机存储方式、数据类型及其意义、数据库相对文件管理的不同及优点。辅助生成SQL语句程序帮助读者加深对语句的理解,学习语句的设计方法。管理信息系统软件生产线及软部件库帮助读者了解数据库的用途、应用系统的构成,学习应用系统设计方法。数据挖掘原理实验程序帮助读者了解数据挖掘原理,用分步操作深入学习数据挖掘基本方法。所有自编软件基于JAVA开发,可在Windows系统、SQL Server2005到SQL Server2016环境中运行,无需任何程序设计语言基础都能掌握与使用。 本书可作为高等院校本、专科及在职职工学习数据库理论与技术的辅助教材,也可供研究生和从事计算机工作的科技工作者学习与参考,所附光盘软件可作为开发数据库应用系统的工具。 前言 数据库是设计与建立管理信息系统的主要支柱,管理信息系统是计算机应用最主要内容之一。学习数据库的目的,除了学习其思想、方法之外,还要掌握它在管理信息系统中应用的技术与方法。要学好数据库,除了学好数据库的基本理论、基本知识与基本方法外,还必须联系实际深入进行。数据库是一门实践性很强的课程,孤立地讲述数据库的概念、方法与技术会大大减少这门课程的价值,会使其理论变得枯燥乏味与难以理解,会出现理论与实践相脱离的弊病。只有通过实验与社会实践,才能真正掌握数据库的基本知识与技能。本书总结我们长期开发应用系统的实践经验,并将2001年起开始研究的软部件技术用于教学,内容详实、丰富,高度创新,紧密联系实际,能大大提高数据库课程教学质量,希望能帮助本书所有读者都能学会数据库、学会管理信息系统的开发与维护。 对于初次接触计算机的读者,关于数据存储、顺序与随机结构、数据模式、视图与索引、数据类型、数据冗余与数据一致性、数据共享等都是十分抽象的内容,通过解剖一个数据库的数据文件可以切身感受数据库数据独立、关系表结构、数据库特色、数据存储等概念,加深对数据库的理解。本书设计了类似于debug的以二进制方式读取数据库数据文件的程序,可以让读者进行数据库数据文件分析的实验。该程序还能解剖纯文本文件和Excel文件,通过比较同样数据在不同文件中存放的情况了解数据库和文本文件保存数据的相同和不同之处,深入认识数据库的优点。 初学数据库的读者比较容易接受的是数据库可视化操作,对于重点且是难点的SQL语句普遍感到困难。本实验手册设计了辅助生成SQL语句程序,包括辅助生成定义数据表结构的语句、修改数据结构的语句、查询数据的语句、录入数据或修改数据的语句,使读者能更好了解SQL语句的结构与设计方法,切实掌握SQL语言程序设计方法。 学习数据库的目的是应用数据库,实践并掌握数据库应用系统设计技能既能帮助读者更深入掌握数据库的基本知识,又能理论联系实际,学会应用系统设计方法,理解学习数据库的意义,了解应用系统需求与一些基本知识。可以由管理信息系统的需求反过来分析其对数据库技术的要求;联系管理信息系统的设计分析数据库应当具有的技术与方法;从管理信息系统的构成理解数据库的组成与结构;根据管理信息系统的发展考虑数据库理论与技术的变革方向;根据所设计应用系统在应用中的表现分析与检验其中所设计的数据库结构的正确性等。近十多年来,曾一度对我国数据库教学发挥极大影响的VFP数据库系统逐渐淡出教学;有些学校改用实用中用得特别多的SQL Server或Oracle数据库管理系统组织教学,但一般都不再介绍设计数据库应用系统的有关知识与技术。本书设计了独具特色的基于JAVA开发的软部件库、数据库桌面系统和软件生产线,使得无需掌握任何编程语言、无需具有任何编码基础就能进行操作数据库、开发应用系统的实验,使得数据库实践环节的教学能顺利进行。 管理信息系统软部件是应用系统中由类与对象组合而成的、集成了多项功能、可以表现多种性能的具有自适应与即插即用特性的通用程序模块,只需要输入必要的参数,就可以让一个部件程序选择并表现某具体功能与特殊的性能。软件生产线系统提供面向系统建模程序,运行该程序可以建立应用系统模型,只要在建模过程中根据提示输入必要的参数,就能在以分钟计的极短时间里搭建一个局域网上的功能比较齐全的管理系统。这个系统可拥有丰富易操作的界面、充分满足用户需要的功能与良好性能,可包括各种数据录入与维护的程序、满足各种需要的查询程序和数据处理程序、各种数据导入或导出程序、多种打印与图形输出程序。将之用于数据库教学,可以不要求学习任何开发语言、不懂程序代码的语法与句法,只要求安装JAVA系统软件jdk6.0和SQL Server数据库(SQL Server 2014及之前版本,也可用于Oracle、MySQL、Access、DB2、达梦等数据库),对应用系统需求进行分析,就可以让学生结合数据库设计的实际开发应用系统,通过实践更好理解与掌握数据库的理论与方法;深入且具体地让学生联系应用系统需求,认识数据冗余、共享、数据独立性、各类数据完整性及数据完整性保护、关键字、视图、数据安全、SQL语言及其应用、数据表结构及其对系统设计的影响、字典表与数据整合、代码表、派生数据及其处理等基本概念、基本理论与基本方法;掌握数据库系统设计方法,从而大大提高数据库的学习质量与动手能力。 软件生产线技术具有实用价值,随着其技术的发展,能大大提高应用系统设计效率、降低成本、提高设计质量、降低维护成本。一般企业管理工作者将能自己进行应用系统的开发与维护。请人开发需要几十万,系统维护费用高昂;自己开发只需要几十元,在分钟计的时间里自己就能扩展或修改应用系统,可以体验自己开发与维护应用系统的乐趣。在管理信息系统建设时,将有条件实现分工,参与原始代码设计的人员将减少,大部分开发人员的主要工作将集中到数据库设计、应用系统结构研究、系统扩展与维护等工作上来,促使数据库应用范围不断扩展。随书发行的光盘中包括全部实验工具程序:辅助生成SQL语句程序、管理信息系统软件生产线3.0版、数据挖掘实验程序等,为保证所有实验能顺利运行,附加了所有数据文件,其中数据库除附数据文件与日志文件外,还附备份文件,考虑到读者实验环境的不同,另外附加生成数据表与录入数据的SQL程序,如果因为版本原因无法恢复数据库,可以将程序拷贝到SQL Server查询窗口执行,生成实验所需要的数据表和数据。 本书由程传庆主编,技术支持:程学先。参加前期版本编写及软件设计的还有程传慧、曾玲、杨晓艳、童亚拉、方林、夏星、李振立、林姗、刘伟、胡显波、赵岚、肖模艳、龚晓明、王富强、陈义、郑秋华、陈永辉、史函、刘玲玲、熊晓菁、周金松、祝苏薇、王嘉、谌章恒、张军、赵普、高霞、钱涛、张俊、李珺、张慧萍、顾梦霞、贺红艳、罗红芳、陈小娟、齐赛、聂志恒、王玉民、龚文义等,在此一并表示感谢。 目录 实验1 SQL Server 2014可视化操作实验入门 …………………7 1.1 实验目的 ……………………………………………………7 1.2 预备知识 ……………………………………………………8 1.3 实验范例 ……………………………………………………8 1.3.1 可视化方式创建数据库 ……………………………9 1.3.2 可视化方式创建数据表 ……………………………12 1.3.3 可视化方式进行数据录入 ……………………………14 1.3.4 分离和附加数据库 ………………………………………14 1.3.5 备份和恢复数据库 ………………………………………16 1.4 实验练习 ……………………………………………………21 实验2 SQL Server文件组织分析 ……………………………22 2.1 实验目的 …………………………………………………22 2.2 预备知识 …………………………………………………22 2.3 实验范例 …………………………………………………25 2.4 实验练习 …………………………………………………28 实验3 SQL数据定义语句 ………………………………………29 3.1 实验目的 …………………………………………………29 3.2 预备知识 …………………………………………………29 3.3 实验范例 …………………………………………………30 3.3.1 SQL语句创建数据库 ………………………………………30 3.3.2 修改数据库定义 ………………………………………32 3.3.3 删除数据库 ………………………………………34 3.3.4 创建数据表CREATE TABLE语句 …………………35 3.3.5 修改数据表结构ALTER TABLE 语句 …………………37 3.4 实验练习 …………………………………………………37 实验4 定义数据完整性 ………………………………………38 4.1 实验目的 …………………………………………………38 4.2 预备知识 …………………………………………………39 4.3 实验范例 …………………………………………………42 4.3.1 T-SQL语言可视化定义数据完整性约束 …………………42 4.3.2 添加CHECK约束的语句 ……………………………46 4.3.3 T-SQL语言建表语句内定义数据完整性约束 ………48 4.4 实验练习 ……………………………………………………49 实验5 应用工具程序定义数据表 ……………………………50 5.1 实验目的 ……………………………………………………50 5.2 预备知识 ……………………………………………………51 5.3 实验范例 ……………………………………………………55 5.3.1 建立数据表——生成CREATE TABLE 语句 …………56 5.3.2 修改数据表结构——生成ALTER TABLE 语句 …………59 5.4 实验练习 ……………………………………………………63 实验6 数据维护 ……………………………………………………64 6.1 实验目的 ……………………………………………………64 6.2 预备知识 ……………………………………………………64 6.3 实验范例 ……………………………………………………65 6.3.1 向数据表录入数据的INSERT INTO 语句 ………65 6.3.2 修改数据表中数据的UPDATE语句 …………………68 6.3.3 删除数据表中数据 …………………………………………69 6.4 实验练习 ……………………………………………………69 实验7 对单一表查询实验 …………………………………………70 7.1 实验目的 ……………………………………………………70 7.2 预备知识 ……………………………………………………71 7.3 实验范例 ……………………………………………………72 7.3.1 实现投影运算的查询 ………………………………72 7.3.2 包含有选择运算的查询(条件查询) ……………………73 7.3.3 包含聚集函数的查询 ………………………………75 7.3.4 对查询结果排序输出 ………………………………76 7.4 实验练习 ……………………………………………………76 实验8 多表查询及查询工具的使用 ………………………………77 8.1 实验目的 ……………………………………………………77 8.2 预备知识 ……………………………………………………78 8.3 实验范例 ……………………………………………………80 8.3.1 多表连接查询 …………………………………………80 8.3.2 多表外部连接查询 …………………………………………81 8.3.3 嵌套查询 ……………………………………………………82 8.3.4 应用查询工具程序生成查询SQL语句的查询 ………85 8.4 实验练习 ……………………………………………………92 实验9 关系代数实验 …………………………………………94 9.1 实验目的 ……………………………………………………94 9.2 预备知识 ……………………………………………………95 9.3 实验范例 ……………………………………………………97 9.3.1 面向集合的关系运算 ……………………………98 9.3.2 专门的关系代数实验 ……………………………101 9.4 实验练习 ……………………………………………………105 实验10 视图、索引 …………………………………………106 10.1 实验目的 ……………………………………………………106 10.2 预备知识 ……………………………………………………107 10.3 实验范例 ……………………………………………………110 10.3.1 行列子集视图及其应用 ………………………………110 10.3.2 基于视图组织查询 …………………………………………114 10.3.3 建立规则及其应用 …………………………………………117 10.3.4 建立索引及应用 …………………………………………118 10.4 实验练习 ……………………………………………………119 实验11 T-SQL程序设计 …………………………………………121 11.1 实验目的 ……………………………………………………121 11.2 预备知识 ……………………………………………………121 11.3 实验范例 ……………………………………………………133 11.3.1 TSQL语言编程基础 …………………………………………134 11.3.2 存储过程 ……………………………………………………141 11.3.3 触发器 ……………………………………………………144 11.4 实验练习 ……………………………………………………147 实验12 数据库管理与数据控制语言 ………………………………148 12.1 实验目的 ……………………………………………………148 12.2 预备知识 ……………………………………………………149 12.3 实验范例 ……………………………………………………159 12.3.1 数据库安全性管理 …………………………………………159 12.3.2 数据导入导出 …………………………………………162 12.4 实验练习 ……………………………………………………164 实验13 使用数据库桌面操作系统程序操作数据库 ………165 13.1 实验目的 ……………………………………………………165 13.2 预备知识 ……………………………………………………165 13.2.1 数据库桌面操作系统组成与设计思想 …………………165 13.2.2 部件库部件的功能与使用方法。 ……………………170 13.3 实验范例 ……………………………………………………179 13.3.1 数据维护基本操作 …………………………………………179 13.3.2 存在文本类型数据的数据维护 ……………………180 13.3.3 可变换标签、可使用代码、可变换按钮名称的数据维护 182 13.3.4 存在图像类型数据的数据维护 ……………………184 13.3.5 存在数据安全性、数据完整性控制要求的数据维护 186 13.3.6 自定义布局的表单程序与表单设计器 ……………………189 13.3.7 实现参照完整性控制 ………………………………192 13.3.8 音像手册设计与自定义表单 ………………………………193 13.3.9 固定格式查询程序 …………………………………………195 13.3.10 通用查询程序 …………………………………………197 13.3.11 组合查询程序 …………………………………………198 13.3.12 涉及聚集函数的查询程序 ………………………………199 13.3.13 文本查询程序 …………………………………………201 13.3.14 纵向数据统计程序与ABC分类 ……………………202 13.3.15 横向数据统计程序 ………………………………204 13.3.16 关系运算 …………………………………………205 13.3.17 交叉表、表转置与生成统计图表 ……………………206 13.3.18 数据导出到纯文本文件 ………………………………209 13.3.19 数据导出到Office文件 ………………………………210 13.3.20 从纯文本文件导入数据 ………………………………211 13.3.21 从Office文件导入数据 ………………………………212 13.3.22 生成表格格式文件及打印与打印预览 ……………………213 13.3.23 生成表单式格式文件及打印与打印预览 …………216 13.3.24 生成标签格式文件及打印与打印预览 ……………………218 13.3.25 生成带统计图报表格式文件及打印与打印预览 …………220 13.4 实验练习 ……………………………………………………222 实验14 使用软件生产线建立应用系统 ……………………225 14.1 实验目的 ………………………………………………………225 14.2 预备知识 ……………………………………………………225 14.3 实验范例 ……………………………………………………231 14.3.1 仓库管理系统框架设计 ——应用用例图、数据结构部件图、系统结构部件图 创建一个包括18个数据表、46个模块的应用系统… …… 231 14.3.2 企业管理系统框架设计—— 应用用例图、数据结构部件图、系统结构部件图、组件图 创建一个包括90个数据表、219个模块的应用系统 …… 238 14.3.3 办公自动化系统框架设计 ——应用时序图设计一个带工作流控制的系统 …………260 14.4 实验练习 ……………………………………………………264 实验15 数据挖掘原理实验 …………………………………………274 15.1 实验目的 ……………………………………………………274 15.2 预备知识 ……………………………………………………274 15.3 实验范例 ……………………………………………………278 15.3.1 公式发现 ……………………………………………………278 15.3.2 Apriori关联分析 …………………………………………279 15.3.3 FP-Growth算法 …………………………………………280 15.3.4 ID3分类法与决策树 ………………………………282 15.3.5 聚类分析 ……………………………………………………284 15.3.6 SQL Server数据挖掘 ………………………………285 15.4 实验练习 ……………………………………………………293 光盘使用说明 1.软件组成与功能 本光盘为《数据库原理与技术》第三版和《数据库实验手册》配套软件,包括管理信息系统“软件生产线”3.0版、数据库桌面操作系统、工作流实验程序、数据库SQL语句实验程序、数据挖掘实验系统等内容。 1)管理信息系统“软件生产线”3.0版 软件生产线通过建立用例图、数据结构部件图、组件图、系统结构部件图等系统模型、调用部件程序,用户只需根据提示输入参数,便可一键生成应用系统;也可以调出已经建立的系统模型,修改参数,再一键就可完成系统修改与扩展。操作者无需任何语言基础都能设计出高质量、界面友好的应用系统。可用于数据库课程实验,帮助了解一般管理信息系统的构成、结构特点、功能与性能要求,设计方法。也可用于实际管理信息系统的开发,具有开发效率高,技术难度低,所开发项目界面丰富、易学习、易使用、易维护、成本低等特点。 2)数据库桌面操作系统 可选择功能、变换界面、十分容易地对数据库进行数据维护、查询、处理、通信、打印等操作,是对一般数据库管理系统可视化操作的功能的补充。也是了解本系统部件库的工具。 3)工作流实验系统 通过建立时序图模型可建立工作流控制的应用系统,例如办公自动化系统与ERP系统。可帮助了解管理信息系统中具有工作流控制要求的应用系统结构与功能、性能情况。 4)数据库SQL语句实验程序 可采用向导手段辅助生成建立数据表、修改数据表结构、关系代数、数据查询、数据维护等SQL语句,帮助了解SQL语句的结构与设计方法。 5)数据挖掘实验系统 可用于数据挖掘课程教学,通过单步操作与图形了解数据关联、FP树、ID3决策树、聚类分析、公式发现等数据挖掘的理论与算法。也可用于这些类型数据挖掘的操作。 2.环境要求 硬件环境: 局域网服务器(可选):4核处理器,内存8GB及以上,硬盘1TB及以上,缓存8M。 PC机:APU:i3及以上,2.4GHz及以上;内存:2GB 及以上;硬盘:1TB及以上;显示器:21英寸、1366*768及以上。 打印机:A4激光打印机或其他。 软件环境: 操作系统:Win7及以上 数据库;SQL Server2014(或SQL Server2008及以上) 开发语言:java(jdk6.0) 3.设计人员 本软件由程学先主设计。参加设计与研究的有:程传慧、曾玲、杨晓艳、童亚拉、方林、夏星、李振立、程传庆、林姗、刘伟、胡显波、赵岚、肖模艳、龚晓明、王富强、陈义、郑秋华、陈永辉、史函、刘玲玲、熊晓菁、周金松、祝苏薇、王嘉、谌章恒、张军、赵普、高霞、钱涛、张俊、李珺、张慧萍、顾梦霞、贺红艳、罗红芳、陈小娟、齐赛、聂志恒、王玉民、龚文义等。 本软件中选用了以上人员中部分人员所设计的程序,这些程序在运行时会显示作者名,未显示作者名的程序由程学先设计。 4.实验准备 1)实验环境准备 本系列实验基于SQL Server与JAVA语言进行。实验前要求正确安装数据库与JDK程序并按实验手册说明正确设置环境变量。有些实验要求建立ODBC数据源,要按照实验手册要求建立数据源。许多程序默认数据源名称为小写sql1,请按实验要求设定。在变换数据库时,注意改变ODBC数据源sql1的配置指向所需数据库。 2)程序准备 对应管理信息系统“软件生产线”3.0版、数据库桌面操作系统、工作流实验程序、数据库SQL语句实验程序、数据挖掘实验系统等每一类实验前,需将各包括P1子文件夹的各实验文件夹全部拷贝到硬盘中,之后可选择其中P1文件夹中.jar程序,双击执行。 3)数据准备 为方便学习与重现实验手册中实验结果,光盘中带目录:“实验数据文件备份”,其中各子文件夹中文件分别存储实验手册中实验一、……等实验中所需数据,实验十二及之前文件夹中包括数据库数据文件、数据库备份文件和一个WORD文件,里面存放同一个数据库的数据,可以任选一种恢复实验手册中实验所需数据环境。其中,数据库数据文件、数据库备份文件可在SQL Server2014数据库中恢复实验环境。在其他数据库中可将WORD文件中内容拷贝到数据库查询编辑器中执行以恢复所需实验环境。注意:在语句开始可能有建立数据库语句,如果存在同名数据库,需要删除建库语句,或在数据库系统中删除同名数据库,要注意其中数据会被全部删除。如果存在同名数据表,也会导致操作失败。实验十三及之后文件夹中除包括所需要数据库数据外,还包括接口参数文件与打印或建立界面所需数据格式文件,需要将它们拷贝到相应文件夹的P1文件夹中,再执行相关程序。如果欲设计新系统,可以先删除这些文件。 5.故障自检 1)恢复数据库失败 在恢复数据库过程中如果出现同名数据库或同名数据表冲突,需要先删除原有数据库或数据表后再操作。 2)建表操作失败1 本系统中使用的数据类型一般为:char、nchar、int、datetime、text、image、numeric、float,某些操作如果使用其他数据类型有可能导致失败,请参考实验手册相关内容操作。 注意在建立或修改实体模型时,退出数据输入界面时都要点击“保存”,否则数据不会录入甚至丢失。如果是表格式界面,注意在操作完成后常需要点击另外一行在做存盘操作,否则最后一个数据可能丢失。 3)建表操作失败2 运行“数据结构部件图.jar”程序时点击“建表”按钮最终未见“已经建立了…个数据表”的提示,就退出运行,表示建表操作未成功。 本程序运行时将检查每个欲建数据表是否在当前数据库中有同名表,如果有,将先删除同名表,如果数据表处于占用状态而导致删除失败,将退出建表。可先手工删除同名表。同时请注意,如果有同名表,原有数据将删除,请做好备份以防丢失数据。 4)“生成菜单”失败 运行“系统结构部件图.jar”或“组件图.jar”程序时点击“生成菜单”按钮最终未见“生成菜单程序成功”的提示,请检查是否已经完成所有相关数据表的建表操作、图中所有部件图中涉及的数据表是否已经建立到ODBC数据源所指数据库中,所涉及的数据表字段构成是否和所建表结构一致。 5)建立系统失败 运行“系统结构部件图.jar”或“组件图.jar”程序时点击“建立系统”或“建立系统1”按钮未见文件压缩信息。如果显示不见文件的提示,请检查P1文件夹下是否存在“create.cmd”且不可写,如果存在,请强行删除或开机重启。请检查P1文件夹下bin子文件夹中是否存在“menu.java”,如果不存在,说明生成菜单失败。检查“menu.class”是否存在,如果不存在请检查所有部件图设计是否正确。检查是否存在:“MANIFEST.MF”和“MANIFEST1.MF”,前者影响建立系统的操作,后者影响建立系统1的操作。如果不存在或文件被破坏,请从光盘中重新拷贝这二个程序。 6)执行.jar程序失败 请检查是否正确安装了数据库与JAVA、环境变量设置是否正确、是否建立了数据库、是否定义了ODBC数据源、ODBC数据源是否指向所建立的数据库。 7)执行“数据库桌面系统”出错 请注意操作次序:选择部件程序、根据需要输入参数、点击“执行”按钮、退出执行程序。一般“数据表名”是必需输入的参数。如果进行数据维护操作,“关键字”是必须输入的参数。如果执行导入、导出和其他少数程序,要求下载: iText-5.0.5.jar、jacob.jar、jcommon-1.0.16.jar、jfreechart-1.0.13.jar、PDFBox-0.7.3.jar、poi-3.8-20120326.jar、FontBox-0.1.0-dev.jar、PDFont.java、poi-scratchpad-3.9-20121203.jar,并同时拷贝到“软件生产线”、“数据库桌面系统”、“工作流实验程序”等目录中的P1文件夹的COM子文件夹中。 每执行完一个部件程序,应当及时“退出”,有时还要求退出到操作系统。如果将多个部件程序置于运行状态,可能导致冲突。如果连续执行多个部件程序,可能出现表名、字段名冲突错,请退出程序重新执行。 如果数据库中数据出现错误,例如多个全NULL的记录或其他不明符号,有可能导致错误。 8)执行登录程序失败 如果在初始设置时定义为“有”登录程序,在运行应用系统程序时将首先进行登录操作。如果执行登录程序时出现故障。请检查数据是否正确安装,是否建立了数据库、是否定义了ODBC数据源、ODBC数据源是否指向所建立的数据库、数据库中是否存在“用户表”、用户表中是否存在记录。 9)所建系统非预期 有时所建立的系统非预期。请执行“0系统初始化.jar”程序,检查数据库名称、ODBC数据源名称、标题、是否有登录程序等内容,检查其设置是否符合操作要求。 10)执行系统建模有关程序出现图形错误 在执行“用例图.jar”、“数据结构部件图.jar”、“系统部件结构图.jar”、“组件图.jar”等程序时出现非设计图形,请检查在P1文件夹中是否存在“用例图.txt”、“数据结构部件图.txt”、“系统部件结构图.txt”、“组件图.txt”等文件,其中内容是否正确。如果手工修改这些文件有可能格式出现错误,如果不能改正,请删除后重新建立有关文件。执行“工作流时序图.jar”程序默认的数据文件为P1文件夹中的“工作流时序图.txt”。 11) 导入导出操作失败,程序无法运行 本系统少数程序要求下载:FontBox-0.1.0-dev.jar、iText-5.0.5.jar、jacob.jar、jcommon-1.0.16.jar、jfreechart-1.0.13.jar、poi-3.8-20120326.jar、PDFBox-0.7.3.jar、poi-scratchpad-3.9-20121203.jar等文件并拷贝到P1下COM文件夹中。如果缺少其中某些文件,当涉及Office文件(doc、xls、pdf)的导入导出操作时将提示下载并安装,否则操作不成功。 在涉及文件的导入导出时,注意程序中将数据表的导入导出和纯文本文件的导入导出集成在一起,操作时要注意区分“源”与“目的”,源指提供数据的表或文件,目的指导入导出目的地(表或文件),如果涉及数据表导入导出,要求定义的参数主要是源表名与目的表名;如果是从文件导入,要求定义文件名与目的表名;如果是导出到文件,要求定义文件名与源表名。 注意区分添加式与修改式,前者是无条件将源中全部数据加入到数据目的地,有可能出现关键字重复的错误,当目的数据与源数据存在关键字相同记录时请选择修改方式的导入导出。 12)多表操作出现连接错误 有关查询、数据处理、导入导出、报表等程序可能涉及多表操作,在运行时如果未指明外键或相联系字段名,将查找同名字段再组织连接,注意有部分程序在查询同名字段时区分大小写,如果存在同名字段,但在不同表中大小写不同,将导致连接失败。 在运行“数据库桌面系统”或其他定义参数时注意操作次序是先选择部件程序;再选择数据表,如果涉及多表,要求一次性输入所有数据表名称,之后再选择关键字或其他字段,如果选择字段后又补充选择数据表,有可能字段名表示出错。
个人分类: 生活点滴|3118 次阅读|0 个评论
介绍水利水电出版社新书:数据库原理与技术(第三版)
求新 2017-11-20 18:38
数据库原理与技术(第三版) 水利水电出版社2017年8月出版 内 容 提 要 本书较系统、全面地叙述了数据库系统的基本概念、基本原理和基本方法。内容包括数据库概念,数据模型,存储结构,关系数据理论和关系数据库的基本概念,SQL语言,数据库应用系统设计,SQL Server2014数据库的基础知识与基本开发方法。还介绍了C/S与B/S模式、数据库保护、数据仓库、数据挖掘、分布式数据库等知识。本教材强调理论联系实际,在附录中介绍管理信息系统软部件库和软件生产线,无需掌握编程语言,只需建模并在建模过程中设定参数就能完成一般管理信息系统的设计与建设。 本书可作为高等院校本、专科及在职职工学习数据库理论与技术的教材,也可供研究生和从事计算机工作的科技工作者参考。 第三版序言 数据库是设计与建立管理信息系统的主要支柱,管理信息系统是计算机应用最主要内容之一。学习数据库的重点是学习数据库的基本理论、基本知识与基本方法。需要强调的是要理论联系实际、要联系管理信息系统的设计与建设实际进行:由管理信息系统的需求理解数据库系统的设计理念;由管理信息系统的设计过程理解数据库的基本组成;由管理信息系统的应用理解数据库的技术与方法;根据管理信息系统的发展研究数据库理论与技术的创新方向。孤立地学习和讲述这门课程会减少学习数据库的所得,将使其内容变得枯燥无味与难以理解,更无法将之应用于生产实际。 。 本书第一、二版问世以来,得到了广大读者的肯定,不少读者还提出了许多有益的建议,为新版的编写打下良好基础,我们深表感谢。第一版教材基于 VFP 组织教学,使用了整整一章介绍 VFP 的界面及句法语法知识。其目的是希望借 VFP 的简单、易学但又是一种基本具备关系数据库特征的数据库系统帮助组织教学,将数据库的学习和实际应用系统设计的理论与技术比较紧密地结合起来,加深读者对数据库概念与方法的理解,了解数据库的应用,使学有目的、学有所用。随书开发了一套基于 VFP 的软部件库,方便学习与应用 VFP 数据库。 VFP 在我国数据库历史中具有重要地位,相对其他大型数据库具有学习门槛低、成本低、环境要求低、有深厚的技术沉淀等特点,在相当一段时间内,它及其前身是我国相当多应用工作者学习与使用的数据库,为数据库技术的启蒙、传播、推广、应用发挥了极大作用。一直到现在,许多当年的工作人员还能使用甚至利用 VFP 设计简单的应用系统,证明了当时教学内容与教学方法的成功。但是, VFP 毕竟只是基于单机而设计的,安全性、数据共享能力差,其语言简单且不严密,与目前普遍使用的大、中型数据库存在许多不同,使缺少发展后劲。本书第二版删除了涉及 VFP 语法、句法等有关章节的内容,改为介绍 SQL Server2005 与 Oracle 二种数据库管理系统,突出在网络环境中数据库的应用研究,加强涉及数据库与数据表的设计与管理、 SQL 语句及内嵌语言的应用、数据完整性与安全性保护、备份与恢复等方面的内容。这些内容既扩展了数据库基本理论与技术的教学内容,也使数据库理论教学与社会实践活动更紧密地结合。但不足的是,关于实验教学工具的改进较小,教的是 SQL Server ,却以 VFP 为实践工具,存在理论与实际脱节的弊病。 这以后,研制设计了应用 JAVA 语言开发的 SQL 语言学习工具程序,提供各种可视化界面,帮助读者分步写出 SQL 语句,使更好理解 SQL 语句的结构与设计方法,强化这一部分的教学效果。 还设计了应用 JAVA 语言开发的基于 SQLServer 数据库的软件生产线。软件生产线由面向系统建模程序和管理信息系统软部件库构成。面向系统建模( System-oriented Modeling, SOM )是在面向对象建模语言:统一建模语言 UML(Unified ModelingLanguage) 基础上设计的新一代建模语言。 UML 建模语言是十分成熟的建模语言,已成为标准和规范,它简单易学、信息量丰富、表现力强,是一般软件开发的基础,被普遍使用。但是,它毕竟以类为基本元素,基于其模型无法实现软件设计自动化。 面向系统建模以软部件为基本元素,尽量保留 UML 的风格,沿用其图形元素,用部件图代替类图,可以直接基于模型建立应用系统。面向系统建模图形由用例图、数据结构图(或称元数据图)、系统结构图(或称数据操作图)、系统组件图、工作流程图(时序图)组成。用例图描述哪些操作对象做哪些事;数据结构图描述数据构成及数据属性和数据约束;系统结构图表现涉及哪些数据、哪些操作、界面风格、数据联系及处理,以部件图为主要图形元素;系统组件图描述子系统构成;工作流程图描述随时间变化的处理过程,包括人员、操作、时间、权限等要素。 管理信息系统软部件是应用系统中由类与对象组合而成的、集成了多项功能、可以表现多种性能的具有自适应与即插即用特性的通用程序模块,只需要输入必要的参数,就可以让一个部件程序选择并表现某具体功能与特殊的性能。软件生产线系统提供建模工具程序,运行该程序可建立应用系统模型,在建模过程中根据提示输入必要的参数,就能在以分钟计的极短时间里搭建一个局域网上的功能比较齐全的管理系统。这个系统将可拥有丰富易操作的界面、充分满足用户需求的功能与良好性能,可包括各种数据录入与维护的程序、满足各种需要的查询程序和数据处理程序、各种数据导入或导出程序、多种打印与图形输出程序。将之用于数据库教学,可以不要求学习任何开发语言、不懂程序代码的语法与句法,只要求安装 JAVA 系统软件( jdk6.0 )和 SQL Server 数据库( SQL Server2014 及之前版本,也可用于 Oracle 、 MySQL 、 Access 、 DB2 、 达梦 等数据库),进行应用系统需求分析,就可以让学生结合数据库设计实际开发应用系统,通过实践更好理解与掌握数据库的理论与方法;深入且具体地让学生联系应用系统需求认识数据冗余、共享、数据独立性、各类数据完整性及数据完整性保护、关键字、视图、数据安全、 SQL 语言及其应用、数据表结构及其对系统设计的影响、字典表与数据整合、代码表与派生数据及其处理等基本概念和基本理论与基本方法;掌握数据库系统设计方法,从而大大提高数据库的学习质量与动手能力。 软件生产线技术具有实用价值,随着其技术的发展,能大大提高应用系统设计效率、降低成本、提高设计质量、降低维护成本,一般企业管理工作者将能自己进行应用系统的维护。在管理信息系统建设时,参与原始代码设计的人员将减少,大部分开发人员的主要工作将集中到数据库设计、应用系统结构研究、系统扩展与维护等工作上来,促使数据库应用范围不断扩展。我们目前的研究还处于早期阶段,缺点与错误在所难免,希望广大读者多提宝贵意见。 本书配套 PPT 教案可在出版社网站上下载,与本书配套的实验工具程序包括 SQL 语句辅助生成系统、管理信息系统软件生产线、数据库桌面系统、工作流实验系统、数据挖掘实验系统等全部软件随与本书配套出版的实验手册发布。 本书由程传慧主编,曾玲和杨晓艳副主编,技术支持:程学先。前期版本参加编写的还有郑秋华、陈永辉、程传庆等。林姗、刘伟 、胡显波 、赵岚、江南、肖模艳、龚晓明、王富强、 陈义、史函、刘玲玲、熊晓菁、童亚拉、周金松、祝苏薇、王嘉、黎柳柳、苏艳、蒋慧婷、陈莉、谌章恒、张军、赵普、高霞、钱涛、张俊、李珺、张慧萍、顾梦霞、贺红艳、罗红芳、陈小娟、齐 赛、聂志恒、 王玉民、龚文义等参加了本书编审与 软件设计工作,特此表示感谢。 目 录 第 1 章 数据库基础知识 ... 10 本章学习目标 ... 10 1.1 数据处理 ... 11 1.1.1 利用文件系统进行数据处理 ... 11 1.1.2 从实例看数据库的数据处理技术 ... 14 1.2 数据库技术概述 ... 18 1.3 数据库的数据结构及存储结构 ... 23 1.3.1 链表式数据结构 ... 24 1.3.2 关系数据库结构概述 ... 24 1.4 索引文件组织 ... 28 1.4.1 索引文件 ... 28 1.4.2 非关键字索引文件 ... 29 1.4.3 B+ 树索引结构 ... 31 本章小结 ... 32 习题一 ... 32 第 2 章 数据库设计中的数据模型 ... 33 本章学习目标 ... 33 2.1 数据模型 ... 34 2.1.1 数据模型概念 ... 34 2.1.2 数据之间的联系 ... 35 2.1.3 实体 - 联系模型 ... 36 2.2 关系数据模型 ... 39 2.2.1 关系数据模型的概念 ... 39 2.2.2 关系数据模型的设计 ... 41 2.3 面向对象数据模型 ... 42 2.3.1 UML 定义的类图 ... 43 2.3.2 利用 Rose 建模操作 ... 47 2.3.2 从建模到建库与建表的自动化操作 ... 49 本章小结 ... 50 习题二 ... 51 第 3 章 关系数据库 ... 51 本章学习目标 ... 51 3.1 基本概念 ... 52 3.2 函数依赖 ... 53 3.2.1 函数依赖概念 ... 53 3.2.2 部分函数依赖 ... 54 3.2.3 完全函数依赖 ... 54 3.2.4 传递函数依赖 ... 54 3.3 候选关键字与主属性 ... 55 3.3.1 候选关键字 ... 55 3.3.2 主属性 ... 56 3.4 关系规范化 ... 56 3.4.1 问题的提出 ... 56 3.4.2 范式 ... 58 3.4.3 关系分解的正确性 ... 63 本章小结 ... 64 习题三 ... 64 第 4 章 SQLSERVER 基础 ... 65 本章学习目标 ... 65 4.1 SQL SERVER 管理工具 ... 66 4.2 可视化建立数据库、表、索引的操作 ... 71 4.2.1 建立数据库 ... 71 4.2.2 建立数据表 ... 72 4.2.3 修改表结构 ... 75 4.2.4 建立索引 ... 76 4.2.5 数据维护操作 ... 78 4.3 建立视图的操作 ... 79 4.3.1 建立视图 ... 79 4.3.2 使用视图 ... 80 4.4 数据完整性保护 ... 81 4.4.1. 实体完整性保护的实现 ... 81 4.4.2 参照完整性保护的实现 ... 82 4.5 数据库安全性管理 ... 85 4.5.1 主体与安全对象 ... 85 4.5.2 身份验证模式 ... 86 4.5.4 创建架构 ... 89 4.5.5 针对具体数据库创建用户名 ... 89 4.5.6 服务器角色 ... 90 4.5.7 数据库角色 ... 93 4.5.8 权限管理 ... 95 本章小结 ... 95 习题四 ... 96 第 5 章 关系代数与 SQL 语言 ... 97 本章学习目标 ... 97 5.1 关系代数 ... 98 5.1.1 传统的集合运算 ... 98 5.1.2 专门的关系运算 ... 101 5.2 关系演算 ... 105 5.3 SQL 语言概貌 ... 106 5.4 SQL 数据定义功能 ... 107 5.4.1 基本表的定义和修改 ... 107 5.4.2 索引的建立和删除 ... 108 5.5 SQL 数据查询语句 ... 108 5.5.1 标准 SQL 数据查询语句格式 ... 108 5.5.2 对单一表查询语句 ... 110 5.5.3 对两个以上表的连接查询 ... 111 5.5.4 嵌套查询 ... 112 5.5.5 关系除法 ... 113 5.6 视图 ... 114 5.6.1 建立视图的语句 ... 114 5.6.2 删除视图语句 ... 115 5.7 SQL Server 中 SQL 语句的加强 ... 116 5.7.1 T-SQL 语言 对 SQL 定义语句的加强 ... 116 5.7.2 涉及数据完整性的数据表结构修改语句 ... 120 5.7.3 T-SQL 语言 对 SQL 查询语句的加强 ... 123 5.8 SQL 数据更新语句 ... 126 5.8.1 修改( UPDATE )语句 ... 126 5.8.2 删除( DELETE )语句 ... 126 5.8.3 插入( INSERT )语句 ... 127 5.9 嵌入式 SQL . 128 5.10 查询优化 ... 129 本章小结 ... 131 习题五 ... 132 第 6 章 T-SQL 语言程序设计 ... 134 本章学习目标 ... 134 6.1 Transact-SQL 程序设计的语言元素 ... 135 6.1.1 变量 ... 135 6.1.2 运算符 ... 136 6.1.3 表达式及常用命令 ... 137 6.1.4 函数 ... 137 6.1.5 流程控制语句 ... 141 6.1.6 注释 ... 146 6.2 SQL Server 中的存储过程 ... 146 6.2.1 存储过程的概念 ... 146 6.2.2 存储过程的优点 ... 146 6.2.3 使用对象资源管理创建存储过程 ... 147 6.2.4 使用 T-SQL 命令创建存储过程 ... 148 6.2.5 重新命名存储过程 ... 150 6.2.6 删除存储过程 ... 150 6.2.7 执行存储过程 ... 151 6.2.8 系统存储过程 ... 151 6.3 SQL Server 中的触发器 ... 152 6.3.1 触发器的概念及作用 ... 152 6.3.2 触发器的种类 ... 153 6.3.3 创建触发器 ... 153 6.3.4 触发器的原理 ... 157 6.3.5 INSTEAD OF 触发器 ... 157 6.3.6 触发器的应用 ... 158 本章小结 ... 160 习题六 ... 161 第 7 章 数据库管理与数据安全 ... 161 本章学习目标 ... 161 7.1 数据库的安全性实施方法 ... 162 7.1.1 SQL Server 建立登录名、架构与用户 ... 162 7.1.2 SQL 语言访问权限控制 ... 164 7.2 事务处理 ... 167 7.2.1 事务的基本概念 ... 167 7.2.2 事务处理过程分析 ... 167 7.2.3 SQL 的事务管理 ... 168 7.3 并发控制 ... 169 7.3.1 并发处理产生的三种不一致性 ... 169 7.3.2 封锁 ... 172 7.4 数据库的备份与恢复 ... 174 7.4.1 故障的类型 ... 174 7.4.2 事务日志 ... 175 7.4.3 恢复 ... 175 7.4.4 数据的转储 ... 176 7.5 SQL Server 中的数据导入和导出 ... 176 7.5.1 使用 Transact-SQL 进行数据导入、导出 ... 177 7.5.2 使用 SQLServer2014 数据导入、导出向导 ... 178 7.5.3 利用对象资源管理器导入、导出 ... 182 7.6 SQL Server 应用系统开发环境 ... 183 7.6.1 SQL Server 应用系统二种系统结构 ... 183 7.6.2 ODBC (Open Database Connectivity ): ... 183 7.6.3 JDBC . 185 本章小结 ... 186 习题七 ... 187 第 8 章 数据库应用系统设计 ... 188 本章学习目标 ... 188 8.1 概述 ... 189 8.2 数据库结构设计 ... 189 8.2.1 数据库结构设计步骤 ... 189 8.2.2 需求分析 ... 189 8.2.3 概念结构设计 ... 195 8.2.4 逻辑结构设计 ... 198 8.2.5 数据库物理设计 ... 199 8.3 应用程序结构设计 ... 201 本章小结 ... 204 习题八 ... 205 第 9 章 数据库新技术介绍 ... 206 本章学习目标 ... 206 9.1 数据挖掘 ... 206 9.1.1 数据挖掘技术概述 ... 206 9.1.2 公式发现 ... 208 9.1.3 关联规则 ... 212 9.1.4 分类与决策树 ... 218 9.1.5 聚类 ... 223 9.2 数据仓库 ... 226 9.2.1 数据仓库( DataWarehouse )的概念 ... 226 9.2.2 联机事务处理( OLTP ) ... 228 9.2.3 联机分析( OLAP )技术概述 ... 229 9.2.4 数据仓库的架构 ... 231 9.2.5 数据收集 ... 232 9.2.6 SQL Server 中的数据仓库组件 ... 234 9.3 分布式数据库 ... 235 9.3.1 分布式数据库系统概述 ... 236 9.3.2 分布式数据存储 ... 236 9.3.3 分布式数据的查询处理 ... 237 9.3.4 分布式数据库系统中的事务处理 ... 238 9.3.5 数据对象的命名方式与目录表的管理 ... 242 9.3.6 更新传播 ... 243 本章小结 ... 244 习题九 ... 244 第 10 章 附录 管理信息系统软部件库与软件生产线 ... 245 本章学习目标 ... 245 10.1 管理信息系统软件生产线 ... 246 10.2 管理系统软部件库及数据库桌面系统 ... 250 10.2.1 数据库桌面系统概述 ... 250 10.2.2 表格式数据维护部件 程序功能、性能与操作说明 ... 252 10.2.3 单记录式数据维护部件 程序功能、性能与操作说明 ... 255 10.2.4 查询类部件 程序功能、性能与操作说明 ... 261 10.2.5 数据处理类部件 程序功能、性能与操作说明 ... 264 10.2.6 数据导入导出部件 程序功能、性能与操作说明 ... 266 10.2.7 打印报表部件 程序功能、性能与操作说明 ... 267 10.3 用例图 ... 269 10.3.1 功能 ... 269 10.3.2 主要图形元素与按钮: ... 270 10.4 数据结构图 ... 272 10.4.1 功能 ... 272 10.4.2 主要图形元素或按钮 ... 273 10.4.3 主要操作 ... 274 10.5 系统组件图 ... 275 10.5.1 功能: ... 275 10.5.2 主要图形元素或按钮 ... 275 10.5.3 主要操作 ... 276 10.6 系统结构图 ... 277 10.6.1 功能: ... 277 10.6.2 主要图形元素或按钮 ... 278 10.6.3 主要操作 ... 278 10.7 生成应用系统 ... 280 10.8 工作流程图 ... 280 10.8.1 功能 ... 280 10.8.2 主要图形元素: ... 281 10.8.3 主要操作 ... 282 本章小结 ... 284
个人分类: 生活点滴|2865 次阅读|0 个评论
改革数据库教学,普及数据库知识,独家技术-软件生产线3.0即将发布
求新 2017-9-29 10:58
数据库是信息技术的核心,但是数据库类课程教学近二十年一贯制一直是从理论到理论地进行,忽视实践与应用环节的教学,使得数据库难学、难用,学生普遍不具备数据库应用系统设计能力,这与飞跃发展的信息技术极不适应。为改变这一局面,有必要改革数据库教学内容,加强实践环节教学,加强应用系统设计技术的教学,希望能通过教学让各种层次学生都能学会数据库、应用数据库。为此,我们研制了独门技术——软件生产线3.0版及一套教学软件,将制成光盘,由水利水电出版社随《数据库原理与技术(第3版)》及配套的实验手册一起发行。 该光盘除常规验证性实验外还包括如下内容: 1.数据库辅助教学工具软件。 SQL语言是数据库专用语言,也是开发数据库应用系统关键内容,是数据库课程教学的重点,也是难点所在。数据库辅助教学工具软件包括数据库数据文件分析程序、数据表结构SQL定义语句生成程序、数据表结构SQL维护语句生成程序、数据表SQL数据查询语句生成程序、数据表SQL数据维护语句生成程序等。数据文件分析程序通过解剖实际的数据库数据文件,从感性入手地认识二维表、行、列、记录、字段、数据类型、二进制数据、ASCII码、Unicode码、顺序文件结构与随机文件结构等概念,切实地了解SQL Server数据文件是如何存放各种类型数据的,了解数据库数据文件与文本文件存放数据的相同和不相同点,分析了解数据库优点所在。各SQL语句生成程序是对数据库自带可视化操作程序的补充,界面友好、功能更丰富、操作方便,引导读者一步步操作完成SQL语句设计,可帮助读者深入了解SQL语句的意义、结构与设计方法。 2.数据挖掘典型实验程序。 数据挖掘是数据库应用中最新技术,是大数据时代极具应用价值的技术。但在许多人眼中感到神秘、难懂,为此,我们设计了公式发现、关联分析与FP树绘制、ID3决策树绘制、聚类分析等实验程序。公式发现对一组连续性数据尝试采用一元线性函数、多项式函数、多元一次函数、正弦函数、指数函数进行拟合,找出拟合误差最小的函数。除多元函数外,绘制拟合图形,提供预测分析的方便。关联分析、FP树绘制、ID3决策树绘制、聚类分析等采用单步方式表现求解过程、显示计算公式与数据,绘制相关图形,帮助读者学习常见数据挖掘算法的操作步骤与分析方法。 3.软件生产线3.0版 开发数据库应用系统必须联用一门高级语言。要学习设计应用系统的技术,必须掌握一门高级语言,并具备编写代码的能力。这对于大多数学生、特别是刚进校门的一、二年级学生而言是十分困难的。在十多年前,由于VFP数据库自带程序设计语言,且语法简单,较容易学习,成为不少学校教学数据库的首选,使得在数据库课程中教学应用系统设计技术成为可能。但随着VFP退出应用,相当多的学校数据库课程教学中都不再涉及应用系统设计技术。 我们设计了软部件库与新的建模语言,使得无需编写代码,只需要配置参数,就能建立应用系统。只要能尝试性地了解实际管理工作,无需掌握高级语言,无需编写代码的能力,哪怕是中学文化水平,都能学习应用系统设计技术,开发与维护实际数据库应用系统。 社会上开发应用系统多从绘制UML模型图开始,UML图形简单易学、信息量大、表现力丰富,是国际通用的成熟的建模软件,在过往应用系统设计与建立过程中发挥了巨大作用。但是,UML建模语言属于面向对象语言,无法通过建模直接生成应用系统,无法实现软件生产自动化。我们参考UML语言首家提出并设计了面向系统建模语言,用部件图代替类图,只需要绘制用例图、数据结构图、组件图、系统结构图、时序图,调用部件程序,一键就能建立应用系统中全部数据表,生成执行程序,建成应用系统。如果需要调试或修改,也只需要重新调出各个模型图,修改图形后再一键完成系统维护。从2000年起我们研究软件生产自动化技术,分别设计了基于VFP和基于JAVA的二套软部件,能满足一般用VFP或JAVA语言开发的应用系统设计与建设的需要。设计人员无需学习高级语言、无需掌握代码设计技术,就能用以设计并生成一般管理信息系统,对于帮助读者学习数据库、学习应用系统设计技术具有较大价值。只有通过应用系统的设计才能真正了解数据库的功能与性能、才能真正掌握数据库技术、才能验证所设计的数据库的正确性与可靠性,才能培养较强的动手能力。 4. 数据库桌面操作系统 学过数据库的都有一个感觉,学习数据库最容易学与掌握的是各种数据库自带的向导程序,这些程序采用可视化方式引导用户一步步操作,最终完成对数据库的一项操作。但是,各数据库管理系统自带的向导程序数量较少、界面单一,有些操作也不好学,只依靠这些程序还有许多应用无法实现。本系统设计一套数据库桌面操作系统,力图补充数据库的向导功能,提供友好界面,调用部件库部件程序,帮助读者直接对数据库操作。其工作例如:各种表格式或表单式数据维护基本操作;存在文本类型数据的数据维护操作;可变换字段标签、可使用代码、可变换按钮名称的数据维护;存在图像类型数据的数据维护;存在数据安全性、数据完整性控制要求的数据维护;采用数字化与可视化二种方式自定义布局与其他接口参数的表单程序与表单设计器;实现参照完整性控制的数据维护;音像手册设计与自由表单;固定格式查询程序;通用查询程序;组合查询程序;涉及聚集函数的查询程序;文本查询程序;纵向数据统计程序与ABC分类;横向数据统计程序;关系运算;交叉表、表转置与生成统计图表;数据导出到纯文本文件;数据导出到Office文件;从纯文本文件导入数据;从Office文件导入数据;生成表格格式文件及打印与打印预览;生成表单式格式文件及打印与打印预览;生成标签格式文件及打印与打印预览;生成带统计图报表格式文件及打印与打印预览等。 该套软件突出实践环节教学,突出应用系统设计与建设的教学,可以降低学习门槛,降低学习难度,丰富教学内容,改革当前数据库课程教学方法,希望能有效提高数据库课程教学质量。 程学先为本项目设计负责人,参加设计的有龚晓明、王富强、齐赛、程传庆、曾玲、杨晓艳、程传慧、童亚拉、方林、夏星、李振立、林姗、刘伟、胡显波、赵岚、肖模艳、周金松、陈永辉、李珺、王嘉、熊晓菁、聂志恒、顾梦霞、贺红艳、陈小娟、罗红芳、王玉民、龚文义、陈义、饶昆、高亮、李莎、史函、刘玲玲、熊晓菁、祝苏薇、谌章恒、张军、赵普、高霞、郑秋华、钱涛、张俊等,谢谢读者们的支持。
个人分类: 生活点滴|2534 次阅读|0 个评论
看一篇被计算机科学杂志正刊拒的文章的专家评语,评“专家”
热度 1 求新 2017-3-20 11:38
我们于 2015年向当年软件工程学会年会投稿,NASAC2015组委会组织评审的二位专家的评语1:“通过自上而下设计软件资源库,可使得管理信息系统的开发过程中,具有设计快捷、高速、高效、质量优良、维保成本低廉等优点。”和评语2:“本文从采用自上而下的方法设计软件资源库,并提出一种设计管理信息系统软件生产线的方法,内容涵盖软件生产线的方方面面,内容详实”。组委会通知说:已被录用为短文并推荐至期刊《计算机科学》发表。不过,我们同时向会议原组委会型竞赛投稿,由于组委会工作方面失误未向专家提交审核,经我方要求组织了审核被拒。已在我们的博文:《难道只是失误吗?-给14届全国软件与应用学术会议代表们的公开信》(见 http://blog.sciencenet.cn/blog-2551-933380.html )中详细说明。这一事件之后,组委会 毁约 未再向计算机科学杂志推荐我们的文章。去年,我们对文章修改后,增添了一些新研究内容。考虑到计算机科学杂志社与软件工程学会联系密切,向计算机科学杂志投稿,但被其正刊所拒,其依据是他们所聘请的三位 “专家”的评语。我们向编辑部陈述了对这些评语的意见,但未收到对我们的意见的回复。 一般 “专家”要枪毙一篇文章或一个项目,杀手锏 之一 是宣布该文章或项目不具创新性。本来,这很容易论证,目前百度还有各种网站都提供搜索功能,网上一搜,如果没有创新性,一定可以找到数以万计的同类作品。但是, “专家”们不必担心,他们写评语时不需要用事实做后盾,只要根据掐头去尾的一个内容进行论定就可以了,没人找他们的麻烦,即使有投诉,装聋 装瞎 就是了。看: 第一位专家说: “软部件实现和复用技术不是新鲜的话题,工业上已经有完整的体系,已经有很多成形的软件系统。”。另一位“专家”说:“论文中提到的“通用软部件”,“UML建模”概念已经是比较成熟的技术”。 关于 “ 软部件实现和复用技术不是新鲜的话题 ” 是大实话,至于 “工业上已经有完整的体系,已经有很多成形的软件系统。”还有““通用软部件” 已经是比较成熟的技术”就经不起推敲了。本文附件列出在中国学术期刊网络出版总库全部字段中搜索“软部件”一词的结果,找到相关的中文期刊 91 篇,用时 0.007 秒。其中有些附了摘要,有些没附,这些没附的是我和我的研究生的作品,可以认为是一家之言。可以发现,在学术期刊中,涉及“软部件”一词的就不多,涉及“通用软部件”的就更少,至于“工业上已经有完整的体系,已经有很多成形的软件系统。”和“是比较成熟的技术”,就是在信口开河了。 文章要表达的一个 思想 是 认为 目前关于构件、组件、部件等概念界限不清,有必要加以区分, 以 有利于大家的研究和讨论 、 有利于 “软部件”技术的发展。 有一些 文章、研究生论文 、 一些著作中都 使 用了 “部件”这个词,但是 多数 文章 中关于 该词的 定 义和 “构件”没有区别。 我们 文章认为在设计包括多个类的可复用代码产品时有二条路线,一是 “从上而下”地设计,需要对所有应用系统的构成进行分析,取其中可以复用的部分加以整合与集成,得到软部件库。另一种是“从下而上”,从已经设计出来的某个领域中 的 系统模块中,补充或修改设计,使其具有可复用性,处理好接口,就可以 复 用,这是大多数文章称之为 “构件”的设计。还有一些例如中间件,在应用系统中不是完整的模块程序,只是构成一个程序的部分,常称为“组件”。但是, 多数作品不 这样明确区分和定义, 三个词 混用 , 不利于研究与讨论。第一位专家大概就是这一 逻辑 ,既然 “部件”就是“构件”,“ 软 部件 实现 ” 就是 “ 软 构件 实现 ”吧, 其研究就 太多了 ,你们的文章也就不存在创新性了。目前, 确实有不少公司或在 某 领域内 建立了软构件库, 形成了自己的软件系统 ,但其中构件不适用于其他领域,称为领域构件。 领域构件 的 应用和研究 确实也 比较广泛, 但 还不能说是 “成熟” 。 因为,还没有统一且准确的 规范和标准 ,没成为教科书中成熟的理论,没 在全软件 产业里统一 应用 。在 90年代末开始研究“构件”时,当时有关项目申报的 最终 目标是软件生产工业化,这些项目都通过了验收, 但 软件生产工业化的目标却不再被人提及了。 90年代末到本世纪初,北京与上海都建立了软“构件库”,希望 能 为社会提供可复用软件,降低软件生产成本、提高软件质量、降低软件维保费用。它们 在部分地区曾 发挥了一定的作用,但是同样 不算成熟 。面对这些情况我们还不应当反思吗?不应当将原来的研究再向纵深推进吗?我们提出的区分部件和构件,正是希望能找出原来研究中的问题或者找到有可能突破的新的方向或方法。 关于 “UML建模”倒确实是成熟的。它是统一建模语言,是 对象管理组织 制定的标准,是一般计算机专业大专生的学习内容,是目前多数产业进行产品设计的 必用 工具。但是, 我们 文章讲的并不是 “UML建模”, UML建模是面向对象的,其最基本元素是类与对象,基于类与对象的建模软件无法完成 全 应用系统的建模。我们讲的是 应用 “部件” 建模 , “部件”是类的集合,是完整程序,是直接构成应用系统的程序模块, 面向对象的 UML无法以“部件”为基本元素组织建模。事实上, 目前流行的 UML建模软件都无法自动生成应用系统 ,甚至无法自动生成程序代码 。有一些研究希望完成 UML所提出的正向工程,自动生成应用程序, 但 如同 Rose这样使用特别多的成熟建模软件也只能自动生成程序框架,离 自动生成 应用系统还很远,甚至 已经有 许多人认为,正向工程是不可能实现的。 目前,关于自动生成 程序 代码、软件生产线的研究很 多 ,有好多研究宣布实现了代码自动生成,甚至宣布建立了软件生产线、能自动生成应用系统。但是, 还 没有一个系统得到公认,没有一个系统被普遍推广与应用。其中,有些是某一家研制,服务于某类特定企业,实际是基于行业内领域构件实现的,不能普遍应用于一切应用。有些只是实现自动建库、建表;有些能自动建立网页。 其中有 一个比较受推崇的软件 的 2016版 也只能自动建立某些应用程序的代码,该软件配备的组件极少,类型也极少,许多都要求从控件设计开始,要求使用流程图定义程序逻辑,再建立网页式的系统 。其生成程序的 界面不丰富,和我国应用实际需要的界面相差比较大 ; 其建模方式与 UML相差太多, 许多要求绘制最原始的程序流程图, 难学难用。 不妨回顾一下 面向对象技术发展历史 : 类与面向对象于上世纪 50年代被提出,但到90年代才普遍被应用 。能被普遍应用 得益于 MFC、jdk及许多面向对象语言的类库的建立于完善,这些类库中的类与应用无关,只与语言或平台有关, 在不同 应用 系统中 都可以使用, 学习容易与使用简单促使其被普及。它的应用 使得程序设计效率大大提高、软件质量大大提高、维护成本降低 。 每个类都集成了多个方法,只要选择方法、配置参数就可调用,无需修改代码,开发难度大大下降。 借鉴这段历史, 当前要实现软件工业化生产的目标,所需要的可复用软件也要求是能直接 、 不加修改被调用的代码块,只需要设置参数就能调用;其数量不能太多,应当能包含在某类平台或语言中;它应当是普适的,除和平台或语言有关外,与具体的应用系统无关,也就是说适用于一切应用系统(只要需要)。这 正 是 软 部件与部件库的设计目标 。 只有设计成功这样的系统模块级的部件库,才能通过系统控制程序(菜单程序)直接调用,才能设计出相应建模软件,自动生成应用系统,建立软件生产线。 为 方便学习 、 方便应用 , 其建模软件应当充分吸收 UML的精华内容,操作和UML相似。 我们的 文章全面介绍其设计思想、设计方法、具体实现与应用情况,完全与之相同的设计现在还未见报道,具有显著的创新性。 “专家”常常拿程序说事,例如在 20 15年我们的作品一开始就被拒所依据的是“文章超过8兆” 。 其实,当时的规则是不超过 8兆直接上传,否则需向主席报告 。 我们按照规则三次向主席报告,但组委会将这后面规定忽略,玩弄手法以规则为理由将之枪毙,之后经我们投诉,才再寻 “专家”维持原判。 这篇文章第三位 “专家”说“本篇文章是一篇讨论型论文,并不是学术型创新研究型(算法、系统等)论文,也不是专业领域某一综述研究论文,文章类型不属于《计算机科学》的收稿范围”。 是否 “收稿范围”本应在送审前、之多在一审中判定,可直接退稿 。 目前由二审专家提出本就晚了。而且,拿出一个 “讨论型论文”的概念也十分模糊。本来,任何论文都是针对某种不足进行研究,给出自己的思想与设计,进行实验验证,再讨论并给出结论,都是 在作 “ 讨论 ” 。如果只是对一些观点进行评述,不涉及自己的研究过程与研究内容,没有实验依据与结论,或许可以算是 “讨论型论文”。但是, 我们 这篇文章 针对 当前软件设计现状提出软件生产线概念,从必要性,到需求分析,到详细设计、实验实现 ,最后 讨论 研究的 意义与价值,是典型的科技论文结构,何来 “讨论型论文”之说。 对 一些专家的学术水平与中文能力需要打问号。第三位 “专家”说“第三和第四章节重点讨论的是数据库的类和其他组件模块的设计”。 我们 文章第三和第四章实际是讲根据第二章进行的需求分析,提出满足这样的需求的详细软部件库的设计方案、建模软件设计方案、应用这样的软部件库与建模软件自动生成应用系统的软件生产线设计方案与实现情况。具体的软部件库部件数量很多,因而分成维护类部件、查询类部件、统计类部件、导入导出类部件、打印与输出类部件分别说明。这位 “专家”只看到维护类中有“类”这样一个字,就说是重点讨论的是“数据库的类” , 真是贻笑大方了。无论哪种语言、那个应用系统中任何可复用的数据维护程序(或任何其他可复用模块程序)都不可能是一个类程序,它必须使用各种各样的控件类,否则无法达到可复用的目的 。 也就是说必须是多个类集成的程序 ,不可能只是一个类,不存在 “维护类”这样的“数据库的类” 。 可见, 文章第三章、第四章讲 的 是数据维护部件、查询部件、 ……等 的 详细设计与应用,决不是 “数据库的类和其他组件模块的设计”。这位专家露馅了。 有一个 “专家”说:“论文的内容是仅仅对一个管理信息系统软部件库以及应用软部件库设计信息系统软件生产线的需求,设计及开发进行说明。并没有从“代码复用技术”的角度进行探讨。” 我们 文章第一部分引文讲软件复用,从子程序、类讲到构件、部件,再重点讲软构件和软部件概念的区别、讲这一区别的意义:只有从许多人讲的与构件混用的 “部件” 概念 中将 “ 通用软部件 ” 分离出来,并且重点研究,才能设计出软件生产线, 同一部件可在不同地方、不同应用系统中应用, 其内容 就 是软件复用。 “专家”说文章未没有从“代码复用技术”的角度进行探讨。只能说该“专家”对“软件复用”概念不清晰,文章的题目是“软件代码复用技术研究的重要问题探讨”,主题应当是一个“重要问题”,而不是“代码复用技术”。文章探讨的是:要实现软件生产现代化、要建立软件生产线,需要什么样的软件代码复用技术。文章的观点是要研究软部件技术,并列举了我们设计的管理信息系统软部件库为例,说明怎样建模、怎样建软件生产线,进而说明,设计出通用于一切应用系统的软部件就可以建立软件生产线 。完全是 从 “代码复用技术”的角度进行 的 探讨。 “专家”们又一个套路是拿参考文献说事 。 第二位 “专家”说:“论文所引用的文献相对较老,且没有对最新及本领域有影响力的文献进行引用”。 如果是成果鉴定或水平论证,参考文献是表现应用价值与研究水平的重要依据 ; 如果是申报项目、经费,参考文献也能表现研究的意义。但是,如果 关于论文中的是 评价创新性, “ 参考文献 ”情况不应当是否决条款 。如果一个问题未被前人研究过,没有相关的文献, 但有研究价值, 有创新 ,其 文章就不能发表了?关于软件生产工业化、软件生产线方面的研究目前还处在很初始的阶段,还没有大家公认的突破。缺少有影响力的文献进行引用不应当是论文发表中最重要的评价依据。 关于软部件库的设计及软件生产线课题是目前许多人关注的重要课题,我们所谓的根据所有应用系统和应用进行需求分析并非不可能,时机已经成熟了。目前已经有许多行业有了自己的领域构件库,只需要对其进行整合,统一接口标准,将功能相近的构件集成到一起,处理好一个部件集成多种应用、多种功能及通过参数选用的问题,就有可能建立完善的软部件库,进而设计出软件生产线 。 将对提高软件生产效率、大幅度提高软件质量、降低成本、降低学习门槛、普及应用、减少软件维保成本产生重大价值,以适应大数据新时代的到来。 目前,很多论证都依靠专家 。 这本来是求取公平、防止腐败的重要手段,十分必要。但是希望, 1、要依靠真正学术水平高、实践经验丰富、原则性强的专家。希望能有“回头看”的机制,要跟踪评价,有必要的问责手段。2、要强调文风,专家评语应当以事实为依据,反对断章取义,反对乱扣帽子,强调独立自主公正评判。 至少在收到投诉后,应当给予答复,将投诉内容与答复情况记入个人业务档案,对于明显违规者应记入个人信用档案。 3、依靠专家不能成为“不作为”的挡箭牌。 附件:关于软部件有关论文名搜索 中国学术期刊网络出版总库 读秀 全部字段中 搜索关键词 “软部件” 1、基于复用的自适应软部件技术研究 【作 者】叶品菊;叶冉冉【刊 名】电脑知识与技术【出版日期】2015【期 号】第29期 2、MIS系统可复用软部件研究与设计 【刊 名】价值工程【出版日期】2014【卷 号】第33卷【期 号】第36期 3、MIS系统可复用软部件研究与设计【作 者】叶品菊;胡远望【刊 名】价值工程【出版日期】2014【卷 号】第33卷【期 号】第36期 4、具体领域基于软部件的软件开发 【作 者】李莎【刊 名】科教导刊 【出版日期】2009【期 号】第30期【影响因子】0.0977(2014) 5、PB查询软部件的设计与实现 【作 者】叶品菊;胡远望;张峰【刊 名】安徽电子信息职业技术学院学报 【出版日期】2010【卷 号】第9卷【期 号】第4期ISSN】1671-802X【影响因子】0.3485(2014) 6、具体领域基于软部件的软件开发 具体领域基于软部件的软件开发【作 者】李莎【刊 名】科教导刊 【出版日期】2009【期 号】第30期【影响因子】0.0977(2014) 7、CAI软部件的设计 【作 者】罗大卫【刊 名】微电子学与计算机【出版日期】1998【卷 号】第15卷【期 号】第6期【页 码】18-23【ISSN】1000-7180【影响因子】0.7510(2014)【参考文献格式】罗大卫.CAI软部件的设计 .微电子学与计算机,1998,(第6期).【摘 要】以面向对象方法为基础的软部件及软件构架技术迅速发展,开创了软件工程的新时代。提供足够丰富的便于调整组装的软部件以及适应应用领域的软件构架,成了开发应用软件的关键。本文针对CAI系统的特点,重点讨论CAI软部件的要求和设计。 8、管理信息系统中软部件技术研究 【作 者】李莎;曾辉;高霞【刊 名】沙棘(科教纵横) 【出版日期】2010【期 号】第10期 9、基于JAVA的报表软部件的研究与实现 【作 者】高霞【刊 名】软件导刊【出版日期】2006【期 号】第7期【页 码】8-9【ISSN】1672-7800【影响因子】0.6158(2014) 10、软部件信息检索系统 【作 者】Murray Wood Prof;Lan Sommerville;宁洪【刊 名】计算机工程与科学【出版日期】1989【期 号】第3期【页 码】53-64【ISSN】1007-130X【影响因子】0.8660(2014)【参考文献格式】Murray Wood Prof,Lan Sommerville,宁洪.软部件信息检索系统 .计算机工程与科学,1989,(第3期).【摘 要】本文介绍用于存贮并检索软件信息的检索系统。该系统不同于一般基于关键字描述的检索机制,它根据自然语言理解领域的一些成果,把部件的有关信息编码成某种即含语法又含语义的形式,作者称之为部件描述框架(Component descriptor frame)。正文中描述了该系统的几个基本构件以及它们怎样用于检索部件信息。此外,给出了该系统正在使用的一个实例。该系统的这个版本完全由Prolog语言实现,目前正在考虑将其并入一个更广泛的重用支持系统。 隐藏更多 11、MIS通用部件中单表查询软部件的设计与实现 【作 者】叶品菊【刊 名】常州信息职业技术学院学报【出版日期】2008【卷 号】第7卷【期 号】第4期【页 码】5-7【ISSN】1672-2434【影响因子】0.3579(2014) 12、基于软部件的MIS开发方法研究 【作 者】游晓明;刘升【刊 名】湖北师范学院学报(自然科学版)【出版日期】1999【卷 号】第19卷【期 号】第4期【页 码】41-43【ISSN】1009-2714【影响因子】0.4593(2014)【参考文献格式】游晓明,刘升.基于软部件的MIS开发方法研究 .湖北师范学院学报(自然科学版),1999,(第4期).【摘 要】分析了我国MIS应用系统的现状和主要存在问题,介绍并提出如何基于软部件技术解决系统的可复用性和适应性差的问题. 13、基于软部件和构架技术的CAI软件 【作 者】罗大卫【刊 名】现代计算机【出版日期】1998【期 号】第10期【页 码】54-57【ISSN】1007-1423【参考文献格式】罗大卫.基于软部件和构架技术的CAI软件 .现代计算机,1998,(第10期).【摘 要】本文讨论基于软部件及构架技术的CAI软件的系统结构和开发平台,并探讨这种CAI软件的设计方法。 14、基于软部件的CAI软件体系结构 【作 者】罗大卫【刊 名】电化教育研究【出版日期】2000【卷 号】第21卷【期 号】第5期【页 码】45-48【ISSN】1003-1553【影响因子】2.6039(2014)【参考文献格式】罗大卫.基于软部件的CAI软件体系结构 .电化教育研究,2000,(第5期).【摘 要】本文讨论基于软部件的 CAI软件体系结构的基本概念 ,给出组成 CAI软件的软部件及软部件之间的联系和约束的描述以及指导它们设计和演化的原理和准则 ,探讨在软件体系结构指导下的 CAI软件设计方法 ,给出 CAI软件开发平台的框架结构 15、基于PB的数据维护软部件的设计与实现 【作 者】程学先;叶品菊;胡远望【刊 名】湖北大学学报(自然科学版) 【出版日期】2005【卷 号】第27卷【期 号】第4期 16、一个基于Internet的软部件信息系统的研究和实现 【作 者】余金山;万静【刊 名】信息与控制【出版日期】2002【卷 号】第31卷【期 号】第4期【页 码】357-363【ISSN】1002-0411【影响因子】1.0440(2014)【参考文献格式】余金山,万静.一个基于Internet的软部件信息系统的研究和实现 .信息与控制,2002,(第4期).【摘 要】当前对软部件技术的研究多数侧重于软部件的制作、存储、检索、裁剪和组装等问题 ,且往往过分强调了以上问题而忽略了另一个非常重要的方面 ,即部件的生产者与部件的使用者之间、生产者与生产者之间、使用者与使用者之间的充分的信息交流和有效协作问题 .从这一思想出发 ,本文提出了一个基于 Internet的软部件信息系统 ,讨论了它的思想、基本模型及其实现 . 17、MIS系统中基于PB平台下软部件开发的研究 【作 者】李莎【刊 名】中南论坛(综合版) 【出版日期】2009【卷 号】第4卷【期 号】第3期【页 码】114 18、 基于软部件的软件重用技术研究 【作 者】席一凡 ;姚树俊【刊 名】邢台职业技术学院学报【出版日期】2005【卷 号】第22卷【期 号】第5期【页 码】49-51【ISSN】1008-6129【影响因子】0.2310(2014)【摘 要】软件重用是提高软件生产率,降低软件生产成本的有力手段,近年来在国内外都有较快的发展。本文详细讨论了基于可重用软部件的软件重用技术,给出了可重用软部件模型的定义、软部件生成过程、软部件库组织、软部件检索以及软部件重用技术,提出了三种重要的软部件库的组织方式及两种检索途径,着重阐述了软部件的重用机制及合成技术。 19、软部件技术为什么成为独家技术【作 者】程学先【刊 名】管理观察【出版日期】2009【期 号】第16期【页 码】87-89 【ISSN】1674-2877【影响因子】0.0620(2014) 20、勘探地球物理反演数学软部件库 【作 者】蔡宗熹【刊 名】物探化探计算技术【出版日期】1993 【卷 号】第15卷【期 号】第4期 【页 码】352-357 【 ISSN】1001-1749【影响因子】0.4727(2014) 21、软部件式CAI软件开发平台的体系结构 【作 者】徐永剑;罗大卫【刊 名】现代计算机【出版日期】1998 【期 号】第5期【页 码】10-12【ISSN】1007-1423【摘 要】本文列举当前cAI软件所存在的问题,并且探讨了在新型CAI开发平台中如何运用软部件及构架技术解决上述问题的途径,对新型平台的体系结构进行了描述;并讨论了新型平台带 22、用软部件和构架技术开发CAI软件 【作 者】罗大卫【刊 名】现代计算机【出版日期】1998【期 号】第1期【页 码】1-5,22 【ISSN】1007-1423 【摘 要】本文概述软部件和构架技术及CAI软件的发展,讨论用软部件和构架技术开发CAI软件的问题。一个以CAI软部件及构架为主体的CAI软件开发平台将使得领域知识和教学策略的表示自然清晰,用户接口灵活多样,便利CAI软件的开发、重组。可以大大提高CAI软件的开发效率,同时也能适应CAI软件发展的需要 23、软部件和构架式CAI系统开发平台的总体设计 【作 者】罗大卫;高宏宾【刊 名】五邑大学学报(自然科学版)【出版日期】1998【卷 号】第12卷【期 号】第3期【页 码】17-21【ISSN】1006-7302【影响因子】0.3040(2014) 【摘 要】给出一个以CAI软件部件及构架为主体的CAI软件开发平台总体设计方案。这个平台旨在采用软件工程的最新方法,尽量便利该软件的开发,并提高其开发效率。CAI课件的开发成为简单的领域知识录入,不熟悉软件开发的教师和专家可以独立地在该平台上开发出自己的CAI软件,并且可以很方便地修改补充已开发好的CAI软件。 24、面向MIS最终集成的可复用软部件设计与研究 【作 者】余小燕;程学先【刊 名】福建电脑【出版日期】2006【卷 号】第22卷【期 号】第10期【页 码】107-108【ISSN】1673-2782【影响因子】0.2476(2014) 25、信息系统基于即插即用型软部件的软件结构模型法 【作 者】程学先;程传庆;王莉【刊 名】武汉理工大学学报(交通科学与工程版)【出版日期】2003 【卷 号】第 27卷【期 号】第4期 【页 码】544-547【ISSN】1006-2823 【影响因子】 0.7276(2014) 26、软部件描述:模型,方法和语言 【作 者】李留英;毛新军;齐治昌【刊 名】计算机科学【出版日期】1997 【卷 号】第24卷【期 号】第1期 【页 码】77-80 【ISSN】1002-137X 【影响因子】 1.2319(2014)【摘 要】软件重用技术是软件工程领域的一项关键技术。目前,支持软件重用的方法主要有两种:块重用,即使用可重用的程序块;模式重用,即通过程序转换获得可重用性。其中,最为系统化、为工程化的软件重用活动是基于重用库的块式重用。块式重 27、支持软件重用的软部件分类方法 【作 者】黄瑞芳;莫晓柏【刊 名】常州工学院学报【出版日期】1992【卷 号】第5卷【期 号】第4期【页 码】32-40【ISSN】1671-0436【影响因子】0.3485(2014)【摘 要】本文介绍了一种软部件多面体分类方法,这种方法基于一个“分析——综合”过程,对可重用软部件集合的分析过程是为了构造这个集合的分类模式,尔后的综合过程是为了描述集合的软部件。这种多面体分类模式适合于变化着的、不断增长的软部件集合,而在对软部件的描述形式上很简洁,便于自动检索系统的实现,同时也支持软部件的相似性排序和描序次序可调,以适应不同用户的需求。 28、信息管理系统中基于JAVA平台下软部件开发的研究 【作 者】李莎【刊 名】中南论坛(综合版) 【出版日期】2008【卷 号】第3卷【期 号】第3期【页 码】119 29、舰载指控系统软件可重用软部件库 【作 者】赵明翔;王振宇【刊 名】计算机杂志【出版日期】1992【卷 号】第20卷【期 号】第1期【页 码】49-51【ISSN】1672-9722【影响因子】0.6529(2014) 30、面向对象的可重用软部件库系统设计与实现 【作 者】陈辉;王振宇;梁先忠;马晓东【刊 名】计算机研究与发展 【出版日期】1993【卷 号】第30卷【期 号】第7期【页 码】48-54【ISSN】1000-1239【影响因子】2.1938(2014)【摘 要】本文报告了一个可重用软部件库系统设计与实现的途径,采用了基干对象的部件模型,提供了两种检索方式以及两套部件获职工具,阐述并给出了部件组合规则,提出了基于重用的软件开发新范式,最后讨论了软部件库的结构。 31、舰载指控系统软件的可重用软部件库 【作 者】赵明翔;程红【刊 名】舰船科学技术【出版日期】1993【卷 号】第15卷【期 号】第3期【页 码】61-65【ISSN】1672-7649【影响因子】0.3477(2014)【摘 要】软件重用技术为90年代最有希望的技术之一。它既能提高软件生产率,又能提高软件产品的可靠性。部件化技术是基于“库”的一种软件重用技术。本文以舰载指控系统软件为背景,对部件化技术所涉及的部件获取、部件库管理和使用部件合成新的软件系统等技术进行了深入地研究,并实现了舰载指控系统软件可重用的部件库系统的原型。 32、加强软部件技术研究促软件工业化生产时代到来 【作 者】程学先;程传慧;程传庆【刊 名】微型机与应用【出版日期】2007【卷 号】第26卷【期 号】第A1期【页 码】59-63【ISSN】1674-3490【影响因子】0.5382(2014) 33、“MIS软部件技术研究”经鉴定为达到国际先进水平 【刊 名】湖北工业大学学报【出版日期】2005【卷 号】第20卷【期 号】第2期【页 码】58-58【ISSN】1003-4684【影响因子】0.4936(2014)【摘 要】2005年元月17日,湖北工业大学计算机学院程学先教授负责的湖北省教育厅科技攻关项目——“MIS软部件技术研究”顺利通过了湖北省专家组的技术鉴定。专家认定:该项目在管理信息系统代码的软件复用领域达到了国际先进水平。 34、浅谈软件复用与面向对象 【作 者】叶强【刊 名】青年科学(下半月) 【出版日期】2014【期 号】第7期【页 码】324-325【摘 要】软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。对于新的软件开发项目而言,它们或者是构成整个目标软件系统的部件,或者在软件开发过程中发挥某种作用。通常将这些软件元素称为软部件。软件重用不仅要讨论如何检索所需的软部件以及如何对它们进行必要的修剪,还要解决如何选取软部件、如何组织软部件库等问题。 35、Windows下的OLE自动化技术及其实现 【作 者】党峥;汪晓庆【刊 名】电脑与信息技术 【出版日期】1998【卷 号】第6卷【期 号】第2期【页 码】7-11【ISSN】1005-1228【影响因子】0.5117(2014)【摘 要】本文描述了OLE自动化技术的原理及特性,并实现了一个基于OLE自动化的多媒体著作软部件。 36、CAI系统的面向对象分析 【作 者】罗大卫【刊 名】五邑大学学报(自然科学版)【出版日期】1996【卷 号】第10卷【期 号】第4期【页 码】4-9【ISSN】1006-7302【影响因子】0.3040(2014)【摘 要】基于面向对象方法的软部件和软件框架技术是新一代软件工程的基础。本文讨论软部件技术在CAI系统中的应用,着重讨论对CAI系统的面向对象分析,这是CAI系统设计的基础。 37、基于Agent的软件重用 【作 者】毛新军;徐锡山;齐治昌【刊 名】计算机工程与科学【出版日期】2000【卷 号】第22卷【期 号】第5期【页 码】88-91【ISSN】1007-130X【影响因子】0.8660(2014)【摘 要】软件重用是目前提高软件质量和开发效率、降低软件开发成本的一种重要手段。本文分析了当前软件重用的特点 ,针对其不足以及目前软件开发的状况提出了动态软件重用的思想。这一思想的一个重要特征是由可重用软部件完成软件重用活动。为了实现动态软件重用的思想 ,我们进一步提出了基于 Agent的软件重用方法 ,分析了该方法在实现动态软件重用中的有效性和面临的问题以及解决问题的技术途径。 38、适用于客户机/服务器系统的MILESTONE开发方法 【作 者】孙义【刊 名】计算机研究与发展【出版日期】1997【卷 号】第34卷【期 号】第11期【页 码】29-33【ISSN】1000-1239【影响因子】2.1938(2014)【摘 要】传统的软件开发生存周期把软件开发过程划分成4个主要阶段.这种方法特别适合于单一的独立系统,但不适合客户机/服务器系统的开发.客户机/服务器系统由许多软部件组成,而且集成多个部门自己开发的软件,这些软部件特别适合采用并行且交互的实现方法.根据客户机/服务器系统开发的特点,文中介绍了一种基于MILESTONE的过程开发模型. 39、“再用式”软件开发方法 【作 者】吴会松;谢阳;田军;李莉莉【刊 名】西安石油学院学报(自然科学版) 【出版日期】1999【卷 号】第14卷【期 号】第1期【页 码】47-49,6【ISSN】1673-064X【影响因子】0.6660(2014)【摘 要】根据当前软件开发的现状,提出了一种在保证当前开发质量及效率的前提下,还能让以后的软件开发人员重用已开发软件资源的“再用式”软件开发方法,该方法结合了面向对象及快速原型法的优点:针对 软件开发中的需求多变性,用快速原型法进行需求分析,在后续的开发中,以面向对象为基础,用各种 “级别”不同的可重用软部件组装系统,在对软部件不断的创建(只在没有所需部件时才创建)、重用及组合中完成系统的开发.这种方法可以有效地提高软件的整体开发效率.最后对该方法的进一步研究方向进行了探讨. 40、从领域研究探求软件集成途径 【作 者】韩庆兰;杨柳【刊 名】计算技术与自动化 【出版日期】1998【卷 号】第17卷【期 号】第3期【页 码】14-17【ISSN】1003-6199【影响因子】0.5693(2014)【摘 要】本文借鉴工业标准件思想,将软件产品按其应用领域分类,研究构造出领域模型,建立标准部件库,参照MRP—Ⅱ中的成本计算方法,根据软件产品结构信息,对软部件进行组装,实现软件集成。 41、多媒体课件开发中的重用技术 【作 者】李名;李瑞萍【刊 名】中国现代教育装备 【出版日期】2008【期 号】第12期【ISSN】1672-1438【影响因子】0.3149(2014)【摘 要】在多媒体课件开发过程中引入重用技术能够使教师和软件开发者更好地分工和协同工作,从而设计出质量更高、更适合需求的课件。本文主要介绍了重用的概念以及如何在多媒体课件开发中应用重用技术。 42、计算机中英文新技术词汇对照 【刊 名】通信世界【出版日期】1997【期 号】第12期【页 码】41【ISSN】1009-1564【影响因子】0.0871(2014)【摘 要】计算机中英文新技术词汇对照Componentware———软构件,组合软件将多个供应商提供的各种软部件组合起来,支持应用开发环境的新一代软件技术,它是以面向对象为基础,嵌入后立即生效的即插即用软部件概念为中心的技术体系。软构件主要起组合作用,具有以下... 43、新时期经济违法案件新特点 【作 者】敬远【刊 名】北京工商【出版日期】1994【期 号】第2期【页 码】14【ISSN】1002-3135【摘 要】其一、假冒伪劣产品已从人们日常生活中的衣、食、住、行领域的日用百货、汽车配件、电线电缆、钢材等向高科技领域的计算机软部件发展,由利小产品向利大的空调机、汽车等产品发展。 其二、销售走私商品的案件逐渐增多,随着沿海边境地区走私活动的日益猖獗,销往内地的走私商 44、试论软件工程实施的宏观因素 【作 者】李其龙;尹江月【刊 名】郑州航空工业管理学院学报 【出版日期】1988【期 号】第3期【页 码】42-45【ISSN】1007-9734【影响因子】0.4986(2014)【摘 要】软件产品的开发标准,产品设计的图形表示法,软件工具及软部件的标准化,软件工程与硬件工程的关系,应用软件工程师的培养和造就等方面的问题都是影响软件工程实施的宏观因素。本文采用与机械工程相类比的方法论述这些因素在软件工程实施中的重要作用。 45、CT流程预编译器的设计 【作 者】王学军;金连甫;陈平【刊 名】计算机工程【出版日期】1999【卷 号】第25卷【期 号】第4期【页 码】16-18【ISSN】1000-3428【影响因子】1.0258(2014)【摘 要】讨论了计算机语音流程的预编译器CTFPC。CTFPC的设计采用面向对象的程序设计思想和应用程序框架思想,将状态转移表转换成某种编程语言的源代码,以减少开发人员的重复性工作,提高系统开发效率。 46、软件体系结构讲座 (三)实例研究 【作 者】王振宇;梁先忠;况银瓶【刊 名】计算机与数字工程【出版日期】1999【卷 号】第27卷【期 号】第3期【页 码】58-68【ISSN】1672-9722【影响因子】0.6529(2014)【摘 要】本讲通过若干例子说明如何利用体系结构原理增加对软件系统的理解。 47、软件体系结构讲座 (一)软件体系结构引论 【作 者】王振宇【刊 名】计算机与数字工程【出版日期】1999【卷 号】第27卷【期 号】第1期【页 码】62-68【ISSN】1672-9722【影响因子】0.6529(2014)【摘 要】本讲讨论软件体系结构的定义、研究内容和发展现状以及它同软件工程的关系。 48、软件项目过程重用库建设 【作 者】张耀伟【刊 名】品牌与标准化【出版日期】2009【期 号】第16期【页 码】51【ISSN】1674-4977【影响因子】0.0484(2014)【参考文献格式】张耀伟.软件项目过程重用库建设 .品牌与标准化,2009,(第16期).【摘 要】现状说明。随着本单位承揽的项目越来越多,项目的需求不断扩大,项目开发人员经常会感到没有可以借鉴或可以利用的资料,包括代码、用例、原型等等。由于长期以来,软件开发处于个人开发阶段,软件重用率很低,软件生产率不高,造成软件开发周期长,软件质量不高。这个问题已经在工作中日益严重,因此,建立 49、软件重用技术【作 者】魏延【刊 名】重庆师范学院学报(自然科学版) 【出版日期】1999【卷 号】第16卷【期 号】第2期【页 码】39-44【ISSN】1672-6693【影响因子】0.9053(2014)【摘 要】软件重用是提高软件生产率,降低软件生产成本的有力手段,近年来在国内外都有较快的发展。本文论述了软件可重用性概念及其划分,软件重用的途径,并列举了软件重用技术的现状 50、一个以用户为中心的图形第四代语言系统 【作 者】罗大卫【刊 名】计算机工程与应用【出版日期】1997【卷 号】第33卷【期 号】第7期【页 码】29-34【ISSN】1002-8331【影响因子】1.0855(2014)【摘 要】本文提出一个G4GL系统的设计方案,主要考虑以下原则:以用户为中心;强调基本要求;面向应用领域专家。该系统适于各种数据处理系统的开发,如CAI系统 51、基于软件重用技术的管理信息系统开发【作 者】许海成;余建坤【刊 名】蒙自师范高等专科学校学报 【出版日期】1999【期 号】第6期【页 码】41-44【ISSN】1008-9128【影响因子】0.3000(2014)【摘 要】为满足企业迅速建立MIS(管理信息系统)系统的要求,迫切需要采用软件重用技术来进行开发.本文讨论了MIS系统开发过程和活动中所涉及到的软件重用理论和技术. 52、一种基于领域分析的面向Agent需求建模方法 【作 者】唐孝柱;邵堃;滑培培【刊 名】微计算机信息 【出版日期】2010【卷 号】第26卷【期 号】第33期【页 码】249-250,243【摘 要】面向Agent软件工程是开发复杂分布式系统的一种新范例,Agent作为一种新型软部件具有更高的抽象,能更有效的处理复杂的系统。本文以工作管理系统为研究背景,提出一种基于领域分析的面向Agent需求建模方法。该方法基于当前主流的面向Agent软件开发方法,结合领域工程的知识,将特征引入到系统开发的元模型中,描述了需求建模过程中的几种建模活动。使需求建模的结果不仅能有效地满足系统用户的需求,还能够有效的支持软件复用。 53、基于面向对象的软件重用技术【作 者】成岳鹏;戴永成;崔静【刊 名】河北工业科技 【出版日期】2009【卷 号】第26卷【期 号】第5期【页 码】434-437【ISSN】1008-1534【影响因子】0.7778(2014)【摘 要】在软件开发中使用软件重用技术可有效提高软件生产率、缩短软件开发周期,尤其对大型软件开发项目来说更是如此。由于面向对象的软件开发具有封装、继承等特性,因而它更适合支持软件的重用技术。本文所讨论的主要问题就是基于面向对象的软部件的重用技术。 54、软件重用技术在MIS系统中的应用 【作 者】郑志蕴;张行进;胡箐妍;杨亚伟【刊 名】郑州大学学报(工学版) 【出版日期】2002【卷 号】第23卷【期 号】第2期【页 码】57-60【ISSN】1671-6833【影响因子】0.6391(2014)【摘 要】在开发用电营业管理信息系统过程中 , 针对软件开发中的需求多变性 ,以软件重用技术为基础 ,通过目标代码级重用、类库、组件等方法 ,开发各种“级别”不同的可重用软部件 ,在对软部件不断的创建、重用及组合中完成系统的开发 .该方法可以有效地提高软件的整体开发效率 ,保证 软件质量 ,而且还能为软件开发人员重用已开发软件资源提供便利 55、基于对象的软件重用技术研究 【作 者】徐小平【刊 名】软件开发与应用 【出版日期】1997【期 号】第6期【页 码】31-33【摘 要】讨论了基于对象的可重用软部件的重用技术,给出了可重用软部件模型的定义,提出了分层次的目录结构的组织方式及两种检索途径,阐述了软部件的生成方法及重用机制。 56、基于对象的软件重用技术研究 【作 者】徐小平【刊 名】计算机应用研究【出版日期】1998【卷 号】第15卷【期 号】第3期【页 码】40-42【ISSN】1001-3695【影响因子】1.5011(2014)【摘 要】本文详细讨论了基于对象的可重用软部件的重用技术,给出了可重用软部件模型的定义,提出了分层次的目录结构的组织方式及两种检索途径,阐述了软部件的生成方法及重用机制。 57、基于对象的软件重用技术研究 【作 者】孙大烈;杨静;王子立【刊 名】哈尔滨建筑大学学报 【出版日期】2000【卷 号】第33卷【期 号】第3期【页 码】111-113【ISSN】1006-6780【摘 要】提高软件开发的效率对软件工程具有重要意义。面向对象的程序设计方法以可重用性为中心 ,构造独立于具体工作的可重用软部件,这些软部件经适当的整合即可构成新的目标系统,从而大大提高软件开发的效率。讨论了基于对象的可重用软部件的重用技术,给出了可重用软部件模型的定义,提出了分层次的目录结构的组织方式及 两种检索路径,阐述了软部件的生成方法及重用机制。 58、软件可靠性的模块分析方法 【作 者】张继旭;王琦【刊 名】战术导弹技术【出版日期】2002【期 号】第2期【页 码】64-69【ISSN】1009-1300【影响因子】0.4000(2014)【摘 要】借鉴软部件可靠性分析方法提出了软件可靠性的模块分析方法 .先将软件分解为模块 ,然后在模块层次上应用EET可靠性增长模型 ,最后进行可靠性叠加而得到软件的可靠性模型 .所需的模型参数可以由软件的历史版本信息、软件模块的静态属性和动态属性得到 .该方法可以在进行软件测试之前实施 ,并在测试中完善 .详细描述了该方法的 6个步骤 ,最后总结了该方法的优点 59、基于领域的O-O软件重用工具的研究与开发 【作 者】毛新军;齐治昌【刊 名】计算机科学 【出版日期】1997【卷 号】第24卷【期 号】第4期【页 码】91-94【ISSN】1002-137X【影响因子】1.2319(2014)【摘 要】基于领域的面向对象软件重用工具(简称OORT)是我们在PC Windows环境下开发的可重用软部件管理工具。OORT按应用领域来组织、管理可重用软部件,支持多个应用领域软部件的建 60、基于部件设计的运行时验证 【作 者】云晓春;方滨兴【刊 名】计算机学报【出版日期】1999【卷 号】第22卷【期 号】第9期【页 码】970-974【ISSN】0254-4164【影响因子】4.0044(2014)【摘 要】研究软部件设计中的可靠性问题.对这一问题主要关心的是,当一个已存软部件的正确性无法得到确认时,在其具体实现不可知的情况下,如何提高它的运行时可靠性?为解决这一问题,该文首先构造一个能够用于软部件动态语义检测的抽象描述模型;然后通过在设计中系统地引入一些运行时技术以保证基于部件软件的可靠性.这些运行时技术包括:(1)包裹部件.作为额外的一层设计,根据软部件的接口说明自动生成,用于检测运行时错误;(2)虚拟部件.作为一种软部件行为模式,利用动态调用和代理机制,保障基于部件软件的容错运行 61、实时系统组合软件模型研究 【作 者】李秦伟【刊 名】贵州工业大学学报(自然科学版) 【出版日期】2001【卷 号】第30卷【期 号】第2期【页 码】42-45【ISSN】1009-0193【摘 要】分析了严格实时控制系统的组合软件实现 ,提出了一个该类系统的组合方法。该方法用三类软部件做结点 ,建立加标有向图组合模型 ,使用引擎机制触发驱动其运行 ,介绍了它的计算机实现 62、对候选重用部件的考虑和实践 【作 者】曾丽芳;郑若忠【刊 名】计算机与数字工程 【出版日期】1994【卷 号】第22卷【期 号】第2期【页 码】10-14【ISSN】1672-9722【影响因子】0.6529(2014)【摘 要】 本文主要针对软件重用中的限制因素 ——怎样处理候选重用软件并获得可重用软部件而提出一种系统化思想。以此方法为指导上机实现了一种可重用的通用模块。关键词:候选重用部件 软件重用粒度 程序结构度量理论 平均信息载量 63、一种基于事务构件的ERP系统集成方法 【作 者】郑明春;王岩冰;杨立洁;刘弘【刊 名】小型微型计算机系统 【出版日期】2001【卷 号】第22卷【期 号】第1期【页 码】89-93【ISSN】1000-1220【影响因子】0.8890(2014)【摘 要】本文首先对各务构件的概念进行了讨论,然后设计了一种事务构件模型,提出了一种基于此模型的ERP系统集成方法,这种方法支持跨平台、跨语言的软构件的集成,可以复用已存在的软件系统或软部件。 64、软件复用:谈跨平台操作规范COM和CORBA 【作 者】陈景龙【刊 名】军队指挥自动化 【出版日期】2001【期 号】第2期【页 码】53-56【摘 要】与硬件制造技术的高度工业化和集成化相比,软件制造业却一直存在着生产效率低、软件可扩充性和复用能力差、难以维护等问题,软件生产至今仍是手工生产方式,主要依赖于软件人员的知识和能力。90年代开始的对象技术和工程化发展,为软件生产从人工集约型向资源集约型发展带来了希望。基于对象技术,人们开始努力研究开发像硬件零部件那样的一些标准软组件、软部件,应用系统的开发也可像硬件组装一样,按照一定的规范,组装这些预制好的软件零部件,从而使软件制造进入了一个全新的境界。 65、重用部件的研究和实现 【作 者】曾丽芳;郑若忠【刊 名】软件 【出版日期】1994【卷 号】第15卷【期 号】第C1期【页 码】16-20【ISSN】1003-6970【影响因子】1.3103(2014)【摘 要】本文主要针对软件重用中的限制因素——怎样处理候选重用软件并获得可重用软部件而提出一种可重用性强的通用模块。众多的计算机工作者正在探讨可重用性理论,在软件重用的概念、模型、语言环境、case工具等方面已取得一定成绩。Pieto—Diaz和Freeman对重用和可重用概念定义如下:重用就是在新环境中使用以前获得的概念和对象。可重用性则是对使用以前获得的概念和对象的难易程度的一种量度。重用概念的出现促进了软件重用这一新领域的研究。出现了基于模块型态重用的合成模型及基于语言生成器和 应用生成器的生成模型等。随着面向对象程序设计环境的出现 ,重用模型得以发展,重用领域的一系列新的case工具开始出现。总之,软件重用领域所取得的成绩一定程度上减少了软件系统的开发费用,缩短了软件开发时间,提高了系统的可靠性,并促进了新语言、新技术的开发发展。但是,重用领域也存在不少限制因素。本文首先以软件生产自动化讨论重用中的限制因素,并以软件工程、抽象等角度引出程序结构度量理论、软件重用粒度等一系列思想。最后,介绍了数据库管理系统中的可重用环境。 66、基于软件的CAI软件体系结构 【作 者】罗大卫【刊 名】电化教育研究 【出版日期】2000【期 号】第5期【页 码】45-48【ISSN】1003-1553【影响因子】2.6039(2014)【摘 要】本文讨论基于软部件的CAI软件体系结构的基本概念,给出组成CAI软件的软部件及软产件之间的联系不和约束的描述以及指导它们设计和演化的原理和准则,探讨在软件体系结构指导下的CAI软件设计方法,给出CAI软件开发平台的框架结构。 67、数字时代的新旅行 【作 者】本刊编辑部【刊 名】户外探险 【出版日期】2011【期 号】第1期【影响因子】0.0036(2014)【摘 要】旅行是一次遭遇,是和空间的遭遇。 1500年前,郦道元面对汉代桑钦的《水经》时,要准备自己的旅行,他精研图志,参阅群书,干余条河流伴随着行程,完成的也许不仅仅是《水经》的注。 近500年前,徐霞客少年时即立志朝游碧海暮宿苍梧,且钟情于地经图志。徐霞客的旅行开始于乘兴览胜,渐入佳境,直至完成十数卷游记。 50年前,杰克·凯鲁亚克在细雨中坐上拥挤的货车,一瓶劣质的威士忌,去哪里,去干吗,似乎一切都不去操心。 5年前,披头四是从旅游攻略书和驴坛开始的旅行,路上有美景、惊喜、意外抑或艳遇。 5天前的小强携一部手机下载几个软部件,背上行囊就已上路…… 新电子时代的光辉已经照耀着小强的生活,新网络时代的星辰也为小强指引着方向,网路似乎延展着无限,也泛着幽幽魅光。 看来,当下这种遭遇可能既是空间的也是时间的…… 搜索关键词 “自动生成应用系统” 68、基于XML的构件自动组装系统的设计与实现 【作 者】谢晓芹;李涓子;王沛;王克宏【刊 名】计算机工程与应用【出版日期】2005【卷 号】第41卷【期 号】第4期【页 码】4-8【ISSN】1002-8331【影响因子】1.0855(2014)【摘 要】该文利用基于XML和Java的程序自动生成技术给出了一个构件组装系统的设计,提出了SAML应用模板语言的定义。连接器利用了消息总线的思想,通过共享消息资源的方式连接构件,从而将构件之间的连接关系解耦。在自动生成应用系统时对SAML模板文件进行分析、转换,自动生成消息分发器和最终可执行应用程序,并结合B2C电子购物领域给出一个原型实现。该设计方法为实现自动的构件组装技术提出了一种解决方案。 搜索关键词 “软件生产自动化” 69、森林资源管理信息系统研建引进UML的必要性研究 【作 者】吕康梅;亢新刚【刊 名】林业调查规划【出版日期】2005【卷 号】第30卷【期 号】第4期【页 码】1-4【ISSN】1671-3168【影响因子】0.5272(2014)【摘 要】UML能为面向对象系统的开发、软件生产的自动化和支持环境的建造提供一种丰富、严谨、扩充性强的表达方式.文章提出了森林资源管理信息系统开发中基于面向对象技术、利用统一建模语言UML建模的过程概念和开发方法.通过对UML的分析可以看出,基于UML的森林资源管理信息系统开发方法在林业信息管理中有很好的应用前景. 70、基于UML的MIS系统开发 【作 者】申红雪;何培英;韩哲新【刊 名】郑州轻工业学院学报(自然科学版) 【出版日期】2002【卷 号】第17卷【期 号】第1期【页 码】67-70【ISSN】1004-1478【影响因子】0.5030(2014)【摘 要】统一建模语言 (UML)是一种可视化的面向对象的建模语言 ,可用于对软件系统进行描述和构造软件的系统结构 .利用UML进行MIS系统建模 ,则要先分析用户需求 ,建立系统的用例、顺序、类、包等视图 ,再按照软件工程的思想进行编程 .在此过程中 ,UML能为面向对象系统的开发、软件生产的自动化和支持环境的建造提供一种丰富、严谨、扩充性强的表达方式 71、软件生产自动化之路--软件工程 【作 者】杨芙清;米宁【刊 名】新华文摘 【出版日期】1986【期 号】第9期【页 码】203-205【ISSN】1001-6651 搜索关键词 “自动生成系统”(共1069篇,去掉特定领域或特定用途的自动生成的文章,去掉95年前文章) 72、基于可复用格式的打印文本自动生成系统设计与实现 【作 者】尉寅玮;吴雅轩【刊 名】软件导刊 【出版日期】2016【期 号】第8期【页 码】86-88【ISSN】1672-7800【影响因子】0.6158(2014)【摘 要】通过对格式化文本生成工作的调研分析,针对文本格式化过程中存在的各种弊端,设计了一套基于B/S架构的可复用格式打印文本自动生成系统,通过将格式信息与内容信息的编写进行合理划分,实现了格式化文本的自动生成,从而提高了格式化文本的编写速率,降低了因为格式问题而导致的文本错误。 73、Java Bean自动生成系统的设计与实现 【作 者】杨静【刊 名】湖北汽车工业学院学报 【出版日期】2015【期 号】第2期【页 码】61-63【ISSN】1008-5483【影响因子】0.4286(2014)【摘 要】为了提高系统的开发效率,针对模型层设计了一个代码自动生成系统。该系统具有良好的扩展性和灵活性,能根据用户的配置自动生成相应的业务代码,在降低开发成本的同时,有效提升了软件质量。 74、通用报表自动生成系统 【作 者】任卫银;任宗修【刊 名】新乡教育学院学报【出版日期】2004【卷 号】第17卷【期 号】第2期【页 码】94-95【ISSN】1674-6511【影响因子】0.7793(2014)【摘 要】本文建立了一个通用报表自动生成系统 ,对于任意的关系型数据库文件 ,都可以利用该系统 ,以报表的形式将数据库中除备注型外一般字段的内容输出 ,并可以根据需要 ,选择所需字段和所需记录进行输出 ,为数据库的输出提供了一种灵活、简便的工具 75、基于XML的网站自动生成系统的设计 【作 者】陈晓飞【刊 名】计算机光盘软件与应用 【出版日期】2012【卷 号】第15卷【期 号】第16期【页 码】206,208【ISSN】1007-9599【影响因子】0.3579(2014)【摘 要】可扩展标记语言(Extensible Markup Language,XML)是指一种应用于电子文件标记作业,以标记为手段赋予电子文件自身所特有的结构性标记语言,而这种类型的结构性标记语言则能够广泛应用对数据的标记及类型定义处理。在当前技术条件支持下,XML技术已成为一种可允许用户针对自身所指定标记语言进行定义处理的源语言形式,并且借助于结构数据的可持续性与优化型而使得XML能够广泛应用于Web传输过程当中。本文以XML为研究对象,着眼于网站自动生成系统的设计这一中心问题,围绕基于XML的网站自动生成系统设计这一中心问题展开了较为详细的分析与阐述,并据此论证了XML可扩展标记语言的引入及其应用在提高网站自动生成系统设计作业质量与有效性的过程中所占据的重要地位及其所发胡的关键意义。 76、中小型企业网站自动生成系统的设计与实现 【作 者】王文学;王利军【刊 名】电脑知识与技术 【出版日期】2011【期 号】第29期【ISSN】1009-3044【影响因子】0.3204(2014)【摘 要】该文针对在全球电子商务浪潮的冲击下我国的中小企业由于受技术、资金等各方面原因的制约,不能很好地在互联网上实施电子商务开展网上贸易的情况。通过研究这些企业的需求开发出一套通用的企业网站自动生成系统,帮助中小企业轻松地在网上建立自己的网站系统,并可以很方便地在线维护,提供和MIS系统的接口,可以和企业现有进销存系统紧密的结合,为企业的管理和经营决策支持提供依据,从而推进我国电子商务水平的发展。 77、电视气象预报自动生成系统开发 【刊 名】电脑知识与技术 【出版日期】2008【期 号】第17期【页 码】1473-1474,1481【ISSN】1009-3044【影响因子】0.3204(2014)【摘 要】电视气象节目是一档以电视语言来解析气象科学的节目。电视气象预报自动生成系统实现了原始气象数据到电视画面语言的自动转化,使气象节目在保留气象学准确性的同时,不失电视艺术的观赏性,既提高了节目制作效率,又使气象信息得以有效传播。 78、动态网站自动生成系统的设计与实现【作 者】段淑敏;徐自力;王勇;张连堂;杜纪霞【刊 名】河南大学学报(自然科学版) 【出版日期】2006【卷 号】第36卷【期 号】第4期【页 码】87-90【ISSN】1003-4978【影响因子】0.7805(2014)【摘 要】提出一种适用于各种服务器环境的网站解决方案,该方案综合运用数据库技术、中间件技术、优化技术、安全技术等,实现基于自动生成模式的网站系统.此系统可轻松实现网站架构及管理,极易移植为各种同类单位网站. 79、基于JAVA的WEB页面自动生成系统 【作 者】舒红平;吴自恒;蒋建民【刊 名】成都信息工程学院学报【出版日期】2003【卷 号】第18卷【期 号】第4期【页 码】343-348【ISSN】1671-1742【影响因子】0.3456(2014)【摘 要】介绍了一个自动生成Web页面的系统。系统只需输入待生成页面的相关特征信息,就自动生成能在Java环境下运行的,具有新增、删除、修改及保存功能的Web页面。系统能大大地缩短开发Web项目的周期,提高工作效率。
个人分类: 生活点滴|3255 次阅读|1 个评论
2016学士论文-数据挖掘实验工具程序设计
求新 2016-7-21 20:02
毕业设计(论文) 数据挖掘实验工具程序设计 学生姓名:*********** 指导教师:程学先 日期:二○一六年五月 摘要 现在已经进入大数据时代,其中为社会关注并且具有极大效益的技术之一是数据挖掘技术,该技术目前尚未成熟,仍处于研究探讨阶段。这篇论文介绍一套数据挖掘实验工具的设计与实现,包括聚类分析工具、ID3决策树设计工具、Apriori算法关联分析工具与一元线性回归分析工具的设计与研制情况。聚类分析是将一个数据集合分成一组聚类,通过赋给不同分类不同的中心点,通过计算欧氏距离判断应该将这些数据放在哪个类别中,使得这些不同类中的数据尽可能地不相似和相隔距离较远,而又要保证同一个类中的数据尽可能地相似和相隔距离较近。ID3决策树通过计算信息熵与信息增益实现分类,使得能根据进行某种决策的大量日常数据分析在新情况下得到最科学、最能符合所需要的利益的决策方案。Apriori算法关联分析通过数据库中记录的大量经营过程数据,寻求数据之间的关联规律,使能最有效地组织数据,提供改进经营过程的方案。一元线性回归分析根据已经发生的二个数据之间相互关联和变化的数据,试图找出二个数据之间存在的线性关系,借以预测当一个数据发生变化为某值时,另一个数据的可能值。 这些内容是“数据挖掘”课程中基本又重要的内容,以往多利用SQLServer数据库中数据仓库中提供的程序组织实验教学,但是,其操作复杂,稳定性差,特别是看不到其中数据变换过程与计算方法。有许多学者、专家研究这些课题,但是未见可供公众使用的综合多个数据挖掘技术的实验系统。我们设计并建成了这一套数据挖掘实验工具,使用简单、方便,并且可以直观看到数据处理的中间步骤、计算方法与数据变化情况,对教学更有意义。同时,由于其易学易用,也可用到实际应用系统科学决策中。 关键词:数据挖掘聚类分析ID3决策树Apriori算法一元线性回归 第1章绪论 1.1本论文研究背景 现在已经步入大数据时代,其中为社会广泛关注并且具有极大效益的技术之一就是数据挖掘技术,该项技术目前尚未成熟,仍处于研究和探讨阶段,但是其意义及蕴藏的巨大经济效益却是令人瞩目的。 知识发现(KDD)与DM已经是数据库领域中最重要的课题之一。KDD是在1989年8月于美国底特律市召开的第十一届国际人工智能会议上正式提出的。而在1995年加拿大蒙特利尔召开的第一届KDDDataMining国际学术会议上,又把数据挖掘技术分成了科研领域的知识发现与工程领域的数据挖掘。在这之后每年召开一次这样的会议,经过十多年的努力,已经在数据挖掘技术的研究领域取得了喜人的成果。目前,KDD的研究工作主要围绕理论、技术和应用这三方面展开。多种理论与方法的合理整合开发利用是大多数研究者目前采用的有效技术。目前,国外数据挖掘领域的最新发展方向主要就是对发现知识的方法的进一步研究,比如最近几年来就注重对Bayes(贝叶斯)方法和Boosting方法的进一步研究和改进提高;KDD与数据库的紧密结合;传统的统计学回归方法在KDD中的应用。在应用方面则主要体现在KDD商业软件工具从解决问题的单一过程转向到建立解决问题的整体系统,主要的用户有保险公司、大型银行和销售业等行业。许多计算机企业和研究机构都非常重视数据挖掘方面的开发应用,IBM和微软等公司都相继成立了研究中心。美国是全球数据挖掘研究最繁荣的地区,同时也占据着研究的核心地位。 与国外的发展相比,目前国内对数据挖掘方面的研究起步较晚而且不成熟,目前还处于发展阶段。最新发展方向:分类技术研究,建立集合理论体系,大量数据处理;将粗糙集和模糊集理论二者融合用于知识发现;构造模糊系统辨识方法与模糊系统知识模型;构造智能专家系统;研究中文文本挖掘的理论模型与实现技术;利用概念进行文本挖掘。 随着大数据时代的到来,各类学校对数据挖掘课程也越来越重视,但是,其教学实验环境,包括课堂演示实验环境与学生模拟实验环境、创新实验环境都不理想。由于数据挖掘得迅速发展,市场上已经有不少的数据挖掘工具可以使用,例如: 1.QUEST工具是IBM公司研发的一个多任务数据挖掘系统。系统提供了用于在大型数据库中进行开发的多种功能。各种开发算法的计算复杂度是近似于线性(O(n))的,可适用于各种大小的数据库。为各种发现功能设计了相应的并行算法。 2.MineSet是由SGI公司和Standford大学联手开发的多任务数据挖掘系统。集成了多种数据挖掘算法以及可视化工具,帮助能够用户直观而且实时地发掘和理解大量数据背后隐藏的知识。它使用了6种可视化工具来表现数据和知识,提供多种数据挖掘模式。包括分类器、回归模式、关联规则、聚类归、判断列重要度,支持多种关系数据库。 3、IBM公司以它在美国及世界各地的研究实验室发展数年的资料探勘解决方案,发展出了一系列包括在人工智能、机制学习、语言分析及知识发掘上的应用和基本研究的精密软件。 4、OracleDarwin常被认为是最早资料探勘工具之一 5、Clementine是SPSS所发行的一种资料探勘工具,此工具结合了多种图形使用者接口的分析技术。 6、ThoughtandScenario(Cognos)是两个资料探勘工具的组合,都需要电子表格、数据库和ASCII文字文件作为资料来源。 如此多的工具虽然说明了这一课题被重视程度与应用价值,但是它们都是商品化的软件,一般学校难以使用。 许多学校采用SQLServer数据库的数据仓库中数据挖掘工具组织实验教学,但是操作比较复杂,不适应课堂教学。另外,其中数据挖掘的算法、挖掘过程中的中间数据很难得到,对于教学的感性教育不够理想。 学校开设的语言课一般是C语言、JAVA语言、.NET……,但采用C语言或JAVA语言开发的数据挖掘方面的简单、非商品的系列的实验工具未见报道。 1.2本论文研究目的和意义 根据以上分析,数据挖掘课程的教学需要一个简单的、低成本的、能更好表现算法与数据挖掘中间过程的实验工具,使更好配合课堂与课下实验教学,帮助学习者更好理解数据挖掘的概念、基本知识与基本方法。前面各大公司开发的软件也给我们启示,首先要研究一些最基本、最体现数据挖掘基本概念的实验工具。 1.聚类分析是一种分类的分析方法。按照个体的显著特征将它们分成不同的类别,使同一类别中的个体具有较高的相似性,而不同的类别之间则应具有较高的不相似性。 2.关联分析主要是挖掘隐藏在数据之间的相互关系。它在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构,通过分析数据或记录间的关系,决定哪些事情将一起发生。它能将复杂的信息与数据简单化,挖掘出其中的关联关系,而Apriori算法是关联规则挖掘的经典算法,也是目前数据挖掘领域里应用比较广泛的算法。由于数据挖掘这个命题就和这一内容相关,因而具有重要性 3.决策树技术是数据挖掘技术中经常被使用的一种技术,它可以用来对数据进行分析,也可以用来作预测,它以树的形式表现在一个决策中多个条件因子的相互关系与重要程度,从而使决策更具有准确性与科学性。 4.回归分析研究两个或多个变量的相互依存关系,在银行、保险、电信、电子、化工、医药、钢铁等几乎所有行业都有应用需求,它可以帮助我们判断一个因素对另一个因素的影响有多大,可以得到拟合率极好的回归方程,使得预测和控制更加准确可靠。 本课题准备在这4个方面进行研究,设法获得一个实验工具能用在以上问题教学中,要求既可对数据库中数据又可对纯文本数据进行数据挖掘操作,要求能表现数据挖掘中间过程与步骤,要求操作简单,对环境要求低能适应课堂演示教学的需要。 这一课题要求能对纯文本数据进行数据挖掘操作,使得可以在各种课堂环境中进行演示操作,于改进教学手段与教学方法,提高教学效果,提高学生动手能力等方面的意义是显而易见的。要求能对一般数据库进行数据挖掘操作,降低操作难度,无需数据仓库支持,在实际管理系统中都能应用,其实用价值也很大。 本课题要求基于Windows操作系统环境开发,主要应用于SQLServer数据库与纯文本文件数据的数据挖掘。程序设计语言采用java(jdk1.6及以上版本)。要求提交的是可执行jar文件。 第2章K-means聚类分析实验程序设计 2.1K-means聚类分析简介 K-means聚类分析方法目的是将一个数据集合分成一组聚类,通过赋给不同分类不同的中心点,通过计算欧氏距离判断应该将这些数据放在哪个类别中,使得这些不同类中的数据尽可能地不相似和相隔距离较远,而又要保证同一个类中的数据尽可能地相似和相隔距离较近。 算法采用误差平方和准则函数作为聚类准则函数。 该种算法是一种基于样本间的相似性度量的聚类方法,是属于非监督学习方法一类。它以m为参数,把a个对象分为m个簇,以同一个类中具有较高的相似性,而不同类间的相似性较低。相似性的计算根据一个类中对象的平均值来进行。此算法通过多次迭代运算来完成分析,首先随机选择m个对象,每个对象代表一个聚类的质心。然后对于其余对象,根据该对象与各类的质心之间的距离,把它分配到与之最相似的聚类中。然后,计算每个新聚类的新质心。重复上述过程,直到准则函数收敛。 2.2K-means算法求解步骤 1选取k个中心点,本次实验是将前面的第i个数据赋值为第i个分类的中心点。 2遍历所有数据,算出每个数据到各个分类中心点的欧氏距离,然后再根据这个距离将每个数据划分到最近的中心点所在的分类中。 3计算每个聚类的平均值,并作为新的中心点。 4重复2-3,直到这k个中心点不再变化(收敛了),或迭代次数达到了预期迭代次数。 2.3概要设计 1.程序流程图如图2.1所示。首先是从文本文件或数据库中导入数据,然后根据预期分类数,选定头几个数据为各分类的中心点,然后进入循环,根据设定预期迭代次数,当迭代次数小于预期时,根据各个数据到各个分类中心点的距离,将各个数据分到相应的类中,再进行循环条件的判断,当迭代次数达到时,便完成迭代,退出程序,输出结果。 2.数据结构 纯文本文件数据要求:要求由数字数据构成,数据成一列,每行一个数据,可以为整型数,也可以为双精度数据。如图2.2所示。 如果以数据库为数据源,首先要求建立ODBC数据源,指向一个数据库,被研究对象可以是任意数据表,要求针对其中数字数据类型字段数据操作,例如欲分析成绩数据中成绩分布情况,希望知道是否存在某些个区间数据特别集中的区域,这样的区间是二个、三个、……,各区间数据分布的具体情况等,则可以以成绩表为分析对象,分析时需要指定字段名为分数,另外可以以全部数据,也可以选择个人、班级、课程或其他条件先对数据进行预筛选之后再进行分析。需要先确定分2类、分3类、……,再确定各类中数据情况。 实验用数据内容部分如图2.3所示。 2.4数据库为挖掘对象的程序设计 1.界面设计。 设计界面包括二部分,关于分析结果输出界面在本文实验应用效果一节中介绍。数据源数据选择界面如图2.4所示。 其中数据表名可以选择一个表,也可以选择多个表,如果选择多个表,要求能实现自然连接。程序在识别操作者选择了多个表时自动进行连接,变成一个表。 当操作者选择了表名后。在选择字段名下拉组合框中与字段列表列表框中显示所有可供选择的字段名称。操作者通过字段名下拉组合框、选择关系符下拉组合框、输入数据值可以一个个选择或输入条件表达式的主要元素,点击添加条件按钮可以将所选或所输入数据组合成符合SQL语言规则的条件语句放到条件文本域框中,可以类似形成多个条件,之间用括号、and、or等连接形成一个条件表达式,用于筛选数据,找出欲分析的数据对象。 操作者通过字段列表选择某一个具体欲进行分析的字段,例如分数,做好数据分析的数据准备。 2.程序设计 1)连接数据库、选择数据表、自动建立连接, 其主要代码: try{//接jdbc驱动 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connectioncon=DriverManager.getConnection(jdbc:odbc:slq1); Strings=select+字段名+from+表名+where+条件式; sta3=dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSetrs=sta3.executeQuery(s); …… 2)读取数据到数组中,主要代码: rsmd3=rs.getMetaData(); variabl2045=rsmd3.getColumnCount();//获取列数 variabl1739=newString ;//定义列名数组variabl2685=newString ;//定义列数据类型数组 variabl1309=newint ;//定义列数据宽度数组 for(inti=0;ivariabl2045;i++){ variabl1739 =rsmd3.getColumnName(i+1); variabl2685 =rsmd3.getColumnTypeName(i+1); variabl1309 =rsmd3.getColumnDisplaySize(i+1); introwNumber=0;//记录条数 rs.last(); rowNumber=rs.getRow(); String ; variabl1375=newString ;//数据内容 rs.absolute(1); c=0;//行号 b=0;//列号 while(crowNumber){ rs.absolute(c+1); while(bvariabl2045){ variabl1375 =rs.getString(b+1); 记录 =variabl1375 ; b++; } } …… 3)进行数据分析并图形显示,见下面内容。 2.5纯文本文件数据为挖掘对象的程序设计 1)读取文件内容到数组中 publicvoidfocusLost(FocusEventarg0){ try{ 纵向最大值=0;纵向最小值=0; 横向最大值=0;横向最小值=0; FileReaderfs=newFileReader(fb1.getText()); BufferedReaderbr=newBufferedReader(fs); StringtempStr=null; 记录1=newString ; 列宽 =200; for(inti=0;(tempStr=br.readLine())!=null;i++){ 记录1 =tempStr; 记录数=i+1; } fs.close(); }catch(IOExceptione1){ e1.printStackTrace(); } } }); 2)显示数据表格按钮将读出的数据按照所预设的分类数用表格形式显示,表格的列数等于分类数加1. 预期分类数=Integer.parseInt(fa0.getText()); 记录条数=记录数; 表格列数=预期分类数+1; 列宽=newint ; 表格列名=newString ; 表格列名 =原始数据; 列宽 =100; for(inti=1;i表格列数;i++){ 表格列名 =第+i+类数据; 列宽 =100; } String ; 表格数据=newString ; for(inti=0;i记录条数;i++){ 表格数据 =记录1 ; } 3)迭代显示分类结果 预期迭代次数=Integer.parseInt(fa1.getText()); 预期分类数=Integer.parseInt(fa0.getText()); 中心位置=newdouble ; int ; double较小值=0;//计算到某一个分类中心位置的平均距离最小值 double和=0; for(inti=0;i预期分类数;i++){ 中心位置 =Integer.parseInt(表格数据 ); } 由于刚开始时,除了原始数据那一列之外,别的列都是没有数据的,因此也没有办法计算各列的中心位置是多少,所以可以先将原始数据那一列里面的第i行数据作为后面对应的第i+1列的中心位置使用。 for(inti=0;i预期迭代次数;i++) { for(inti2=0;i2预期分类数;i2++) { for(intj=0;j记录条数;j++) { 表格数据 =; } } 各类元素数=newint ;//每次迭代新各类元素数置0 //以下按距离中心的距离大小将表格数据归到相应类中 较小值=0;//计算到某一个分类中心位置的平均距离 int临时分类号=0; inty=0; doublez=0; for(intj=0;j记录条数;j++) { for(intk=0;k预期分类数;k++) { if(k==0) { 临时分类号=0; y=Integer.parseInt(表格数据 ); 较小值=Math.sqrt((y-中心位置 )*(y-中心位置 ));//计算相距方均值 } else { y=Integer.parseInt(表格数据 ); z=Math.sqrt((y-中心位置 )*(y-中心位置 ));//计算相距方均值 if(z较小值) { 较小值=z; 临时分类号=k; } } } 表格数据 ] =表格数据 ; 各类元素数 ++; } 上面的程序根据原始数据那一列的各个数据到后面各中心点的位置相隔的距离判断应该将这一个数据放到哪一列,依次设定迭代次数为1、2、……,可以清楚地观看分类全过程直到结束。由于会运行迭代多次(可以设定迭代次数),所以每次运行时确定的分类号都是临时分类号,而且由于在判断每一个数据样本到第一个分类的距离(即到中心位置 的距离)时没有可比较的对象,所以在k=0时,只计算了距离,而没有判断到哪一个分类,因为此时还无法判断,只有当k0时,才可以与前面的距离进行比较,等和所有的中心点比较之后,便可以得出这个数到哪个中心点距离最近,以便确定应该将这个数放在哪一类里面最合适。 最后的两句代码是确定应该将这个数放在哪一类之后,将这个表格中第一列的第j个数据放在那个类中,由于这个元素的加入,那个类中的元素数也应该加1。 for(inti1=0;i1预期分类数;i1++) { 和=0; for(intj1=0;j1各类元素数 ;j1++) 和=和+Integer.parseInt(表格数据 ); 中心位置 =和/各类元素数 ; } 在每一次迭代之后,都会生成一次分类,一次分类完成后,都会根据各个分类里面的元素值求得这个类别的总和是多少,然后根据总和和这个类别里面有几个元素确定这个类别的中心位置是多少,同理便可以得出新一轮的中心位置数组,以便下一次迭代时使用。 2.6测试及应用 1.针对图2.3和2.4对成绩表数据库课程聚类分析结果 1)取得的数据及输出界面如图2.5所示 2)迭代第1次、第2次、第3次结果及图形显示的数据分布情况如图2.6所示: 从实验过程可以看到,当迭代2次及以后,数据分类就趋向于稳定,得到最终分类结果。从图形显示分类情况可以直观地了解聚类分析的意义。 2、对文件数据聚集分析程序的测试 设计了6个文件用例对本程序进行测试:a1.txt——a6.txt,下面给出这些文件的内容和聚类条件,并运行出迭代结果。 1)a1.txt内容如图2.7所示 聚类条件:预期分类数:2 预期迭代次数:5 运行结果如图2.8所示: 2)a2.txt数据如图2.9所示: 聚类条件: 预期分类数:3 预期迭代次数:6 运行结果如图2.10所示: 3)a3.txt数据如图2.11所示; 聚类条件: 预期分类数:4 预期迭代次数:6 运行结果如图2.12所示: 从以上测试结果证明设计正确,对于不同数据分布、对于不同分类要求、对于不同迭代次数,都能符合实际数据聚合分类的结果。 第3章ID3分类实验程序设计 3.1ID3分类分析简介 常见的数据分类问题例如: 在银行业中,分类方法可以辅助将正常信用卡用户和欺诈行为信用卡用户分类。 在医疗诊断中将正常细胞和癌变细胞分类,使能及时制定正确可靠的治疗方案。 在网络运行中区分正常邮件与垃圾邮件,制定有效垃圾邮件过滤机制。 分类过程可用图3.1描述。 首先输入数据、对数据进行量化 数据可以是图像(例如文字、指纹、照片)、可以是波形(例如脑电图、心电图、震动波形)、也可以是物理数据或逻辑数据。 物理数据可为数值型数据,也可为描述型数据。逻辑数据指描述型数据,可以为描述,也可表示为逻辑值。 对于图像、波形等复杂数据,需要量化才能为计算机处理。 预处理指去除噪声数据、对空缺值进行处理、数据集成或者变换 某些数据集包含的属性个数很多(即维数很高),存在冗余,需要将维数较高的样本空间转换为维数较低的样本空间,求得最能反映分类本质的那些特征或者属性。 分类器设计包括划分数据集,给数据集加类标号。它利用训练集总结分类规律性,建立判别公式或判别规则。分类器设计完毕先要经历分类器测试,利用测试集评估分类器的分类性能。再将分类得到的类标号和测试集中数据样本的原始类标号对比,以评估分类器的分类性能。 ID3算法是由Quinlan第一次提出。该算法是以信息论为基础,以信息熵和信息增益度作为衡量标准,从而实现了对数据的归纳分类。 其基本方法是选择具有最高信息增益的描述属性作为给定数据集X的分枝属性创建决策树的一个节点。再根据该描述属性的不同取值创建分枝,之后对各分枝中的样本子集递归调用上述方法建立该节点的各个子节点。当某个分枝上的所有样本都属于同一个类别时划分就会停止。或者,当某个分枝上的所有样本都不属于同一个类别,但同时又没有剩余的描述属性来进一步划分数据集时,也会形成叶节点,并且就会用多数样本所属的那个类别来标记这个叶节点。这样便可建立决策树,用于决策辅助。 3.2ID3算法求解步骤 分类问题中使用的数据集可以表示为X={(xi,yi)|i=1,2,…,total} xi=(xi1,xi2,…,xid),其中xi1,xi2,…,xid分别对应d个描述属性A1,A2,…,Ad的具体取值 yi表示数据样本xi的类标号,假设给定数据集包含m个类别,则yi∈{c1,c2,…,cm},其中c1,c2,…,cm是类别属性C的具体取值 未知类标号的数据样本x用d维特征向量x=(x1,x2,…,xd)来表示 数据集(表)中每一条记录是一个训练样本。 分析步骤为: 1)收集当前的例子来计算信息增益属性; 2)选择信息增益最大的属性k; 3)把在k处取值相同的样本归于同一子集中,k取到几个值就会得到几个子集; 4)在返回值的每一个序列的情况下,递归调用的结果是该算法的一个子集; 5)如果子集包含一个属性,用适当的符号确定该属性的值,以及到叶节点的一个分支,然后返回给调用者。 3.3概要设计 1.ID3算法求解程序流程如图3.2所示。 2.文本文件数据结构 纯文本文件数据要求:要求由若干行数据构成,第一行为各列标题,其他行为训练数据。每行由数量相等的若干数据构成,数据间用TAB空格符分隔。最后一列数据为目标数据,称为类数据;其他列数据称为描述属性数据。如图3.3所示是一个关于是否去看病的一个决策问题的训练数据。希望能建立决策树,当知道天气情况与温度情况,同时了解了一个人是否经常锻炼与抵抗力情况后,能给出他是否会去看病的判断。 3、数据库数据结构 如果以数据库为数据源,被研究对象可以是任意数据表,要求能选择满足条件的一个表或连接多个表得到的表中若干字段数据,其中所选择的最后一个字段为类属性字段,其他字段为描述属性字段。 例如建立关于是否看病的数据表,其字段构成与图3.3表中数据结构相同,最后一个字段“是否看病”为类属性字段。要求能选择这样的表中满足某种条件的数据,取全部字段进行分析。 3.4数据库为挖掘对象的程序设计 1.界面设计。 界面与聚类分析程序界面相同,只是要求,选择字段允许且必须是多个字段。如图3.4所示。 2.程序设计 内容与2.4节2的内容相同。 3.5纯文本数据文件为挖掘对象的程序设计 程序流程: 程序包括计算条件熵子程序、显示决策树图形程序。主程序首先建立初始数据表,再调用计算熵子程序,求出当前各描述属性之熵值,取其最小者为当前节点。保存该节点名称、层次属性、本层顺序属性、计算熵值有关表达式。 根据当前节点有关数据列中数据种类得到每一类表格数据,在每一类中删除当前节点有关数据列,再分别调用计算熵子程序,分别得到下层各枝节点有关描述属性之熵值,分别得到这些节点属性名。再迭代分别求每一分支节点的下一层节点,直到最后一个描述属性。每得到一个节点,保存该节点名称、层次属性、本层顺序属性、计算熵值有关表达式。 遍历所有节点名称属性、层次属性、本层顺序属性,计算其图形位置,在每节点前叙属性数据基础上增加图形位置属性数据并保存。根据位置属性数据与名字绘制决策树。 如果右键点击某个节点,显示该节点计算熵值有关表达式的内容。 1.读取文本文件中数据放到表格中。 variabl1591=记录数; variabl1737=列宽.length; int ;//定义列数据宽度 scrollPane=newJScrollPane(); scrollPane.setBounds(810,70,400,430); model=newDefaultTableModel(variabl1375,variabl2593);//设置表格数据 table=newJTable(model); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); scrollPane.setViewportView(table);//设置滚动条 frame1.getContentPane().add(scrollPane,BorderLayout.CENTER); inset=frame1.getInsets(); } }); 2.计算条件熵程序段 1)声明变量 String最小属性=; String s1=null;//存放类属性数据,去掉重复值 String t1=null;//存放类属性某数据重复个数 int .toString());//类属性集合 } if(j0){//描述属性集合 set2.add(variabl1375 .toString());//第i列数据置入 } } if(i==0){ 类属性个数=set1.size(); s1=newString ; s1=set1.toArray(newString ); t1=newint ; } 描述属性个数=set2.size(); s2=newString ; s2=set2.toArray(newString ); t2=newint ; t20=newint ; for(intj=0;jvariabl1591;j++){ for(intk=0;k类属性个数;k++){ if((i==0)(s1 .equals(variabl1375 ))){ t1 ++;//存放类属性某数据重复个数 } } for(intk=0;k描述属性个数;k++){ if(s2 .equals(variabl1375 )){ t2 ++;//存放描述属性某数据重复个数 for(intk1=0;k1类属性个数;k1++){ if(s1 .equals(variabl1375 )){ t20 ++;//存放某一个描述属性某属性值数据重复个数 } } } } } 3.计算熵并保存将来显示计算熵值有关表达式的内容 显示内容=显示内容+variabl2593 +条件熵=; intk1=0,k=0; double ; double ; double ; double计算值2=0; double计算值=0; double值=0; 显示内容1=; for(k=0;k描述属性个数;k++){ 显示内容=显示内容+-+t2 +/+variabl1591+*(; 显示内容1=显示内容1+++t2 +/+variabl1591+*(; 计算值0 =t2 /variabl1591; 计算值=0; doublex=0; for(k1=0;k1类属性个数;k1++){ 显示内容=显示内容+t20 +/+t2 +*ln(; 显示内容1=显示内容1+t20 +/+t2 +*; x=(t20 +0.0000)/t2 ; if(x0.001)x=0.001; 对数值 =-(Math.log10(x)/Math.log10(2)); 显示内容=显示内容+t20 +/+t2 +); 显示内容1=显示内容1+(对数值 +).substring(0,8); if(k1类属性个数-1)显示内容1=显示内容1++; 计算值1 =对数值 *x; 计算值=计算值+计算值1 ; if(k1类属性个数-1)显示内容=显示内容++; } 显示内容=显示内容+); 显示内容1=显示内容1+); 计算值2=计算值2+计算值*t2 /variabl1591; 值=值+计算值*t2 /variabl1591; } 显示内容=显示内容+)+x1+x2+=; 显示内容1=显示内容1+)+x1+x2+=; 显示内容=显示内容+显示内容1+值+x1+x2; if(值variabl1579){ variabl1579=值; 最小属性=variabl2593 ; } 值=0; } 显示内容=显示内容+x1+x2+比较上述数据,可见+最小属性+的条件熵最小,其值为:+variabl1579+。选为下一级的根。; } }); 3.6测试完成情况及应用 运行本程序根据图3.3得到的决策树如图3.5所示。 右键点击根节点可看到表中数据与计算各描述属性条件熵的情况如图3.6所示。 右键点击其他节点所得到的根下各节点所计算的表与条件熵计算情况: 天气晴数据子集 天气阴数据子集 可见已经到叶节点,无论温度如何或其他条件如何均会去看病 天气雨数据子集 天气晴温高数据子集 天气晴温中数据子集 天气晴温低数据子集 天气雨温高无数据 天气雨温低数据子集 从测试结果可以看到,本程序无论基于数据或基于文件,都能快速、正确得到决策树,并且可以看到计算条件熵、求取决策树的全过程,可以直观看到计算条件熵的计算式与运行结果。。 第4章Apriori算法进行关联分析实验程序设计 4.1Apriori算法进行关联分析简介 数据关联是数据库中存在的一类重要的可被发现的知识。若两个或两个以上变量的取值之间存在规律性,就称为据有关联关系。关联分析的目的是挖掘出隐藏在数据间的相互关系,它能发现数据库中形如“90%的顾客在一次购买活动中购买商品A的同时购买商品B”之类的知识。关联规则是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构,通过分析数据或记录间的关系,决定哪些事情将一起发生,关联规则在整个社会乃至整个世界应用之广泛,它的重要性是无可比拟的,它能将复杂的信息与数据简单化,挖掘出其中的关联关系,而Apriori算法是关联规则挖掘的经典算法,也是目前数据挖掘领域里应用比较广泛的算法。 Apriori是关联规则挖掘算法中最为经典的一个算法,有很多的关联规则挖掘算法都是以它为基础来设计的。它利用了频繁项集性质的先验知识,利用一种称为逐层迭代搜索的方法来找出所有的频繁项集,即用k-项集用于搜索(k+1)-项集。为了提高迭代搜索的效率,Apriori算法使用了下述性质来压缩搜索空间。 性质1:若X为频繁项目集,则X的所有子集都是频繁项目集。 性质2:若X为非频繁项目集时,则X的所有超集都是非频繁项目集。 其典型的一个应用问题是:如果知道销售表,可以得到一段时间内各个顾客所采购的商品情况,例如图4.1所示。 希望能分析出这样的问题:顾客购买那些商品存在关联性,或通俗的说,如果顾客购买了某种商品,则他们同时购买另一种商品的概率是否超过某个值(例如50%)? 这就是关联分析需要解答的问题之一。需要设计能解答这类问题的实验程序。 4.2Apriori关联分析算法 假定某超市销售的商品包括:面包、啤酒、蛋糕、奶油、牛奶和茶。 设I={i1,i2,…,ik}是k个不同项目的集合,每个in(k=1,2,……,n)称为一个项目。 项目的集合I称为项目集合,简称为项集。其元素个数就是项集的长度,长度为n的项集便称为n-项集。 上例中,每个商品是一个项目,项集是I={面包,啤酒,蛋糕,奶油,牛奶,茶}为6-项集。 项集情况如图4.2所示。 每笔交易T都会是项集I上的一个子集,即TI。 对应的每一个交易都会有一个唯一的标识:交易号,记作TID 交易的全体便构成了交易数据库D,也可以称为交易记录集D,简称为交易集D。 交易集D中包含交易的个数记为|D|。 例如:T1面包、奶油、牛奶、茶;TID=T1; T1={面包、奶油、牛奶、茶};D为表全部数据;|D|=10 对于项集X,XI,将count(XT)设定为交易集D中包含X的交易的数量 项集X的支持度support(X)便是项集X出现的概率, 以此来描述了X的重要性。 例如2-项集{面包,牛奶}出现在T1、T2、T5、T9、T10中5次,即 count(X)=count(T1,T2,T5,T9,T10)=5 我们希望知道的购买一种商品同时购买另一种商品的概率为最小支持度。如果一种所需要的项集,支持度大于或等于最小支持度称为频繁项集,简称频繁集,反之则称为非频繁集。通常k-项集如果满足最小支持度,称为k-频繁集,记作Lk。 Apriori算法首先产生1-频繁集L1,再经连接、修剪产生2-频繁集L2,……,直到无法产生新的频繁集时终止。 例如,面包、啤酒、蛋糕、奶油、牛奶和茶的1-候选频繁集为:{面包}、{啤酒}、{蛋糕}、{奶油}、{牛奶}和{茶},各自在交易中出现的次数分别为7、1、2、3、8、7,交易数为10,即它们支持度(Support)各为8/10、1/10、2/10、3/10、8/10、7/10。如果规定最小支持度为0.5,则1-频繁集L1为{面包}、{牛奶}、{茶}。 再对面包、啤酒、蛋糕、奶油、牛奶和茶求2-候选频繁集为:{面包,啤酒}、{面包,蛋糕}、{面包,奶油}、{面包,牛奶}、{面包,茶}、{蛋糕,奶油}、{蛋糕,牛奶}、{蛋糕,茶}、{奶油,牛奶}、{奶油,茶}、{牛奶,茶} 各自在交易中出现的次数分别为1、1、3、5、5、0、1、0、3、2、5,交易数为10,如果规定最小支持度还是为0.5,则2-频繁集L2为{面包,牛奶}、{面包,茶}、{牛奶,茶}。 如果查3-频繁集L3,在2-候选频繁集基础上组合,只连接有共同项的那些2-候选频繁集,例如{面包,啤酒}、{面包,蛋糕}可连接,有共同的面包,连接得到{面包,啤酒,蛋糕}。而{面包,茶}、{蛋糕,奶油}不可连接,它们没有共同项。 由此可得3-候选频繁集:{面包,啤酒,蛋糕}、{面包,啤酒,奶油}、{面包,啤酒,牛奶}、{面包,啤酒,茶}、{面包,蛋糕,奶油}、{面包,蛋糕,牛奶}、{面包,蛋糕,茶}、{面包,奶油,牛奶}、{面包,奶油,茶}、{蛋糕,奶油,牛奶}、{蛋糕,奶油,茶}、{蛋糕,牛奶,茶}、{奶油,牛奶,茶}。 根据频繁集的子集一定是频繁的进行修剪,对每一个3-候选频繁集分析,看其所有子集都在L2中,如果在则加入到3-频繁集中。 另一种办法是只对2-频繁集进行组合,得到3-候选频繁集{面包,牛奶,茶}。再找出3-频繁集,如果规定最小支持度还是为0.5,则不存在3-频繁集。 4.3概要设计 1.程序流程图如图4.3所示。 首先读取数据库或文件中数据内容,如果是类似于图4.1的数据,先要选取满足条件的记录,从中找出某个字段,例如商品品名列,再根据同一人同一次(同一时间)购买的商品列为一个项集。以表格形式显示该项集表,根据预定的最小支持度和欲分析的项集数,求取最小频繁集并显示出来。 2.数据结构 纯文本文件数据要求:要求数据成一列,每行多个数据,均为字符串,用逗号分隔。如图4.4所示。 如果以数据库为数据源,首先要求建立ODBC数据源,指向一个数据库,被研究对象可以是任意数据表,要求针对其中某字段数据操作,例如销售表中选择商品品名字段。要求先根据某条件决定分组,例如图4.1销售表分析中需要先根据顾客姓名和日期分组,将每组购买的所有商品品名用逗号分隔,连接成一个字符串,得到如图4.2数据表形式显示在表格中。 因此,数据表结构要求能实现如上变换,需要有某个目标字段,有构成分组条件的字段。这些字段中数据不允许空值。 4.4数据库数据关联分析的程序设计 1.界面设计。 数据源数据选择界面如图4.5所示。 其中数据表名可以选择一个表,也可以选择多个表,如果选择多个表,要求能实现自然连接。程序在识别操作者选择了多个表时自动进行连接,变成一个表。当操作者选择了表名后。在选择字段名下拉组合框中与字段列表列表框中显示所有可供选择的字段名称。操作者通过字段名下拉组合框、选择关系符下拉组合框、输入数据值可以一个个选择或输入条件表达式的主要元素,点击添加条件按钮可以将所选或所输入数据组合成符合SQL语言规则的条件语句放到条件文本域框中,可以类似形成多个条件,之间用括号、and、or等连接形成一个条件表达式,用于筛选数据,找出欲分析的数据对象。 操作者通过字段列表选择某一个具体欲进行分析的字段,例如商品名;再确定分组字段,分组字段可以为多个字段,彼此间用逗分隔。做好数据分析的数据准备。 2.数据库数据关联分析程序设计 1)查找记录主要代码: Strings=variabl17072.getText(); int数据条数=0; String ; if(variabl17073.getText().length()0){ String +,)0) s=s0 +,+s; } s=select+s+from+variabl17071.getText(); if(variabl2223.getText().trim().length()0)//加条件表达式 s=s+where+variabl2223.getText().trim(); if(variabl17073.getText().length()0)//加分组要求(排序) s=s+orderby+variabl17073.getText(); try{ dbConn=main4.getConn();//连接数据库 sta3=dbConn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSetrs=sta3.executeQuery(s); 2)得到供分析数据显示在表格中, introwNumber=0;//记录条数 rs.last(); rowNumber=rs.getRow(); variabl1375=newString ;//数据内容 rs.absolute(1); c=0;//行号 b=0;//列号 Strings2=,s3=,s4=; s5 =; while(crowNumber){ rs.absolute(c+1); while(bvariabl2045){ variabl1375 =rs.getString(b+1); b++; } s2=; for(intj=0;j分组字段数;j++){ s2=s2+variabl1375 ; } variabl1375 =s2; c++; b=0; } 3纯文本文件数据关联分析程序设计 1)求取项集 预期分类数=Integer.parseInt(fa0.getText()); 记录条数=记录数; 表格列数=预期分类数+1; 需要预先确定最小支持度数,例如0.2。 主要代码: String ; String显示数据=; intk=0; for(inti=0;ivariabl1591;i++){ s10=variabl1375 .toString().split(,);//求元素 for(intj=0;js10.length;j++){ set1.add(s10 );//通过set去除重复元素 } } 元素个数=set1.size(); 元素个数2=set1.size(); 元素=set1.toArray(newString ); 元素1=set1.toArray(newString ); 元素2=set1.toArray(newString ); int元素次数 ; for(inti=0;i元素.length;i++) for(intj=0;jvariabl1591;j++){ if((,+variabl1375 +,).indexOf(,+元素 +,)=0){ 元素次数 ++; } } for(inti=0;i元素.length;i++)//按元素出现次数从大到小排序 for(intj=0;j元素.length-i-1;j++){ if(元素次数 元素次数 ){ s=元素 ; k=元素次数 ; 元素 =元素 ; 元素次数 =元素次数 ; 元素 =s; 元素次数 =k; } } 2)计算求取频繁集 主要代码: 最小支持度=Float.parseFloat(fa0.getText())*元素数; 频繁集=1项集:; int元素个数0=0; for(inti=0;i元素.length;i++){//保存一项集 元素2 =元素 ; if(((元素次数 +0.0)/variabl1591)=最小支持度){ 频繁集=频繁集+{+元素 +:+元素次数 +}; 元素个数0++; } } 频繁集=频繁集+x1;//+x2; //以下对所有记录中元素按元素 顺序排列 int ; for(inti=0;ivariabl1591;i++){//将元素名变为序号 s10=variabl1375 .toString().split(,);//求元素 variabl1375 =; variabl1117=newint ; for(intj=0;js10.length;j++){ s=s10 ; for(inti1=0;i1元素.length;i1++){ if(s.equals(元素 )){ variabl1117 =i1; } } } Arrays.sort(variabl1117);//从低到高排序 for(intj=0;js10.length;j++){ if(js10.length-1) variabl1375 =variabl1375 +元素 ]+,; else variabl1375 =variabl1375 +元素 ]; } } for(inti=0;ivariabl1591;i++){ variabl1375 =variabl1375 ; } model=newDefaultTableModel(variabl1375,variabl2593); table=newJTable(model);//重新显示表格数据 for(inti=0;ivariabl1737;i++){ TableColumntc=table.getColumn(variabl2593 ); if(i==0)tc.setPreferredWidth(50);//设置表格中各列的宽度 elsetc.setPreferredWidth(760); } scrollPane.setViewportView(table); //以下计算并显示项集与频繁集 String ; for(inti=0;i元素个数0;i++) 元素0 =元素 ; p1(2,元素个数0,元素0);//以下从2项集开始计算 System.out.println(频繁集=+频繁集); jta1.setText(频繁集=+频繁集); } 4.5测试及应用 1.针对图4.3分析结果 1)取得的数据及输出界面如图4.6所示。 2)计算得到的频繁集 当最小支持度为0.2时 显示频繁集 频繁集=1项集:{牛奶:9}{蛋糕:8}{面包:7}{茶:6}{奶油:4} 2项集:{牛奶,面包:5}{牛奶,蛋糕:5}{蛋糕,茶:3}{蛋糕,面包:4} 3项集:{牛奶,蛋糕,面包:3} 当最小支持度为0.5时 显示频繁集 频繁集=1项集:{牛奶:9}{蛋糕:8}{面包:7} 2项集: 可见没有支持度在0.5及以上的二个以上商品相关的频繁集。 第5章一元线性回归分析实验程序设计 5.1线性回归分析简介 回归分析是对两个或多个变量间的定量关系、相互依存关系的分析。回归分析可以帮助人们判断哪些因素的影响是最显著的,而哪些因素的影响是不显著的,同时还可以利用求得的回归方程来进行预测和控制。其中最简单的是一元线性回归分析,指成对的两个变量数据的散点图呈现出直线趋势时,采用最小二乘法,找到两者之间的经验公式,即一元线性回归预测模型,根据自变量的变化,来估计因变量变化的预测方法。 5.2一元线性回归分析算法 1、选取一元线性回归模型的变量; 2、绘制计算表和拟合散点图; 3、计算变量间的回归系数及其相关的显著性; 4、得到一元直线拟合曲线。 5、根据拟合曲线,计算当自变量为某值时,预测因变量的值。 所得到的拟合曲线是否合理,需要做模型检验。包括: 1、经济意义的检验:根据模型中各个参数所包含的经济含义,分析各参数的值是否与分析对象所包含的经济含义相符合。 2、回归标准差检验 3、拟合优度检验 4、回归系数的显著性检验 应用线性回归方程进行模型预测的方法可以分为:点预测和置信区间预测法 1、点预测法:将自变量取值带入回归预测模型求出因变量的预测值。 2、置信区间预测法:先估计出一个范围,然后确定该范围会出现的概率。置信区间的大小的影响的因素:a、因变量估计值;b、回归标准差;C、概率度t。 求一元线性回归直线计算步骤: 1.,列计算表求∑x,∑xx,∑y,∑yy,∑xy。 2.计算Lxx,Lyy,Lxy Lxx=∑(x-xˇ)(x-xˇ) Lyy=∑(y-yˇ)(y-yˇ) Lxy=∑(x-xˇ)(y-yˇ) 3.求相关系数,并检验; r=Lxy/(LxxLyy)1/2 2.求回归系数b和常数a; b=Lxy/Lxx a=y-bx 4.得到回归方程。 Y=bx+a 5.3数据结构设计 纯文本文件数据要求:要求由数字数据构成,数据成二列,每行二个数据,用TAB空格分隔,二个数据可以为整型数,也可以为双精度数据。如图5.1所示。 如果以数据库为数据源,被研究对象可以是任意数据表,要求针对其中二个数字数据类型字段的数据展开分析,例如欲分析合金质量表中含碳量对于抗拉强度的影响情况。合金质量表数据情况如图5.2所示。 5.4程序设计 1.回归方程参数计算与求取回归方程。 intx=0,y=0; intw0=5,h0=5; floatx和1=0f,y和1=0f,xy和1=0f,x平方和1=0f; floatx平均1=0f,y平均1=0f,Lxx1=0f,Lxy1=0f; for(inti=0;i记录条数;i++){ x和1=x和1+横向数据 /横向系数; y和1=y和1+纵向数据 /纵向系数; xy和1=xy和1+横向数据 *纵向数据 /纵向系数/横向系数; x平方和1=x平方和1+横向数据 *横向数据 /横向系数/横向系数; floatyyy=(纵向数据 -纵向最小值)*纵向单位数据长度; yyy=可用高度+Y线到顶距-yyy; floatxxx=(横向数据 -横向最小值)*横向单位数据长度+Y线左边距; //打点 g.fillOval((int)xxx,(int)yyy,w0,h0); } x平均1=x和1/记录条数; y平均1=y和1/记录条数; Lxx1=x平方和1-x和1*x和1/记录条数; Lxy1=xy和1-x和1*y和1/记录条数; String回归方程1=回归方程1=+Y=+(y平均1-Lxy1*x平均1/Lxx1)+++(Lxy1/Lxx1)+x; 2.显示一元线性回归图形 g.setColor(Color.BLACK); intvariabl1609=variabl1585-100; floatvariabl1351=(float)((variabl2653-variabl2655))/(variabl1581); floatvariabl1353=(float)(variabl1609)/(variabl2653-variabl2655); intvariabl1615=60; intvariabl1617=60; floatvariabl1297=(float)((variabl1291-variabl1293))/(variabl1299); floatvariabl1295=(float)((variabl1583-200))/(variabl1291-variabl1293); Graphics2Dg2=(Graphics2D)g; g2.setStroke(newBasicStroke(2f)); g.drawLine(variabl1615,variabl1617-10,variabl1615,variabl1609+variabl1617+5);//纵坐标线 g.drawLine(variabl1615,variabl1617-15,variabl1615-3,variabl1617); g.drawLine(variabl1615,variabl1617-15,variabl1615+2,variabl1617); g.setColor(Color.RED); g.drawString(dataStatistic12_1.variabl2593 ,variabl1615+10,variabl1617-5); intx=0,y=0; intw0=5,h0=5;//打点的大小 floatvariabl2671=0f,variabl2673=0f,xvariabl2673=0f,variabl2665=0f; floatvariabl26351=0f,variabl26331=0f,Lxx1=0f,Lxy1=0f; for(inti=0;ivariabl1591;i++){ variabl2671=variabl2671+variabl2651 ; variabl2673=variabl2673+variabl2649 ; xvariabl2673=xvariabl2673+variabl2651 *variabl2649 ; variabl2665=variabl2665+variabl2651 *variabl2651 ; floatyyy=(variabl2649 -variabl2655)*variabl1353; yyy=variabl1609+variabl1617-yyy; floatxxx=(variabl2651 -variabl1293)*variabl1295+variabl1615; g.fillOval((int)xxx,(int)yyy,w0,h0);//显示各数据点 } variabl26351=variabl2671/variabl1591; variabl26331=variabl2673/variabl1591; Lxx1=variabl2665-variabl2671*variabl2671/variabl1591; Lxy1=xvariabl2673-variabl2671*variabl2673/variabl1591; variabl11971=方程:+Y=+(variabl26331-Lxy1*variabl26351/Lxx1)+++(Lxy1/Lxx1)+x; g.drawString(variabl11971,100,variabl1585); floatx2,y2,z1;//x1,y1, x2=(variabl1291-variabl1293)*variabl1295+variabl1615; y2=((variabl26331-Lxy1*variabl26351/Lxx1)+(Lxy1/Lxx1)*variabl1291)-variabl2655; y2=variabl1609+variabl1617-y2*variabl1353; g.setColor(Color.RED); g.drawLine((int)(variabl1615),(int)(variabl1609+variabl1617),(int)(x2),(int)(y2)); //显示回归曲线 5.5测试及应用 运行回归分析程序后显示原数据点的位置、拟合直线、回归方程表达式,如图5.3所示。 测试结果说明如果二个数据间存在类似于直线的关系,运行本程序可以得到回归曲线与回归方程。当知道一个数据的值时可以预测另一个数据的值。 结论 数据挖掘是目前一个热门课题,我们设计了这套实验系统,可以进行聚类分析、ID3决策分析、Apriori关联分析与一元线性回归分析,可以用于课堂演示、实验课程教学,也可以用于一般管理信息系统中对数据库中数据的分析,可以提供辅助决策信息,提高管理质量与效益。这个系统的优点在于操作的简便,分析数据可以放到纯文本文件中,也可以放到数据库中,只需要按照所提供的界面输入必要的字段选择、选择条件定义及其他参数,就能应用SQL语句从数据库中获得供分析数据,或直接从文件中获取供分析数据,之后输入必要的要求参数,程序就可以直接运行了。 基于文件分析的程序的缺点在于它的扩展性,我们所设计的连接数据库的程序可以在连接数据库之后,导入数据再进行聚类分析,数据的量可以十分大可观,也可以更加贴近生活实际,具有实用价值。但是基于文件分析的程序适用条件较低,操作十分简单,用于课堂教学的演示更有优越性。 在这次设计中,用到的知识非常多,包括数据挖掘概念与知识、Java的图形界面设计和Java数据库程序设计,做完之后感觉对以前的知识又巩固了一遍,也是对自己能力的一次提高,希望以后能够有更加多的像这样的实践,做出更好的作品。 参考文献 1.朱福喜.面向对象与JAVA程序设计 .清华大学出版社.2009. 2.CoyS.HorstmannGaryCornell著.《Java核心技术卷I》.机械工业出版社,2010-01-01 3.李刚.疯狂java讲义.电子工业出版社 .2008. 4.谢邦昌著.《数据挖掘基础与应用(SQLServer2008)》机械工业出版社,2012 5.陈文伟著.《数据仓库与数据挖掘教程》清华大学出版社,2011 6.BruceEckel.ThinkinginJava.UpperSaddleRiver,NewJersey,PrenticeHall,2006 7.JiaweiHan.数据挖掘概念与技术.机械工业出版社2001,8 8.W.H.Inmon.数据仓库.机械工业出版社2000,5 9.林字等编著.数据仓库原理与实践.北京:人民邮电出版社,2003 10.张春阳,周继恩,刘贵全,蔡庆生.基于数据仓库的决策支持系统的构建,计算机工程.2002(4):249-252 11.陈德军,盛翊智,陈绵云.基于数据仓库的OLAP在DSS中的应用研究.2003(1):30-31 12黄杰晟,曹永锋.挖掘类改进决策树 .现代计算机(专业版).2010(01) 13.苏新宁,杨建林,江念南,栗湘.数据仓库和数据挖掘 .清华大学出版社,2006年4月第l版. 14.陈文伟.数据仓库与数据挖掘教程 .清华大学出版社,2006年8月第1版. 15.周根贵主编.数据仓库与数据挖掘 .浙江大学出版社,2004年8月第1版. 16.陈文伟.数据挖掘技术 .北京:北京工业大学出版,2002:200-205 17.朱建峰.可视化数据挖掘 .北京:电子工业出版社,2008:301-303. 18.周欣,沙朝锋,朱扬勇等.兴趣度一关联规则的又一个阀值.计算机研究与发展,2000(37),No.5,51-63. 19.高惠璇.实用统计方法与SAS系统 .北京大学出版社.2001-10 20.DavidHand/HeikkiMannila/PadhraicSmyth著.《数据挖掘原理》.机械工业出版社,2003-05-09
个人分类: 生活点滴|3704 次阅读|0 个评论
《深入浅出数据库系统及应用基础》实验手册之11
求新 2016-5-2 12:31
实验 11 使用数据库桌面操作系统程序操作数据库 一、实验目的: 应用各类数据库自带语言(例如 SQL Server 自带的 TSQL )操作数据库设计复杂、难度大、界面与实际应用系统差距大,使得对数据库的基本操作困难较大。应用我们设计的“ 数据库桌面操作系统”调用部件库能快速实现对数据库的操作,易学易用,功能完全,性能优异。 通过本实验可以学习数据库桌面操作系统程序操作方法,了解部件库构成、功能与性能及使用方法。 二、实验要求: 运行数据库桌面操作系统 .jar ,了解使用数据库桌面操作系统 .jar 操作数据库的方法,运行不同部件程序,了解部件库的构成、功能与使用方法。 本系统目前包括 8 个单记录数据维护部件、 11 个表格式数据维护部件、 16 个数据查询部件、 13 个数据统计计算与处理部件、 10 个数据导入部件、 6 个数据导出部件、 7 个打印格式生成部件、 6 个打印预览部件与 4 个报表打印部件。涉及任意数据视图;各种单表或二表的录入、修改、删除数据维护;单条件查询、多条件查询、涉及聚合函数的查询、文本查询;涉及数据完整性控制与安全性控制、数十种统计计算或处理函数;从纯文本文件的各种格式的导入导出、从 EXCEL 、 WORD 、 PDF 、 XML 等类文件的导入导出;简单表格式、文本式、标签式报表的格式制作与打印等。 要求了解各类部件功能、性能、主要参数与使用方法。 三、环境要求与实验准备 1 、环境要求 操作系统: WinDowsXP 及以上 程序语言: JAVA (不要求了解语言,只要求正确安装 jdk1.6 ,正确设置环境变量)。 数据库: SQL Server2008 或其它数据库。 2 、实验准备 将“软件生产线 2.0 版”压缩文件解压。 建立数据库 建立 ODBC 数据源 sql1 ,指向该数据库。 进入数据库,“新建查询”,指向自建数据库,执行如下语句,为实验做好准备。 Create Table Student ( Sno CHAR(5) NOT NULL,Sname CHAR(20),Sage INT,Ssex CHAR(2),Sdept CHAR(2)) Go Create Table Course ( Cno CHAR(2),Cname CHAR(20),Cpno CHAR(2),Ccredit INT) Go Create Table SC ( Sno CHAR(5) NOT NULL,Cno CHAR(2) NOT NULL,Grade INT,PRIMARY KEY(Sno,Cno)) Go INSERT INTO Student VALUES('95001',' 钱横 ',18,' 男 ','CS') INSERT INTO Student VALUES('95002',' 王林 ',19,' 女 ','CS') INSERT INTO Student VALUES('95003',' 李民 ',20,' 男 ','IS') INSERT INTO Student VALUES('95004',' 赵三 ',16,' 女 ','MA') INSERT INTO Course VALUES('1',' 数据库系统 ', '5',4) INSERT INTO Course VALUES('2',' 数学分析 ',null ,2) INSERT INTO Course VALUES('3',' 信息系统导论 ','1',3) INSERT INTO Course VALUES('4',' 操作系统原理 ','6',3) INSERT INTO Course VALUES('5',' 数据结构 ','7',4) INSERT INTO Course VALUES('6',' 数据处理基础 ',null,4) INSERT INTO Course VALUES('7','C 语言 ','6',3) INSERT INTO SC VALUES('95001','1',87) INSERT INTO SC VALUES('95001','2',67) INSERT INTO SC VALUES('95001','3',90) INSERT INTO SC VALUES('95002','2',95) INSERT INTO SC VALUES('95002','3',88) INSERT INTO SC VALUES('95002','1',NULL) 四、实验内容 1 、了解数据库桌面操作系统 .jar 操作界面与功能。 2 、了解表格式数据维护部件的功能与应用。 3 、了解单记录式数据维护部件的功能与应用。 4 、了解查询类部件的功能与应用。 5 、了解数据处理类部件的功能与应用。 6 、了解导入、导出部件的功能与应用。 7 、了解报表格式生成、预览、打印等部件的功能与应用。 五、使用数据库桌面操作系统 .jar 操作数据库的实验 实验步骤: 1 、仔细阅读教材 7.1.3 节内容,了解部件库的概念、组成。 2 、双击“数据库桌面操作系统 .jar ”在如图界面中,选择部件,根据所显示的文本框输入有关参数。一般,数据表名、某些程序要求的关键字名是必须输入的,其他参数根据需要选择输入。 界面如图所示: 3 、执行。 注意,每进行一项操作,都需要将所运行的部件关闭,之后再实验下一个部件。 如果涉及office文件导入或导出, 需要下载5个软件包:iText-5.0.5.jar、jacob.jar、PDFBox-0.7.3.jar、poi-3.8-20120326.jar、poi-scratchpad-3.9-20121203.jar并拷贝到p1文件夹的com子文件夹中。 附录:部件库简要介绍 (详细内容参阅本人所著、清华大学出版社出版的《数据库系统原理与应用》一书。) 1 、表格式数据维护部件 表格指只由行与列构成的容器,每个行与列的焦点是一个文本框(或组合框或其他表现数据的控件)。单表表格数据维护部件的特点是以表格作为数据输入、输出界面。表格形式使操作者可以同时看到多行数据且十分直观,当列的数量不多且没有宽度太大的字段时,使用表格界面录入与修改数据都较为快捷。在 SQL SERVER 2008 中借助资源管理器的图形界面可产生编辑数据用的表格界面,但有些操作不够方便,例如不能借助代码库录入、查询也较麻烦等等。 表格式数据维护部件提供表格形式界面显示数据表中数据,主要功能包括数据录入、修改、删除、索引、浏览数据等。主要包括: 1 )表格式数据浏览部件 1(tableTenance1.java) ,主要用于表格式数据浏览。提供索引、接续索引、打印、导出、退出等按钮。可作为全中文名单表单记录数据维护部件的“浏览”、查询累部件的结果显示、导入导出类部件的源或目的数据表显示、数据统计变换类部件的结果显示等使用。 2 )通用表格式数据浏览部件 2(tableTenance2.java) ,主要用于表格式数据浏览。提供索引、接续索引、打印、导出等按钮,可以使用字典表变换显示列名。可作为任意单表单记录数据维护部件浏览数据、查询结果显示、导入导出程序源或目的数据表显示、数据统计变换结果显示等使用。 3 )表格式数据维护部件 3(tableTenance3.java) ,适用于单表数据维护。不能使用代码表、字典表,因此只适应采用中文命名字段名的表的操作。数据直接录入无需存盘按钮。 4 )表格式数据维护部件 4(tableTenance4.java) ,适用于单表数据维护。可以使用代码表、字典表,数据直接录入无需存盘按钮。适用于包括非中文字段名的任意数据表数据维护。 5 )表格式数据维护部件 5(tableTenance5.java) ,适用于单表数据维护。不涉及代码表、字典表,数据需点击存盘按钮或修改存盘按钮完成存盘。适用于中文字段名数据表数据维护,数据可靠性较高。 6 )表格式数据维护部件 6(tableTenance6.java) ,适用于单表数据维护。可以使用代码表、字典表。适用于非中文字段名数据表数据维护,数据可靠性较高。 7 )表格式数据维护部件 7(tableTenance7.java) ,适用于单表数据维护。可以使用代码表、字典表、接口参数表。适用于各种数据表数据维护,界面可较灵活地设置,提供安全性与数据域完整性保护。 8 )表格式数据维护部件 8(tableTenance8.java) ,适用于中文字段名数据子表数据维护,同时显示主表数据内容。不涉及代码表、字典表,提供参照完整性保护。 9 )表格式数据维护部件 9(tableTenance9.java) ,适用于各种数据子表数据维护,同时显示主表数据内容。可以使用代码表、字典表、接口参数表,界面可较灵活地设置,提供安全性与数据域完整性保护、参照完整性保护。 10 )表格、单记录混合式数据维护部件 10(tableTenance10.java) ,适用于各种单数据表数据维护。可以使用代码表、字典表、接口参数表,提供表格显示全表数据,同时提供单记录界面提供数据维护操作。单记录界面用公共列表框表现代码表或历史数据内容。将表格式界面与单记录数据维护界面结合在一起,具有双方的优势。 11 )表格、单记录混合式数据维护部件 11(tableTenance11.java) ,适用于各种单数据表数据维护。可以使用代码表、字典表、接口参数表,提供表格显示全表数据,同时提供单记录界面提供数据维护操作。单记录界面用相应字段组合框表现代码表数据内容,通过鼠标操作可以将数据代码录入到数据表中。 12 )任意数据表格式显示部件 12(tableTenance12.java) ,是一个较独立的程序,适合于随机选择数据表之后浏览表中数据内容。界面中提供列表框,请操作者首先选择数据表,之后显示数据表内容。其程序结构与内容和 tableTenance1.java 相同。 13 )任意数据表格式维护部件 13(tableTenance13.java) ,是一个较独立的程序,适合于随机选择数据表之后提供对表中数据进行录入、修改、删除等操作。界面中提供列表框,请操作者首先选择数据表,之后显示数据表内容,除此之外,其程序结构与内容和 tableTenance9.java 相同。 有些部件允许使用字典表,使得可以根据自己的爱好显示列名。当用英文命名字段时,可以用中文显示,也可应用在数据整合时。字典表名称约定为数据表名加“字典表”字样,其中第一个字段为字段名称,为实际字段名,第 2 个字段为标签名称,是翻译后字段名。 字段号表填写需要显示的字段的字段序号,用逗号分隔,可以让同一部件展示不同视图。 要求按钮号表填写需要安装到界面中的按钮序号,选择按钮号使同一部件可以满足不同应用需求。 管理系统常要求采用代码表,使实现规范化输入域管理。如果选择可以使用代码表的部件,应当首先建立代码表。约定代码表名字为字段名加“代码表”,其中字段名,一个与字段名相同,另一个为字段名加“代码”或字段名中去掉“代码”二字。例如,关于性别,设计用 0 表示男, 1 表示女,那么,设计的代码表取名为“性别代码表”,其中有“性别”、“性别代码”二个字段,包括二条记录:男 0 ;女 1 。在数据表中输入保存的可以是“性别代码”,也可以是“性别”,如果前者,在列表框中显示 0 1 ;录入保存的是性别代码。如果数据表中字段名为“性别”,那么,列表框中显示男 女,录入保存的也是该“性别”的值。 2 、单记录数据维护部件 单记录数据维护类部件用于各种 Windows 环境下的数据库系统对单一的一个数据表进行数据录入、修改、删除等数据维护操作。界面中应用文本框、文本域作为输入输出控件,单记录的意思是每次只能显示一条记录的数据,需要借用“第一条”、“下一条”……等按钮控件程序一条条地移动指针到其他记录上才能看到另外的记录并对它们进行操作。这样的方式的缺点是一次看不到全表全部数据,无法进行记录与记录的对比;优点是可以看到完整的每一条记录,显示格式可以比较容易地设定。 该系列部件程序将数据录入、修改、删除等操作集成到一个程序中,可以单一选做数据录入程序模块、单一选做数据修改程序模块、单一选做数据删除程序模块、……、也可以集成多种功能于一体。 该类部件包括: 1 )单记录数据维护部件 1(dataTenance1.java) 。是最基本的单记录数据维护部件,数据不经任何处理或变换,适用于中文字段名数据表单表数据维护。 2 )单记录数据维护部件 2(dataTenance2.java) 。适用于各种单数据表作单记录数据维护,可使用代码表、字典表,使能实现字段名变换,提供公共列表框显示代码表或历史数据,使能利用鼠标帮助输入。 3 )单记录数据维护部件 3(dataTenance3.java) 。在“ dataTenance1.java ”的基础上加入使用接口参数表实现灵活设置界面,及进行数据完整性、数据安全性控制的功能。虽然可以在数据库中进行安全性、数据域完整性保护,但到存盘时再返回出错信息,效率不高。如果实时地进行处理,将更加可靠。在操作时,用右键点击“接口参数表名”文本框,将弹出参数定义界面,帮助完成有关设定。如果是自定义控件位置,则要求先按汉字个数和高度定义每一个文本框或文本域或图片框宽度、高度、到顶距离与到左边距离,之后点击辅助计算按钮,将自动变换为象素点位单位的位置参数。保存后,将可按所定义数据安置所有控件大小与位置。 4 )单记录数据维护部件 4(dataTenance4.java) 。适用于单记录数据维护,可使用代码表、字典表,使能实现字段名变换,提供公共列表框显示代码表或历史数据,使能利用鼠标帮助输入。可使用接口参数表使能较灵活设置界面,可进行数据完整性、数据安全性控制。如果要求实施安全性保护,要求建立权限表,规定登录人员对有关数据表的权限。如果没有 insert 权限,在安排按钮时,即使“按钮号表”数据允许安装“录入”或“录入存盘”按钮,这些按钮也会被灰掉。同样,如果没有 update 权限,“修改存盘”与“成批修改”按钮会被灰掉;如果没有 delete 权限,“删除”按钮会被灰掉。如果要求实施数据域完整性保护,要在“接口参数表”中对有关字段设置数值大小限制值、或设置字段数据值域、或给出需要遵循的条件表达式。当向某字段的文本框填入数据时,如果不满足条件,将会给出警告,并将已经输入的该字段内容清空,要求重新输入。 5 )单记录数据维护部件 5(dataTenance5.java) 。适用于各单数据表单记录数据维护,使用组合框显示相关代码表内容,可利用鼠标帮助输入。可使用字典表实现字段名称变换。 6 )单记录数据维护部件 6(dataTenance6.java) 。适用于各单数据表单记录数据维护,使用组合框显示相关代码表内容,可利用鼠标帮助输入。可使用字典表实现字段名称变换。可使用接口参数表使能较灵活设置界面,并可进行数据完整性、数据安全性控制。 7 )二表数据维护部件 7(dataTenance7.java) 。适用于子表的单记录式维护,同时用表格显示主表数据。用单记录界面显示子表数据。使用公共列表框显示代码表或历史数据内容,可使用字典表进行字段名称变换,使用接口参数表较灵活设置界面,并可进行数据完整性、数据安全性控制。 8 )多对多集中数据录入部件 8(dataTenance8.java) 。某些时候,一个表中许多记录的某些字段数据可以从另一个数据集中导入,例如,录入一个班某门课程成绩时,学生号或学生名是学生表中该班同名字段全部数据,课程名称或课程号全都相同,如果能自动导入这些数据,只需填写成绩数据,可大大加快录入速度。本程序可进行多对多数据的录入操作,用单记录形式显示一个数据表的数据,当选择一个字段数据后自动在另一表表格中填入相关若干数据。同时提供参照完整性保护。 3 、查询类部件 根据某种条件在一个表或多个表中查找记录是一般应用系统都要求的内容,也是许多数据操作的基础。查询类程序的基础是 SQL 语言的 SELECT 语句。查询类部件的功能是提供用户一个友好界面,使能迅速描述查询要求,快速组成 SELECT 语句,实现查询并按用户需要的格式显示或输出查询结果。 本系统提供的查询类部件包括: 1 )数据查询部件 1(dataQuery1.java) 。按指定字段根据指定关系符查询全中文字段名的单数据表数据。 2 )数据查询部件 2(dataQuery2.java) 。按指定字段根据指定关系符查询任意指定的单数据表数据,可以联系代码表查询。 3 )数据查询部件 3(dataQuery3.java) 。可选择字段、选择关系符查询全中文字段名的单数据表数据。 4 )数据查询部件 4(dataQuery4.java) 。可选择字段、选择关系符查询任意指定的单数据表数据,可以联系代码表查询。 5 )数据查询部件 5(dataQuery5.java) 。按指定字段根据指定关系符形成二个“并”关系或“或者”关系的查询条件,之后查询全中文字段名的单数据表数据。 6 )数据查询部件 6(dataQuery6.java) 。按指定字段根据指定关系符形成二个“并”关系或“或者”关系的查询条件,之后查询任意指定的单数据表数据,可以联系代码表查询。 7 )数据查询部件 7(dataQuery7.java) 。随机选择字段、选择关系符后形成二个“并”关系或“或者”关系的查询条件,之后查询任意指定的单数据表数据。 8 )数据查询部件 8(dataQuery8.java) 。根据指定查询“条件表达式”与“输出要求”查询全中文字段名的单数据表数据。 9 )数据查询部件 9(dataQuery9.java) 。根据指定查询“条件表达式”与“输出要求”查询任意指定的单数据表数据,可以联系代码表查询。 10 )数据查询部件 10(dataQuery10.java) 。多表查询部件,首先进行多数据表连接,多数据表连接方式可以设定为左连接、右连接或全连接。连接之后根据参数中的规定形成单条件或二条件查询界面组织查询。代码表与字典表不发生作用。 11 )数据查询部件 11(dataQuery11.java) 。多表查询部件,首先进行多数据表连接,多数据表连接方式可以设定为左连接、右连接或全连接,再连接代码表。连接之后根据参数中的规定形成单条件或二条件查询界面组织查询。在提示字段名时,会根据字典表变换名字。 12 )数据查询部件 12(dataQuery12.java) 。组合查询部件,不涉及代码表、字典表。操作者一条条选择字段名、选择关系符、输入查询数据并形成条件表达式放到文本域控件中,根据最后形成的完整条件表达式组织查询。 13 )数据查询部件 13(dataQuery13.java) 。组合查询部件,操作者一条条选择字段名、选择关系符、输入查询数据并形成条件表达式放到文本域控件中,根据最后形成的完整条件表达式组织查询。可联系代码表、字典表查询。 14 )数据查询部件 14(dataQuery14.java) 。条件表达式或输出要求中可包含有聚集函数的组合查询部件,不涉及代码表、字典表。 15 )数据查询部件 15(dataQuery15.java) 。条件表达式或输出要求中可包含有聚集函数的组合查询部件,可联系代码表、字典表查询。 16 )数据查询部件 16(dataQuery16.java) 。专门针对宽度超过 50 字节的大数据文本类型字段中所包含的文字内容组织查询的部件。 17 )数据查询部件 17(dataQuery17.java) 。包括普通数据也包括在宽度超过 50 字节的大数据文本类型字段中针对所包含的文字内容组织查询的部件。 4 、数据处理类部件 1 )全表统计部件 ( dataStatistic1.java )。在表格中新增加一行,对全表若干字段进行求和、求平均、求最大、最小、记录数、统计标准偏差、填充统计标准偏差、统计方差、填充统计方差等统计。新增行可以永久性增加。 2 )分组统计部件( dataStatistic2.java )。在表格中按某一或某几个字段值分组,每组记录后及全表后各增加一行,对全表分组及全表数据进行求和、求平均、求最大、最小、记录数、统计标准偏差、填充统计标准偏差、统计方差、填充统计方差等统计。新增行可以永久性增加。 3 )横向数据处理部件( dataStatistic3.java )。对每一条记录中一到多个字段的数据按所指定公式进行计算进行处理,将处理结果放到另一个字段中。如果目的字段已经存在,就改变该字段的值为处理结果的值,否则,在表格中增加一列,将计算值填入到该列中。 = 4 )纵向数据处理部件( dataStatistic4.java )。在表格中按分组或按全表根据本系统函数库中函数进行数据处理存放到表格中。新增行可以永久性增加。 5 )删除重复记录( dataStatistic5.java )。检查二表数据,根据所指定字段求这些字段数据完全相同的记录,删除多余记录,重复记录只保留一行。 6 )求关系差集( dataStatistic6.java )。不改变原表数据,检查二表数据,根据所指定字段求这些字段数据完全相同的记录,删除多余记录,重复记录只保留一行,将得到数据保存到另一表中。 7 )求关系并集( dataStatistic7.java )。按给定第一个表的顺序号合并二个表记录到另一表中,对所指定字段数据完全相同的记录只保留一条。另一表如果不存在,将新建该表。 8 )求关系交集( dataStatistic8.java )。求按给定第一个表的顺序号将二个表完全相同的记录放到另一表中,另一表如果不存在,将新建该表。 9 )关系除法( dataStatistic9.java )。对第一个表按指定字段分组,检查每组指定的部分字段数据是否包含另一表这些字段的全部数据,如果有,将第一个表中该组的一条记录存放到第三个表中,第三表如果不存在,将新建该表。 10 )单数据交叉表( dataStatistic10.java )。根据表中某一字段数据分组为列,按另一字段为行,统计第三字段的数据形成新表。 11 )多数据交叉表( dataStatistic11.java )。根据表中某字段数据分组为列,按另若干字段分组为行,统计另一字段的数据形成新表。 12 )二级分组交叉表( dataStatistic12.java )。多数据交叉表中,按同组一列可分多列,同组一行可分多行形成打印表。 13 )一元线性回归( dataStatistic13.java )。对一表中二个数字型数据分析其函数关系,并用图形表示。 其中横向数据处理部件( dataStatistic3.java )准备了一些函数供调用,可在本输出要求中列出函数号,例如“ P01 ”表示求方差,准备存放方差值的字段名要列在字段号表 2 中,参加运算的各字段必须全为数字类类型数据,各字段的字段顺序号要求放到变量“字段号表 3 ”中。 各函数及意义如下:(函数后面括号中说明的是对参加运算的字段数据类型的要求)。 P01 :方差(标准偏差的平方) ( 数字类型字段名 1, 数字类型字段名 2 ) P02 :标准偏差 ( 数字类型字段名 1, 数字类型字段名 2 ) P03 :算术平均值的标准偏差 ( 数字类型字段名 1, 数字类型字段名 2 ) P04 :变为简述中文大写元角分 ( 壹仟零叁拾元另叁角 )( 数字类型字段名 ) P05 :变为规则格式中文大写元角分 ( 壹仟零百贰拾零元叁角零分 )( 数字类型字段名 ) P06 :变为简述中文元角分 ( 二拾元零三角 )( 数字类型字段名 ) P07 :变为规则格式中文元角分 ( 二拾零元三角零分 )( 数字类型字段名 ) P08 :变中文大写元角分 ( 壹仟零叁拾元另叁角 ) 为数字 ( 字符类型字段名 ) P09 :变规则格式中文大写元角分 ( 壹仟零百贰拾零元叁角零分 ) 为数字 ( 字符类型字段名 ) P10 :变中文大写元角分为数字 ( 字符类型字段名 ) P11 :变规则格式中文元角分为数字 ( 字符类型字段名 ) P12 :用大写字母返回指定的字符表达式 ( 字符类型字段名 ) P13 :根据指定的 ANSI 数值代码返回其对应的字符 ( 数字类型字段名 ) P14 :返回数字型星期值 ( 日期类型字段 ) 或 ( 日期时间类型字段 ) P15 :返回年份 ( 日期类型字段 ) P16 :返回字符型星期值 ( 日期类型字段 ) 或 ( 日期时间类型字段 ) P17 :日期时间表达式的小时部分 ( 日期时间类型字段 ) 或 ( 时间类型字段 ) P18 :日期时间型表达式中的分钟部分 ( 日期时间类型字段 ) 或 ( 时间类型字段 ) P19 :日期或日期时间表达式的月份值 ( 日期时间类型字段 ) P20 :日期时间型表达式中的秒钟部分 ( 日期时间类型字段 ) 或 ( 时间类型字段 ) P21 :日期时间表达式中返回一个日期值 ( 日期时间类型字段 ) P22 :返回给定日期表达式的天数 ( 日期类型字段 ) 或 ( 日期时间类型字段 ) P23 :以日期时间值返回当前的日期和时间 ( 日期类型字段 ) P24 :变日期为中文年月日 ( 二零零三年元月十五日 )( 日期类型字段 ) P25 :变日期为数字年月日( 2003 年 1 月 15 日) ( 日期类型字段 ) P26 :变日期格式为字符 ****.**.** 格式 ( 日期类型字段 ) ) P27 :变日期格式为字符 ****_**_** 格式 ( 日期类型字段 ) P28 :变日期格式为字符 ****-**-** 格式 ( 日期类型字段 ) P29 :变中文年月日 ( 二零零三年元月十五日 ) 为日期格式 ( 字符类型字段名 ) P30 :变数字年月日( 2003 年 1 月 15 日)格式为日期格式 ( 字符类型字段名 ) P31 :返回给定日期或日期时间表达式的月份英文名称 ( 日期类型字段 ) 或 ( 日期时间类型字段 ) 5 、数据通信类部件 一般应用系统中程序与程序之间、一个系统与另一个系统之间往往存在大数据量的交互,其交互一般通过文件、其他数据表作为媒介。一个系统也常将数据转存到其他文件或数据表中。将当前数据表中内容转存到其他文件或表中称为导出;从文件或其他数据表中将数据转存到当前表中称为导入。 网络已经是管理工作中不可缺少的工具,从网上下载数据到当前表中,或将数据上传到网络中也是应用系统必备功能。 这些都称为数据通信。本系统设计了如下部件服务于网络通信。 1 )覆盖式导出到纯文本文件、 XML 文件与其他数据表部件( dataTransfer1.java )。原目的文件内容删除,当前表数据导出到指定文件中,如果原文件不存在,生成新文件。生成的纯文本文件包括按标准格式存放、紧缩格式、自定义格式等不同格式组织。 2 )添加式导出到纯文本文件、其他数据表部件( dataTransfer2.java )。原目的文件内容保留,当前表数据添加到目的文件尾部。纯文本文件包括标准格式、紧缩 2 格式、自定义格式等不同格式。 3 )修改式导出到纯文本文件、 XML 文件与其他数据表部件( dataTransfer3.java )。原目的文件内容保留,根据关键字用当前表数据修改目的文件数据。纯文本文件包括标准格式、紧缩 2 格式、自定义格式等不同格式。 4 )覆盖式导出到 Office 文件部件( dataTransfer4.java )。原目的文件内容删除,当前表数据导出到指定文件中,如果原文件不存在,生成新文件。 Office 文件包括 excel 文件、 word 文件与 PDF 文件。要求下载开源软件包: jacob.jar 、 poi-3.8-20120326.jar 等。 5 )添加式导出到 Office 文件部件( dataTransfer5.java )。原目的文件内容保留,当前表数据添加到目的文件尾部。 Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 6 )修改式导出到 Office 文件部件( dataTransfer6.java )。原目的文件内容保留,根据关键字用当前表数据修改目的文件数据。 Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 7 )覆盖式从纯文本文件、 XML 文件与其他数据表导入部件( dataTransfer7.java )。当前数据表数据删除,从文件中导入数据到当前表中,纯文本文件包括包括标准格式、紧缩 2 格式、自定义格式等不同格式。 8 )添加式从纯文本文件、 XML 文件与其他数据表导入部件( dataTransfer8.java )。当前数据表数据保留,从文件中导入数据到当前表尾部。文本文件包括包括标准格式、紧缩 2 格式、自定义格式等不同格式。 9 )修改式从纯文本文件、 XML 文件与其他数据表导入部件( dataTransfer9.java )。当前数据表数据保留,从文件中导入数据到当前表中,根据关键字用当前表数据修改目的文件数据。文本文件包括包括标准格式、紧缩 2 格式、自定义格式等不同格式。 10 )覆盖式从 Office 文件导入部件( dataTransfer10.java )。当前数据表数据删除,从文件中导入数据到当前表中, Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 11 )添加式从 Office 文件导入部件( dataTransfer11.java )。当前数据表数据保留,从文件中导入数据到当前表尾部。 Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 12 )修改式从 Office 文件导入部件( dataTransfer12.java )。当前数据表数据保留,从文件中导入数据到当前表中,根据关键字用当前表数据修改目的文件数据。 Office 文件包括 excel 文件与 word 文件。要求下载公共软件包。 13 )从网页下载并导入部件( dataTransfer13.java )。根据网页地址读取网页内容并导入到当前数据表中。 14 )导出生成邮件部件( dataTransfer14.java )。将当前表中数据组织生成邮件发送。 15 )通用导入部件( dataTransfer15.java )。该部件可以独立使用,也可以被数据维护部件、数据查询部件调用。将提问源文件类型、源文件名、导入方式,之后组织导入。 16 )通用导出部件( dataTransfer16.java )。该部件可以独立使用,也可以被数据维护部件、数据查询部件调用。将提问目的文件类型、目的文件名、导出方式,之后组织导入。 6 、打印报表部件设计 在各种管理信息系统中,设计打印报表都是重要内容,也是很费时的工作。对于常用到的格式固定的报表可以先设计报表格式文件,然后调用该文件打印。需要设计方便操作的格式文件生成程序,及根据格式文件组织打印的程序。 1 )简单表格式报表格式生成部件( printFormat1.java )。给定报表名、副标题、日期、行高、各列宽度、表尾内容、表尾日期、表尾签名 1 、表尾签名 2 、表尾签名 3 ,按数据表进行打印。 2 )带分组统计报表格式生成部件( printFormat2.java )。给定报表名、副标题、日期、行高、各列宽度、表尾内容、表尾日期、表尾签名 1 、表尾签名 2 、表尾签名 3 ,按分组统计部件输出内容进行打印。 3 )统计图表生成格式部件( printFormat3.java )。给定报表名、副标题、日期、行高、横坐标名称、横坐标单位、纵坐标名称、纵坐标单位、柱面或圆饼或折线要求、表尾内容、表尾日期、表尾签名 1 、表尾签名 2 、表尾签名 3 ,按分组统计部件输出内容进行打印。 4 )带统计图报表格式生成部件( printFormat4.java )。产生既有表格又有图表的报表的格式。 5 )单记录式报表格式生成部件( printFormat5.java )。定义每一行每个数据(标签或数据值)的行、列位置,行高、列宽度、字体、字号、是否有右表格线、是否有下表格线等内容。此外包括:报表名、副标题、日期、行高、各列宽度、表尾内容、表尾日期、表尾签名 1 、表尾签名 2 、表尾签名 3 等内容。 6 )标签表格式报表格式生成部件( printFormat6.java )。将一个表格式报表看作块,按横向与纵向复制为多块打印的格式文件。复制后各块内容有相同与按数据表内容各块不同二大类。 7 )标签单记录式报表格式生成部件( printFormat7.java )。将一个单记录式报表看作块,按横向与纵向复制为多块打印的格式文件。复制后各块内容有相同与按数据表内容各块不同二大类。 8 )相应打印预览部件与格式生成部件对应 9 )相应打印报表部件与格式生成部件对应
个人分类: 生活点滴|3182 次阅读|0 个评论
《深入浅出数据库系统及应用基础》实验手册之10-使用软件生产线
求新 2016-5-2 12:17
实验 10 使用软件生产线建立应用系统 一、实验目的: 我们设计的软件生产线基于我们自行设计的 UML 建模软件和软部件库可以一键生成菜单、再一键自动生成应用系统。能大大提高软件生产力,提高应用系统设计与制作效率与成本、大大降低软件维护成本。使得人人都可学习数据库,人人都能设计管理信息系统。 通过本实验,期望读者能认识软件生产线,学会应用软件生产线和软部件库设计与建设应用系统的方法。结合理论教学深入理解数据建模、数据模式、关系优化、应用系统结构与设计方法等知识与理论内容。 二、实验内容: 运行用例图 .jar 、数据结构类图 .jar 、系统结构类图 .jar 、组件图 .jar ,了解软件生产线操作情况,设计建立一个小型超市商品管理系统。 三、环境要求与实验准备 1 、环境要求: 操作系统: WinDowsXP 及以上 程序语言: JAVA (不要求了解JAVA,只要求正确安装 jdk1.6 ,正确设置环境变量,正确设置 ODBC 数据源)。 数据库: SQL Server2008 或其它数据库。 2 、实验准备: 将“软件生产线 2.0 版”压缩文件解压。 建立数据库 建立 ODBC 数据源 sql1 ,指向该数据库。 四、实验要求 1 、了解应用用例图 .jar 、数据结构类图 .jar 、系统结构类图 .jar 等建立应用系统的操作过程。 2 、了解应用用例图 .jar 、数据结构类图 .jar 、组件图、系统结构类图 .jar 等建立应用系统的操作过程。 3 、了解运用数据库桌面操作系统 .jar 调用部件库中部件,对数据库数据操作的方法。 五、实验内容: 1 、实验例题 1 ,了解用例图、数据结构类图、系统结构类图基本操作与简单应用系统设计、生成过程。 1 )仔细阅读本实验指导后面所附“附录 :2 :仓储管理系统需求分析”有关内容,了解本设计的意义与要求。阅读所附附录 1 及教材 7.3 、 7.4 、 7.5 、 9.10 等节内容,了解用例图、数据结构类图、系统结构类图等程序功能与操作方法。 2 )观看示例用例图内容,使对用例图有初步了解。 复制 P1 项目文件夹中“用例图 1.txt ”生成文件“用例图 .txt ”,双击“用例图 .jar ”,观看所建用例图内容。点击工具条中按钮“系统初始化”,修改标题内容,例如改为“物资管理系统”,修改完毕,需要将鼠标点击表格其他位置,使保证上面的修改成功。之后,点击“表格内容存盘”,退出。 3 )观看示例数据结构类图内容,使对数据结构类图有初步了解。 复制 P1 项目文件夹中“数据结构类图 1.txt ”生成文件“数据结构类图 .txt ”,双击“数据结构类图 .jar ”, 观看所建数据结构类图内容。 点击工具条中按钮“建表”,进入数据库,如果建表成功,将报告已经成功建立了多少个表。可进入数据库,观察所新建立的数据表的情况。 4 )观看示例系统结构类图内容,使对系统结构类图有初步了解。 复制 P1 项目文件夹中“系统结构类图 1.txt ”生成文件“系统结构类图 .txt ”,双击“系统结构类图 .jar ”, 观看所建系统结构类图内容。 点击工具条中按钮“生成菜单”,如果成功,将报告已经成功建立了菜单。 点击工具条中按钮“建立系统”,将看见 DOS 系统界面中将有关文件压缩的过程。将发现生成 ****.jar (例如学生管理 .jar ),这是所建立的水平下拉菜单控制的系统。其中 **** 为“系统初始化”中定义的标题。 如果环境变量设置存在错误,将影响系统建立,请检查其设置。详见附录 3 。 5 )双击执行新生成的系统的 jar 文件,系统名称为“系统初始化”中定义的标题。 双击学生管理 .jar ,运行所生成的程序,界面如图所示: 抽样测试其中部分功能。记录系统生成与工作情况。 2 、实验例题 2 ,了解用例图、数据结构类图、组件图、系统结构类图基本操作与分别采用水平下拉菜单和目录树菜单控制的应用系统设计、生成过程。 1 )复制 P1 项目文件夹中“用例图 2.txt ”生成文件“用例图 .txt ”,双击“用例图 .jar ”,观看所建用例图内容。点击工具条中按钮“系统初始化”,修改标题内容,修改完毕,需要将鼠标点击表格其他位置,使保证上面的修改成功。之后,点击“表格内容存盘”,退出。 2 )观看示例数据结构类图内容,进一步了解数据结构类图。 复制 P1 项目文件夹中“数据结构类图 2.txt ”生成文件“数据结构类图 .txt ”,双击“数据结构类图 .jar ”, 观看所建数据结构类图内容。 点击工具条中按钮“建表”,进入数据库,如果建表成功,将报告已经成功建立了多少个表。可进入数据库,观察所新建立的数据表的情况。 3 )观看示例组件图内容,进一步了解系统结构类图。 复制 P1 项目文件夹中“组件图 2.txt ”生成文件“组件图 .txt ”,双击“组件图 .jar ”, 观看所建组件图内容。 4 )观看示例系统结构类图内容,进一步了解系统结构类图。 复制 P1 项目文件夹中“系统结构类图 2.txt ”生成文件“系统结构类图 .txt ”,双击“系统结构类图 .jar ”, 观看所建系统结构类图内容。 5 )双击“组件图 .jar ”。 点击工具条中按钮“生成菜单”,如果成功,将报告已经成功建立了菜单。 点击工具条中按钮“建立系统”,将看见 DOS 系统界面中将有关文件压缩的过程。将发现生成 ****.jar ,这是所建立的水平下拉菜单控制的系统。其中 **** 为“系统初始化”中定义的标题。 点击工具条中按钮“建立系统 1 ”,将看见 DOS 系统界面中将有关文件又一压缩的过程。将发现生成 ****1.jar ,这是所建立的目录树菜单控制的系统。其中 ****1 为“系统初始化”中定义的标题后加“ 1 ”。 6 )双击执行 ****.jar 文件,记录系统生成与工作情况。 7 )双击执行 ****1.jar 文件,记录系统生成与工作情况。 3 、自设计应用系统实验 1 设计小型超市商品管理系统 要求:能对小型超市商场的商品进货、销售、库存等环节进行管理。主要有: ( 1 )能记录每一笔进货,查询商品的进货记录。 ( 2 )能记录每一笔售货,查询商品的销售情况和销售记录。 ( 3 )能记录顾客的购买信息。 ( 4 )能查询某个厂商或供应商的信息。 E-R 图如下: 转换为关系模式: 供应商(供应商编号,供应商名称,供应商地址,电话,联系人) 商品(商品号,供应商编号,名称,库存,进价,售价) 顾客(顾客号,购货时间) 售货(商品号,顾客号,销售数量,销售总价) 求画出用例图、画出数据结构类图并完成建表、画出系统结构类图并生成菜单和建立应用系统。 画前注意删除用例图 .txt 、数据结构类图 .txt 、系统结构类图 .txt 和组件图 .txt 等文件。注意在用例图或系统结构类图、组件图等程序中进行至少 1 次系统初始化工作。 将所绘制图形截图到实验报告中,对结果进行分析总结。 4 、自设计应用系统实验 2 设计一个图书馆日常事务管理系统 ( 1 )图书馆日常事务管理系统功能简析 图书信息维护:主要完成图书信息登记、修改、删除等操作。 读者信息维护:主要完成读者信息的添加、修改和删除等操作。 工作人员信息维护:主要完成工作人员信息的添加、修改和删除等操作。 图书类别的管理:主要完成图书类别的添加、修改和删除等操作 图书借还管理:主要完成读者图书借还信息的记录。 打印欠还图书的读者情况报表,包括借书证号,姓名,性别,借书量,单位,电话,借书时间,应归还时间。 ( 2 )图书馆日常事务管理系统中的实体和属性的设计 读者(借书证号,姓名,性别,出生日期,借书量,单位,电话, E-mail ) 图书(图书编号,图书名称,作者,出版社,定价,购进日期,购入数,复本数,库存数) 工作人员(工号,姓名,性别,出生日期,联系电话, E-mail ) 图书类别(类别号,图书类别) 其中,每本图书都有惟一的一个图书类别,每个图书类别有多本图书;每个读者可以借阅多本图书;工作人员负责读者的借、还工作。 ( 3 )设计该系统数据库的 E-R 图 ( 4 )将设计好的 E-R 图转换为关系模式 读者(借书证号,姓名,性别,出生日期,借书量,单位,电话, E-mail ) 图书(图书编号,图书名称,作者,出版社,定价,购进日期,购入数,复本数,库存数) 工作人员(工号,姓名,性别,出生日期,联系电话, E-mail ) 图书类别(类别号,图书类别) 图书借阅(图书编号,借书证号,借出日期,归还日期) 图书借还(图书编号,工号,借还,数量,借书日期,还书日期) ( 5 )自拟实验步骤,完成系统设计,截图并报告设计建立过程 应包括绘制用例图、绘制数据结构类图并完成建表、绘制系统结构类图并生成菜单和建立应用系统等操作。 画前注意删除用例图 .txt 、数据结构类图 .txt 、系统结构类图 .txt 和组件图 .txt 等文件。注意在用例图或系统结构类图、组件图等程序中进行至少 1 次系统初始化工作。 附录 1 :本系统建模分析绘图基本操作方法 1 、用例图 1 )功能 用例图是可视化需求分析工具,可用来描述工作流程、数据需求概要与功能需求概要,是和使用方交流的主要工具。运行本系统用例图程序时,在图形顶层显示工具条,及“数据结构类图”文件名文本框和“组件图”文件名文本框。如果在当前项目文件夹中存在命名为“用例图 .txt ”的文件,会首先按文件内容初始化画板,恢复原用例图图形。如果在当前项目文件夹中不存在命名为“用例图 .txt ”的文件,显示空绘图板,可以设计新的用例图。 2 )主要图形元素或按钮 ( 1 )参与者 参与者指工作的主体。 ( 2 )用例 用例表示工作内容。在本系统中用例对应一个具体的部件程序。 ( 3 )实体 实体指参与者操作某一用例时所涉及的数据,代表业务中涉及或处理的事物、概念或事件,在本系统中一个实体对应一个具体的数据表,可能是实体数据表,也可能是多对多联系数据表。 ( 4 )文件 文件代表系统外输入输出介质或媒体。 ( 5 )箭头线 用箭头线表示参与者、用例、文件之间的关系,用来形象地表现工作流程,一般是从参与者指向用例,从用例指向文件。 ( 6 )虚线 虚线表示某一操作与相关实体或文件的关系,虚线一端必须连接实体或文件,另一端连接箭头线。 3 )主要操作 ( 1 )填写文件名 在图形顶层文本框中填写“数据结构类图”文件名和“组件图”文件名或“系统结构类图”文件名,为下一步设计做准备。初始数据结构类图将根据用例图中“实体”绘制。初始系统结构类图根据“用例”绘制。组件图表现各个系统结构类图数据所存放的文件名称。 ( 2 )“查看数据”按钮: 系统用列表保存用例图设计过程中产生的图形数据,点击“查看数据”按钮可以查看有关图形信息。 ( 3 )“存盘”按钮 系统将保存在列表中的数据存储到项目文件夹内文件“用例图 .txt ”中,再次运行时将自动打开该文件并恢复原图,可在原图基础上修改与完善。当该名称文件不存在时表示设计的是一个新系统。 ( 4 )“系统初始化”按钮 构建应用系统时,需要有数据库名称、 ODBC 数据源名称及涉及封面的应用系统名称(初始认为是封面标题名称)、封面背景图名称、作者名称、……等数据。点击“系统初始化”按钮将执行系统初始化程序,对应用系统所采用的数据库、 ODBC 数据源名称、封面图形与标题等进行定义。 ( 5 )绘制图形元素的操作 用鼠标左键点击“参与者”、“用例”、“实体”或“文件”按钮,之后在绘图板上点击,回答关于图形名称的提问,可在绘图板上画出相应图形。 ( 6 )绘制箭头线的操作 绘制箭头线的目的是充分表现工作过程。双击“箭头线”按钮,再用鼠标点在一个图形元素上,鼠标左键按下不放拖到另一个图形上,可在绘图板上画出箭头线。箭头线从鼠标按下处指向释放处,一般是从“参与者”指向“用例”,表示一种操作;或从“用例”指向“文件”或相反,表示程序运行产生的数据输出到打印机或文件中保存,或从文件中读出数据到程序中。 ( 7 )绘制虚线的操作 绘制虚线的目的是表现数据处理与相关数据间的关系。双击“虚线”按钮,按下鼠标左键不放从一个图形或箭头线拖到一个实体,可在绘图板上画出虚线。一般是从“参与者”与“用例”间的“箭头线”上某一点指向“实体”,表示有关操作涉及的数据输入或输出的数据表名称。 ( 8 )修改图形名称与删除图形的操作 用鼠标右键点击具体图形,弹出对话框,提问是修改图形名称还是删除图形,如果回答修改图形名称,将弹出对话框,要求输入新图形名称,点击“确定”后图中图形名称随之变更。如果回答删除,将删除该图形及相关所有箭头线与虚线。 ( 9 )删除线条的操作 用鼠标右键点击箭头线或虚线中部,将提问是否删除该线条,回答肯定后该箭头线或虚线被从图中删除。 ( 10 )移动图形位置的操作 用鼠标左键点击某图形左上角后按住鼠标不放,拖到新位置后释放,将提问是否将图形移到新位置,回答“确定”后将图形连同有关的箭头线或虚线移动到新位置。 2 、数据结构类图 1 )功能 数据结构类图根据用例图中实体情况进一步用类图描述实体的属性以及数据及数据之间联系,每一类图定义一个数据的数据库名称、数据表名称、字段名称及其属性。将根据每一个类图在“系统初始化”中定义的“ ODBC 数据源”所指向的数据库中建立一个数据表。用 1 对多或多对多线条形象地描述数据与数据之间的联系。运行时,在图形顶层显示工具条。 2 )主要图形元素或按钮 ( 1 )“查看数据”按钮 系统用列表统一保存数据结构类图设计过程中产生的图形元素数据和线条数据,包括序号、类代码、类名称、 x 坐标、 y 坐标、终点 x 坐标、终点 y 坐标、线条起点序号、线条终点序号、字段数据。 ( 2 )类图 用类图表示数据表,用来描述数据表的结构定义,是建立数据表的依据。 ( 3) 一对多实线 一对多实线用线条上方二端分别标有 1 和 n 字样的图形表示,一般从一个类图指向另一个类图,用来表示数据与数据之间的一对多联系。 ( 4 )多对多实线 多对多实线用来表示数据与数据之间的多对多联系,需要考虑在其中应当有对应双方数据的关键字同名字段。 ( 5 )备注框 正方形框,用来对数据安全性和其他特性进行说明。 ( 6 )虚线 虚线用来表示实体类图与备注框之间的联系。 3) 主要操作 ( 1 )绘制类图 用鼠标左键点击“类图”按钮,再在绘图板上某空位置处点击,将弹出表格设计窗口。在表格下方输入字段名称、数据类型、宽度与小数位、是否允许空值、是否设置为主键、是否设置为外键及相关主表与主键的名称、默认值、值集集合、 CHECK 约束条件表达式等内容。每完成一个字段的定义,点击“添加到表格”按钮,加入到表格中。可以直接修改表格中任意一行记录数据。全部字段设计完成后,点击“保存”按钮,再点击“退出”按钮,将重画类图。其中关于字段属性,只显示字段名与类型。 ( 2 )修改类图 用鼠标右键点击图形板上某个“类图”,在弹出的对话框中点击“修改类图参数并绘制类图”按钮,继而弹出表格设计窗口。将重画类图。 ( 3 )查看类图信息 用左键点击有关类图,将弹出显示框显示所有字段信息。 ( 4 )删除类图及相关线条 用右键点击类图,在弹出对话框中选择“删除图形及相关线条”,有关类图连同连接到该类图的线条全被删除。 ( 5 )移动类图 用左键点中并拖动类图,将类图及相关线条移动到新位置。 ( 6 )绘制线条的操作 双击“一对多线条”按钮或“多对多线条”按钮或“虚线”按钮,在某一类图上按下鼠标左键不放拖到另一个类图或备注框,可在绘图板上画出有关线条,一对多线条在鼠标按下处标“ 1 ”,释放处标“ n ”,多对多线条在鼠标按下处标“ m ”,释放处标“ n ”。 ( 8 )删除线条的操作 用鼠标右键点击线条中部,将提问是否删除该线条,回答肯定后该线条被从图中删除。 3 、组件图 1 )功能: 较复杂系统常由多个子系统构成,组件图用来表现子系统设置情况,形象地描述系统与子系统之间的联系,设计并保存每个子系统名称、其子系统结构类图数据存放的文件名称,具有生成应用系统菜单及建立应用系统的 jar 可执行文件的功能。 2) 主要操作 ( 1 )绘制类图 先用鼠标左键点击“类图”按钮再在图形板上某空位置处点击,将弹出对话框,输入父类图名称、类图名称、子系统结构类图数据存放的文件名称,确定后在绘图板上绘制出类图。 ( 2 )修改类图 用鼠标右键点击图形板上某个“类图”, 输入修改后父类图名称、类图名称、子系统结构类图数据存放的文件名称。确定后在绘图板上绘制出修改后类图。 ( 3 )删除类图及相关线条 用右键点击类图,在弹出对话框中选择“删除图形及相关线条”,有关类图连同连接到该类图的线条全被删除。 ( 4 )移动类图 用左键点并拖动类图,可将类图及相关线条移动到新位置。 ( 5 )绘制线条的操作 双击“箭头线”按钮,按下鼠标左键不放从系统类图拖到子系统类图,绘制箭头线。 ( 6 )删除线条的操作 用鼠标右键点击线条中部,将提问是否删除该线条,回答肯定后该线条被从图中删除。 4 、系统结构类图 1 )功能: 系统结构类图用于子系统或较小应用系统的设计,较小应用系统指系统所有模块的类图可以在一个画面上安装并显示的系统。运行开始,需要定义其系统结构类图文件名,如果存在“组件图”,应当是其中定义的一个子系统结构类图的文件名,如果是较小应用系统,默认用“系统结构类图 .txt ”命名。 本系统用系统结构类图中的类图表现系统每一个模块将调用的程序名称、参数要求,用箭头线表现模块之间的联系。如果设计的是较简单应用系统,将没有组件图,由该程序直接生成应用系统菜单并建立应用系统的 jar 可执行文件。 2) 主要操作 ( 1 )绘制新类图 先用鼠标左键点击“类图”按钮再在图形板某空白位置上点击,在弹出的参数定义窗口中输入父类名称、类名。之后从左边列表框中选择部件,根据所选择部件的需要会激活部分参数的文本框,根据需求选择或输入有关参数,确定后在绘图板上可见到绘制出的新类图。 特别注意类图是建立菜单的主要依据,所有父类名与类名应当形成完整的多颗树,每颗树的根称为“系统”。因此,先应建立若干“根”类,其父类名称为“系统”,类名为各个子系统名,其下不选择部件,也不设置参数。其他类图必须保证修改其“父类名称”为已经绘制的类图中某一个的类名!否则,建立的新系统的结构将不如所愿。 ( 2 )修改类图 用鼠标右键点击图形板上某个“类图”,选择“修改类图参数并绘制类图”按钮,在弹出的参数定义窗口中修改类图。 ( 3 )查看类图 用左键点击类图使显示该类图设计的完整数据。 ( 4 )删除类图及相关线条 用右键点击类图,在弹出对话框中选择“删除图形及相关线条”,有关类图连同连接到该类图的线条将全被删除。 ( 5 )移动类图 用左键点并拖动类图,可将类图及相关线条移动到新位置。 ( 6 )绘制线条的操作 双击“箭头线”按钮,在某一类图上按下鼠标左键不放拖到另一个子系统类图上,将绘制出一条箭头线,方向是从点下处类图指向释放处类图,表现彼此间联系。 ( 7 )删除线条的操作 用鼠标右键点击某线条中部,将提问是否删除该线条,“确定”后该线条被从图中删除。 ( 8 )刷新屏幕的操作 点击“刷新屏幕”按钮重绘画面。 附录 2 : 仓储管理系统需求分析 仓储管理系统是一般生产企业、商业、物流行业广泛应用的应用系统。本系统要求适用于第三方物流企业的需要,通过对供应商、仓库、客户三方面信息的采集、储存、沟通,加强物资管理,堵塞漏洞,将库存成本与资金的占有率降到最低限度。要求操作简便、功能齐全、能满足企业管理的需要,更好地服务于生产、商务等等的需要。 仓库的基本职能是存放物品。商品品种繁多,进、出频繁,处理过程复杂,仓库管理人员工作负担繁重,由于数据量庞大,很容易发生错误,要求能提高信息系统智能化水平,准确可靠地提供所存储商品品种、数量、质量、金额等方面信息。 系统的主要目标是监控整个仓库的运转情况,要求能提供完善的任务计划数据,正确进行商品入库、出库操作,实时监控所有商品在线运动情况,提供库存数量与资金占用变化数据,既要保证供给,又要尽可能减少资金占用率。系统涉及多方面人员,各有其工作范围与权限,要求进入系统时要先登录,之后按其被赋予的权限操作。 仓储管理系统功能要求 一个仓库管理系统一般包括如下模块: 1. 仓库管理 仓库管理包括:采购管理、进货管理、退货管理、领料管理、退料管理、商品调拨、商品报废、质量监控、物品借用、仓库盘点等内容。这一部分内容是全仓库管理信息系统的核心。通过本系统,应当使库存数据精度准确,提高库存周转率,减少库存资金占有率,提高仓库空间利用率,减少冗余或无效的作业。其中主线是:仓库进货 →仓库领料→仓库盘点。 2. 外部信息管理 仓库的进货与供应商相关,出货主要和客户相关,因此系统涉及部分供应商管理与客户管理,供应商的管理目的主要在于能高效、优质、低成本获得商品,使降低成本、减少库存、保证供给。对客户管理目的主要在于扩展销路,提高效益,掌握商品去向,为制定经营策略提供依据。 3. 计划管理 为保证有规范化的、严密的物资与资金的管理,要求制定完善的采购计划和销售计划,并控制商品进、出全过程。采购与商品入库必须符合采购计划的指导,计划外的采购与入库必须得到特别的批准。销售计划是依据历史销售情况及对形势与环境的分析制定的,是指导制定库存计划与采购计划的主要依据,本系统必须保证或促进销售计划圆满超额完成。 4. 员工管理 企业内涉及仓库物资管理的有计划部门、采购部门、销售部门、仓库保管、仓库业务人员、相关财务人员、企业有关人员等方方面面人员,需要有完善的用户与角色分配、权限与工作管理子系统。 5. 业务代码管理 为统计需要及实现规范化、标准化管理,需要制定完善的数据代码体系,包括商品大类划分表、小类划分表、质量标准代码表、ABC分类表、商品入出分类表、货位代码表、商品条码表、商品包装方式代码表等。考虑教学需要,本系统将只要求建立商品类别表、入出分类表。为与部件库接口,要求代码表名字由某字段名加“代码表”构成,其中至少包括主题字段名,及该字段名加“代码”为名的二个字段。 6. 业务查询 要求有库存查询、进货查询、领料查询、销售查询、历史记录查询等模块。 库存查询要能实时提供按类别、按时间、按货位、按商品、按质量要求等进行的库存变化信息。 进货查询要求了解按类别、按时间、按货位、按商品、按计划采购与入库信息。 领料查询要求了解按类别、按时间、按货位、按商品、按出库类别(领料、调拨、借还、报废)等出库信息。 销售查询要求了解按类别、按时间、按商品、按客户(个人、单位、区域)、按数量、按金额分类信息。 历史记录查询与分析可以帮助了解与分析商品供给、商品需求、仓库管理信息,辅助制定采购策略、商品推销计划,加强仓库管理,因此需要将采购、进货、销售、资金占用、商品报废、退货退料、商品质量等信息定期转存历史库,并提供查询、分析功能。本设计对本子系统不作要求。 7. 系统管理 包括用户设置、登录、权限管理及系统初始化、系统结构维护、基础数据管理等内容。 基础数据包括用户表、角色表、权限表、部门信息表、员工岗位设置表等公用数据表。 系统模块结构 根据上述设计要求,可设计系统模块结构如图 所示。 实体分析 本系统涉及人员繁多,但属性类别大致相同,如果用岗位类别区别不同员工角色,可以用“员工”表存放所有员工的数据。由于对员工、客户、供应商的管理要求、工作内容不相同,分别采用员工、客户、供应商三个表存放他们的基本数据。 商品是系统管理对象,对于一个仓库而言,需要统一管理,可用一个“商品”表保存所有商品信息,但要注意不同大类商品属性不尽相同,在设计字段时要兼顾各大类商品的属性。 仓库关于商品的业务很多,包括采购商品入库、商品退货出库、调拨商品入库与出库、借用商品入库与出库、入库商品上架、商品条码管理、商品销售出库、商品退料入库、商品损坏与报废及其他损耗、商品折旧等。为了减少库存,需要设置库存上限数据;为了保证供给,需要设置库存下限;要根据历史进出情况合理设置上限与下限,其常用方法是 ABC 管理法;需要在越限时及时报警及其他管理。需要加强质量管理,确保向客户提供满足质量要求的商品,就要掌握好入库检验、做好在库商品的管理。需要经常统计库存,审计商品情况。归纳上述内容,其基本内容是入库与出库管理,都涉及人员与商品,二者间是多对多关系。为统一管理,方便统计库存,采用一个“出入库”表管理所有出库与入库信息。可加入“入出类别”来区分不同入库、出库情况,为便于统计计算,入库与出库的编号、单价、数量分别用不同字段存放数据,生产单位、生产时间、供应商编号、采购时间、客户编号设计使用不同字段。其他入库与出库信息可以采用相同字段存放数据。采用这样的设计方式,需要注意设计不同程序模块应对不同操作需要,需要考虑安全性、数据完整性等问题。 为了管理需要,应当设置一些基础数据表,例如商品代码表、部门代码表、用户表、角色代码表、权限表、类别代码表、货位代码表、岗位类别表、质量标准代码表等。 根据以上分析,设计本系统数据表为: 员工(工作证号,姓名,性别,出生日期,所属部门,家庭地址,电话,职务,职称,岗位类别) 客户(客户编号,身份证号,姓名,性别,工作单位,职务,联系地址,电话) 供应商(供应商编号,身份证号,姓名,性别, 公司名称,公司地址,公司法人,联系电话,邮政编码) 商品(商品编号,商品代码,商品名称,类别,型号,规格,参考单价,库存上限,库存下限,质量标准) 出入库(序号,商品编号,出入库时间,入出类别,入库编号,出库编号,经办人,负责人,保管,质量类别,生产单位,生产时间,供应商编号,采购时间,客户编号,货位代码,计量单位,入库单价,出库单价,入库数量,出库数量,金额,备注) 采购计划(序号,商品代码,计划出货时间,质量类别,生产单位,供应商编号,公司名称,计量单位,参考单价,数量,金额,经办人,负责人) 销售计划(序号,商品代码,计划出货时间,质量类别,生产单位,生产时间,客户编号,计量单位,计划单价,数量,金额,负责人) 商品代码表(商品代码,商品名称) 部门代码表(部门代码,部门) 用户表(用户代码,用户名,密码,岗位类别) 角色代码表(角色代码,角色,用户名) 权限表(权限代码,用户名,角色名,菜单项名,权限) 类别代码表(类别代码,类别,大类类别,小类类别) 货位代码表(货位代码,货位,仓库名称,区间代码,货位特征,备注) 岗位类别表(岗位类别代码,岗位类别) 质量标准代码表(质量标准代码,质量标准) 出入历史库(序号,转存时间,商品编号,出入库时间,入出类别,入库编号,出库编号,经办人,负责人,保管,质量类别,生产单位,生产时间,供应商编号,采购时间,客户编号,货位代码,计量单位,入库单价,出库单价,入库数量,出库数量,金额,备注) 附录 3 设置环境变量 1 、设置环境变量 JAVA_HOME 开始→设置→控制面板→系统→选“高级”页→点击“环境变量”→添加→输入环境变量名: JAVA_HOME →按如下内容输入环境变量值→确定 如果你的 JDK 安装在 C:\Program Files\Java\ ,所采用的 JDK 为 jdk1.6.0_27 。应当能查到文件夹: C:\Program Files\Java\jdk1.6.0_27\bin 则设置环境变量 JAVA_HOME 的值为 C:\Program Files\Java\jdk1.6.0_27\ 如果查到 javac.exe 的所在目录为其他位置,需要相应修改环境变量 JAVA_HOME 的值。 2 、设置 CLASSPATH 在环境变量设置对话框中点击添加→输入环境变量名: CLASSPATH →输入环境变量值: .;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib 点击确定。 3 、修改环境变量 Path 的值 在环境变量设置对话框中找到环境变量 Path →编辑→在环境变量 Path 的值中添加: ;%JAVA_HOME%\bin; 4 、点击“确定”、“确定”。完成设置。 5 、检查 设置完毕,需要检查是否设置成功。 方法:开始→程序→附件→命令提示符 进入 DOS 命令状态后,应用命令: javac ,应当没有“不是内部或外部的命令……”的提示。 再测试命令: jar 、也应当没有“不是内部或外部的命令……”的提示。则设置成功。否则请再次检查与设置。
个人分类: 生活点滴|5294 次阅读|0 个评论
难道只是失误吗?-给14届全国软件与应用学术会议代表们的公开信
求新 2015-11-4 21:20
给第十四届全国软件与应用学术会议代表们的公开信 各位领导、各位专家、各位老师:您们好! 我投了一份稿件,名:“管理信息系统软件生产线研究”,文号NASAC201500023,同时报名参加原型竞赛,投寄的介绍文章为“管理信息系统软件生产线软件简介”,其中介绍文章共8.25兆、107页、143幅截图,介绍了65个部件程序运行界面与操作情况。但因没通过评审而未进入决赛。组委会查找了原因是:“在评审参赛作品时,只看到了摘要,评审系统中没有看到作品的介绍文档”。又经进一步检查,发现是组委会中的操作者“没有及时将附件上传到会议系统”。照说这只是非会议预审,本来就是各请专家在家里打分,目前完全是因为组织者的失误使得作品被漏判了而照成的错误,是可以弥补的,找几个专家复议一下,补评审一下,补打个分,风波就有可能平息。但我们的这个请求被以北大梅宏教授为执委会主席、北大王千祥教授为程序委员会主席的组委会否决了,这可不能算作操作失误了。 我们文章的主题是希望研究新时期软件复用的有关课题,如图1所示。 图1 软件代码复用三阶段 我们认为,软件代码复用历史可分为三阶段:最早的面向过程设计阶段通过子程序、函数、过程、宏集成多条语句使可以跨程序实现程序部分语句的共享,不涉及界面共享,共享内容存放到子程序库、宏库的一个或少数文件中,共享手段是指针链接或复制嵌入。第二阶段面向对象中的“类”集成多种方法与属性实现方法级的共享,共享内容放到类库中,每个类源代码放到一个或多个文件中,每个类字节码放在一个文件中,涉及单控件界面(例如文本框、菜单、组合框等)的共享,共享手段是生成对象,复制嵌入,构成一个完整程序的一部分。当前,计算机应用更加深入、软件规模越来越大,软件复用粒度不再增大就不能适应计算机应用的需要了。从软件代码复用历史的第一阶段过渡到第二阶段用了差不多30年,而面向对象技术又发展了近30年,到了再进一步向第三阶段发展的时候了。 大约10多年前,学术界就提出了领域构件的概念,领域构件实际也是程序模块级软件代码复用,卡内基-梅隆大学软件工程研究所与国内的北大的青鸟工程及几乎软件工程方面的学术界专家都热议领域构件的课题,其主要观点是:由于某个特定领域需要的软件具有相似的需求,软件复用在特定领域内更容易获得成功。 领域工程 是为一组相似系统设计软件的过程,涵盖了建立可复用软构件的活动,要求将构件生产将生产过程中产生的可复用制品放入公共资源库使实现复用开发。特别强调“自底向上的重用”:从系统最基本构件块搭建的方式考虑系统的重用。认为构件应从已有系统中挖掘提取,首先对业务需求进行分析,提炼出构件,通过交流沟通,将专家知识提炼成领域知识库,再确定重用库构件是否满足知识库需要。复用源大多只能选择某一个类似的产品,所能复用的内容只能局限于此产品;复用采用的是拷贝然后修改的模式。 但我们认为单纯使用卡内基-梅隆大学软件工程研究所与青鸟工程等提出的从下至上设计领域构件的研究路线是错误的,要研究通用于一切管理信息系统的软部件,就无法采用对已有的领域内系统程序归纳总结提炼的方法来设计,必须研究从上而下设计通用可复用系统级程序模块的课题。在我们的论文与作品中点名批评了从下至上设计领域构件的研究路线,并以管理信息系统软部件库的设计为例,介绍了从需求分析到详细设计的概况,从而给出了我们主张的从上而下设计可复用软件资源库的方法。 我们认为比“类”更大粒度的可复用软件必须是通用的程序模块级可复用软件,也就是我们称为的通用软部件,涉及一个程序模块全界面的共享,每个软部件代码放到一个文件中,共享内容放到一个文件夹或多个文件夹中,其字节码可为一个到多个类代码,放在一到多个类文件中,共享手段是设定参数后链接全文件嵌入。只有设计出这样的软部件库,才可能设计出相应建模软件,实现从建模到一键建立应用系统。才可能以组装方式、不需要编写代码建立应用系统,才可能如工业化生产那样形成软件组装业,才有软件生产的工业化与现代化。 从我们的博文中可以看到,我们长期研究与呼吁开展软部件和软件生产工业化的研究,但是收效甚微。本次大会,组委会有些专家过去曾经署名发表过关于领域构件的论文,我们本期望会遇到真正懂行的专家,能进行相关的交流与探讨,希望他们能够帮助我们总结经验教训,促使新技术的诞生与我们工作的改进,但是这个希望破灭了。 那么,为什么“领域构件”会被热议,而我们的论点得不到支持呢?许多企业愿意接受领域构件的思想,我们分析:1、比较容易实现,只要在已经建成的系统上进行归纳与总结,提升到理论层面上,建立领域构件库就可以了。2、有利可图,领域构件可以提高之后设计同领域系统的效率与质量,降低成本,包括降低软件维护成本。3、可以提升企业的地位,领域构件的归纳总结使企业技术水平提高,软件维保变得简单,在一定范围内可以适应应用需求的变化,更让用户欢迎。4、形成的资源库是企业与领域专有的,有可能垄断市场。 相对而言,我们提倡的通用的软部件设计难度大,第一,它所涉及的不只是一个领域,需要了解所有领域的知识与经验。 第二,由于从事软件开发与编写代码的工作既困难,待遇又低,因而流行一种“开发软件是吃青春饭”的说法。代码设计人员编写代码的时间一长,就极力谋求转入行政或其他工作岗位。我们的40以上的编程人员数量是很少很少了,在学校40岁以上副教授和教授亲自编写应用系统的代码的就更稀有了。年轻人编写代码思维敏捷,记忆力好,编写代码无疑具有优势。但是,他们的劣势是缺少经验,缺少理论的修养,要独立设计并完成具有如此高综合性的课题具有难度。 第三,技术上有许多大家公认不好解决的问题,例如,应用JAVA开发软部件,要解决根据数组数据声明对象及宏替换的问题,需要大量自动生成代码文件的设计等。 第四,这个问题只在我们国家内受到特别的关注,由于语言与习惯,我们的软件特别强调中文的界面与报表的格式,而这写在英美则不那么受到重视,只有中国的技术人员才特别关心这一课题。 第五,得不到学术界与企业界的支持,处于孤军作战,困难可想而知。 企业不热心于这一课题,第一是缺少利好信息,因为是以文件整体调用为复用基础,代码知识产权难以得到保证,这是公益事业,投入很大,回报却低。 第二,许多软企只谋求在部分领域的垄断地位,而通用软部件会降低应用门槛,在一个短时期内不见得能提升企业的垄断地位。 第三是害怕打破当前的平衡会引起管理各方面的变化。 我们都知道,中国农民特别在乎他们的一亩三分地。但是,如果土地都是小块的,最多只能使用小型农耕机器,无法实现农业的机械化与现代化,就难以提高农耕生产力,实现小康难度也会加大。同样,如果不能从领域复用过渡到全软件复用,打破领域的界限,软件生产工业化也只能是空话。 我们的文章与参赛的原型设计基于局域网,希望能用于不同操作系统、适应不同数据库,作品介绍了参考uml设计的建模工具程序,只要绘制用例图、数据结构类图、组件图、系统结构类图、时序图(工作流程图),在绘图的过程中要从我们设计的通用软部件库中选择部件并正确配置参数,之后一秒钟不到,一键应用系统就建成了。这一设计和相关论文是程序模块级软件复用的一个探讨,说明程序模块级软件复用是可以实现的。其意义是明显的,1、软件生产工业化是软件界长期希望解决但没能解决的课题,其中的关键问题是系统模块级软件复用问题,这一问题不解决就难以实现从数据建模到自动化建立应用系统,软件生产工业化就难以实现。实现软件生产工业化将促使软件生产出现分工,从工业生产工业化实现的历程看可以扩大就业,解放生产力。2、如果解决了系统模块级软件复用问题,有可能提高信息系统开发效率数倍到10多倍,同时大大提高质量、大大减少软件开发、软件扩展与软件维保的难度与成本,促使计算机应用更加扩大与普及。3、目前数据库基础课不少学校还在教VFP,但2007年Alan Griver代表 微软 宣布停止发展VFP,且 微软 支持VFP9.0只到2015年;有些学校在教Access,但许多地方教学内容脱离数据库基本知识,对于学习数据库基本理论、基本方法存在不足;有些学校开SQL Server,但解决不了应用系统建设的问题,学生不知道学了数据库有什么用。我们的课题为解决这问题提出了思路,有助于提高数据库基础课程教学质量。 会议程序委员会找了一位“对软件生产线研究与应用均比较熟悉的专家”对作品写了一个评阅意见。 这位专家说:“该软件生产线软件所提供的UML等建模工具不规范,所提供的用例图、类图、组件图等UML图都不太符合UML规范。这些图一般用于表示系统高层分析和设计,不理解为什么需要为这些模型指定数据库连接信息。此外,这些模型与后续的应用开发的关系也不清楚。如果只是为了配合基于软部件的定制化开发,那么只需要提供数据库设计建模(如ER模型)即可。 UML 图只是“用于表示系统高层分析和设计”吗?多看几本书就知道,人们对UML的兴趣除了建模,还包括建表与双向工程,使用比较普遍的Rational Rose就设计了通过数据库建模定义数据模式进而在数据库中建表,以及自动生成和维护c++、java、Oracle等语言和系统的代码。只是,建表和生成代码的操作比较复杂,效率不高,因而在一些只搞应用的人看来,UML只是用来务虚的,他们不知道,人们是希望能用它来务实的。而要用它完成建表操作,不“指定数据库连接信息能行吗?在我主编的2001年由水利水电出版社出版的《数据库原理与技术》和2014年由清华大学出版社出版的《数据库系统原理与应用》二书中都用专门一节内容介绍利用Rose建库建表,随书发布的实验手册上同步介绍了利用Rose建库建表的方法与步骤。这些内容指出Rose建表过程和Rose前面的建模过程以及已经生成的图形有比较大的断裂,操作比较麻烦,需要创建数据库对象、选择数据库管理系统、选择表空间,之后才能完成建表操作,不如直接在数据库提供的可视化操作平台上建表来得简单、方便、易学,在实际开发工作中大家就很少用了。但是,它们的设计理念并没有错误,人们迟早是会找到解决办法的。我们目前设计的程序对建模内容作了简化,基于数据模型建表不仅比Rose简单,比在数据库中可视化建表也容易多了。至于生成软件代码一般也只能生成程序框架,不如将一些现成的程序拷贝后修改要更加简单好用,使用Rose这些功能的就更少了。而我们要从建模直接实现建立应用系统,请问这位专家,不指定数据库连接信息能实现吗?不知道怎么会问出这样低级错误的问题,而用这来否定我们的作品就更匪夷所思了。 至于所说“为了配合基于软部件的定制化开发,那么只需要提供数据库设计建模(如ER模型)即可。”就更不知说的是什么了,应用系统的定制开发与ER模型有什么直接的关系呢? 所谓我们参考UML设计的建模图形“都不太符合UML规范”就完全背离“创新”的会议宗旨了。UML是面向对象时代出现的建模语言,从自动生成代码的要求而言,类图用类名、属性栏、方法栏来表现是足够了。但目前我们要求实现的是从建模再一键生成应用系统,需要定义菜单的层次结构,需要选择部件,还需要定义有关的参数,如果还墨守老的UML的规范,不求发展,能设计得出满足需求的建模工具吗?有些人只相信外国人,绝不越外国人的“规范”一步,如果有人要图发展,就坚决扼杀之。难道本次大会就以这样的标准来鼓励创新吗? 我们批评单纯从下至上设计领域构件的研究路线,认为正是这一路线迟滞了软件生产工业化的进程。从下至上设计领域构件具有随机性,所设计的领域构件不具有普遍性。各企业单位可以设计自己独有的软件生产线,生产自己领域内的软件,但无法设计通用的软件生产线。而要设计通用建模工具,建立通用软件生产线,就必须研究从上而下设计软部件的方法与技术并组织实现。 这位专家还批评说:“该软件生产线软件的基本原理是将基于数据库的增删改查操作以及信息系统界面上各种常用的呈现方式进行抽象总结后形成可定制的软部件。这种设计理念和实现技术已经成为共识,并被广泛应用于企业开发工具和平台中,其中一些定制化的开发工具也在一些企业得到了大范围应用。但从本工作现有提供的材料中,评阅人难以发现作者在上述设想和技术的原创性贡献。” 这就是在信口开河了。“这种设计理念和实现技术已经成为共识吗?请问专家,有哪些论文或文章或著作介绍了我们提出的设计理念和实现技术呢?关于领域构件的文章是不少,但是我们并不是研究领域构件,而是在批评其研究路线。据我所知,确实有企业在进行这一方面的研究,而且取得了进展,在软件企业界已经有一定的地位,但是,这样的企业并不多,更没形成共识。至少在武汉市还没有一个企业拥有这样的认识与技术。我前二天还参加一个工程软件招标,只涉及一些查询、数据核对与整合、少数数据维护、报表等内容,开价1200万,最后以近700万价格成交。如果有优秀的部件库,相信能用1人在一月内完成其软件部分,还需要700万吗?本次会议我们受到的歧视也充分证明了不存在与我们的共识,我们的认识依然不为学术界所认同。 至于我们在本课题上面的贡献,也确实谈不上贡献,对于一个不被认同且未实现的命题何来贡献呢?但是,不能否认我们已经做过的工作。我们是2000年开始研究;2001年在公开出版的教材中提及并介绍了基于VFP设计软部件的方法;在2003年申请国家自然基金的申请中正式提出该项目,并提出软件生产工业化的设想,之后一直到2007年我们连续5年5次提出申请,均被否决;2005年我们基于JAVA设计软部件的早期研究取得进展,经省教育厅组织鉴定认为达到世界先进水平;2007年我们在博客上发表文章“ 加强对软部件技术的研究,促软件工业化生产时代到来 ”;2009年我们先后在博客、管理观察发表文章“ 软部件技术为什么成为独家技术 ”,没见到任何批评驳斥或质疑的回复;到2010年前,还没见有企业提出通用性、自适应性软件设计的内容,直到2010年后我见到先是深圳太极公司,后是神州数码公司宣称自己的软件具有通用性与自适应性,其中,深圳太极公司的确是有深入的研究并取得成功。但是,各个企业的设计是私有的,所有软件都不公开,都需要自己的专业性很强的资源库的支持,因此都没引起学术界普遍的关注与企业界的跟从。本次论文题目是《管理信息系统软件生产线研究》,实验的作品是软件生产线,这是去年我们才研究完成,并首次在博客中发布,再于今年9月交少部分内容随我编写的教材《数据库系统及应用基础》在清华大学出版社网站中提供下载。虽然关于所设计内容 目前还只是用到教学中,还只能是停在科研、口号的阶段,但是,所做工作还是有一点说服力的。 除这位专家外,还有专家提出需要从中凝炼一些特点,比如自适应性等,包装一点更理论化的内容的意见。这是非常好的建议。理论的一个定义是“通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。”,也就是说,理论指由实践活动中总结形成的具有一定专业知识的智力成果。该智力成果在一定范围内对人们的行为具有指导作用。我们全部实验都是希望能研究软件生产工业化的新的理论、新的技术与新的方法,希望对今后软件工程发展有所贡献。不过,我们目前研究的项目是公益项目:设计出来了,不公开原代码,别人难用;如果公开原代码,还有企业愿投入吗?我们曾经设想,如果能有政府机关出面组织集体公关,建立对公众有益的各类层次的部件库,再提供给企业使用,中国的计算机应用必将会有促进,生产力必将有所提高,具有重大意义。
个人分类: 生活点滴|3858 次阅读|0 个评论
数据库系统及应用基础
求新 2015-10-30 08:45
内容提要 本书介绍了最基础的数据库系统的基本概念、基本原理和基本方法。内容包括数据库概念 ,SQL语言,关系代数、数据库基础理论、数据模型、关系优化、数据库系统管理。为帮助 更好地理解数据库基本理论、基本概念与基本方法,做到理论联系实际,突出应用,提供了 一个小型仓储管理信息系统实例,介绍了从需求分析、建模、建立数据库与生成应用系统的 全过程。为学以致用,本书联系社会上广泛应用的SQL Server数据库组织教学。为了解决 编程难题,设计了基于部件库的管理信息系统软件生产线,使得无需任何编程语言知识与技 能就能完成应用系统的设计与建设。本书内容分为基础篇与实践篇,在实践篇中结合有关章 、节组织上机操作,其中包括应用我们开发的实验工具程序进行的实验与应用软件生产线进 行系统开发的实验,通过实践环节的学习使建立对数据库及其应用的感性认识、理论联系实 际以加深对数据库基本概念与基本方法的理解、学以致用使提高动手能力。 为配合教学,在出版社网站中提供了PowerPoint教学幻灯片,管理信息系统软部件库 (JAVA版)及软件生产线程序、实践篇中例题的电子文档。可以从 http://www.tup.com.cn/booksCenter/book_06297801.html下载。 本书可作为高等院校应用类型本、专科学生新生计算机数据库基础课教材,也可作为转型 学校和高职高专学校数据库应用课程的教材。 前 言 数据库技术是一门发展迅速,在科学与社会各个领域广泛应用的技术,是计算机科学的重 要分支,是建设各类信息系统的基础,目前其应用已从信息检索、一般管理扩大到科技计算 、计算机辅助设计、人工智能等各个领域。 本书力求由浅入深,由具体到抽象,由实践到理论,应用驱动,理论与实践紧密相结合, 使读者深刻了解什么是数据库及数据库要达到的目标,掌握数据库的设计方法并了解实际数 据库应用系统的组成及实现的方法。 本书先对比了应用程序设计语言进行数据处理的方法、Excel和数据库环境下数据存储与 操作方法的不同,通过解剖一个数据库的数据文件的实验认识什么是数据库、及数据库理论 中一些至关重要的概念,建立对顺序文件与链表文件、等长存放、逻辑结构、数据字段、数 据类型等的感性认识,让读者更真实地体会要完成数据库系统的目标需要解决的矛盾。 本书以在实际应用系统中被广泛应用的SQL SERVER数据库管理系统为例组织教学,使关 于数据库原理的学习与数据库应用实际紧密结合,使更容易地加深对数据库基本理论、基本 概念的理解。 随本书发布应用“管理信息系统软部件库(JAVA版)”实现的桌面系统和软件生产线程 序。“管理信息系统软部件”不以具体的应用系统为目标,而是以抽象的“数据库”为目标 ,总结作者开发应用系统的经验,整合各类应用系统的模块设计特点,将界面设计与功能设 计有机结合到一起。每个部件都集成许多功能,就如同电子产品中的智能插件、机械产品中 的通用部件一样,只需设定初始参数,就能选择具体的功能,用于新的设计。以之作为工具 用于实践教学,可以帮助读者更深入地理解数据库的基本理论与基本概念。也为建立软件生 产线铺平道路。 我们基于软部件库设计了一条管理信息系统通用软件生产线,以参照UML语言、独立设计 的建模工具驱动,只需全部或部分绘制用例图、数据结构类图、组件图、系统结构类图与时 序图,就能自动生成菜单程序、调用部件库中部件程序,构建应用系统。该生产线目标是提 高系统易维护性、易扩展性与开发效率,让非计算机人员和初学者也能很容易地学会开发应 用系统,将理论与实践紧密结合到一起,读者将不只是学习少数几个虚拟的应用系统的设计 方法,而是要实地设计并建立一到多个真实的数据库应用系统,实战式的学习数据库系统的 设计与实现方法,全面地学习数据库的理论技术。设计数据库应用系统的生产实践也将有利 于提高读者实际动手能力。希望通过本书的学习,读者不只停留在数据库的概念、原理和理 论上,而是要成为使用数据库的行家里手。 操作桌面系统使得只要选择部件、选择数据表就能打开数据库,进行一项关于数据库应用 的操作,界面丰富,操作较T-SQL语言及一般数据库内嵌语言简单且容易学习,可以更灵活 、更自由地支配与使用数据库。也是了解软部件库的工具。 本书尽量采用通俗方式表述那些涉及专业太深的问题,对一些用得不多或较难懂的问题只 做最简单的介绍。 本书由程学先教授主编,张慧萍、程传庆、顾梦霞、贺红艳、陈小娟、罗宏芳等参加编写 并完成课件的制作。其中,张慧萍负责第1章编写;程传庆负责第2章编写;顾梦霞负责第3 、8章编写;贺红艳负责第4章编写;陈小娟负责第5章编写;罗宏芳负责第6章编写;程学 先复责其他章节编写。 管理信息系统软部件程序由程学先、龚晓明、王富强、程传庆、齐赛、王玉明、陈义、王 嘉、程传慧、聂志恒、张卫东、杨帅等设计,参加其他电子文稿设计与制作的还有曾玲、杨 晓艳、刘伟、陈永辉、程传慧等,在此一并表示感谢。 本书未详细介绍部件库与软件生产线功能与设计方法,可参阅清华大学出版社出版的拙著 《数据库系统原理与应用》。软部件库还需要进一步发展、完善与规范化,欢迎有兴趣者公 开署名发表新的或经修改更新的部件,以充分满足应用的需要。我们愿意积极宣传与推广这 方面的进展,可以应用信件和我们联系或在我的博客中留言。通信地址:430068,湖北省 湖北工业大学。博客地址:http://blog.sciencenet.cn/?2551。 目录 基础篇 9 第1章 认识数据库 9 1.1 数据处理发展历程 10 1.1.1 人工管理阶段(20世纪50年代中期以前) 10 1.1.2 文件系统阶段(20世纪50年代后期至60年代) 10 1.1.3 Excel 14 1.1.4 数据库系统阶段(20世纪60年代后期) 15 1.2 SQL SERVER 2008可视化建库建表操作方法 16 1.2.1 建立数据库 16 1.2.2 建立数据表 18 1.2.3 修改表结构 20 1.3 数据维护的可视化操作方法 21 1.3.1 数据维护的概念 21 1.3.2 分析数据库数据文件以深入认识数据库 22 1.4 数据备份与恢复的可视化操作方法 26 1.4.1 数据转储的概念 26 1.4.2 创建备份设备 26 1.4.3 数据库备份与还原 27 1.4.4 数据库分离与附加 29 1.5 数据库管理系统 30 1.5.1 DBMS的功能 30 1.5.2 DBMS的组成 31 1.5.3 关系数据库初步 32 第2章 SQL语言 36 2.1 SQL语言概貌 37 2.2 SQL数据定义功能 38 2.2.1 定义数据库 38 2.2.2 基本表的定义和修改 39 2.2.3 在SQL Server中执行SQL语句 41 2.3 SQL数据维护语句 42 2.3.1 修改(UPDATE)语句 42 2.3.2 删除(DELETE)语句 42 2.3.3 插入 (INSERT )语句 42 2.4 SQL数据查询语句 43 2.4.1 SQL查询语句格式 43 2.4.2 对单一表查询语句 45 2.4.3 对两个以上表的连接查询 46 2.4.4 外部连接 47 2.4.5 嵌套查询 48 2.4.6 批量录入数据的语句 49 2.4.7 SELECT语句的关联应用 49 2.5 视 图 51 2.5.1 视图的概念 51 2.5.2 可视化方式建立视图 52 2.5.3 建立视图的语句 53 2.5.4 视图用于更新 55 2.6 SQL数据控制功能 56 第3章 关系代数 60 3.1传统的集合运算 61 3.2专门的关系运算 65 第4章 数据库基础理论 71 4.1 数据库系统基本概念 72 4.2 三层模式与二级映像 73 4.3 数据控制的概念 74 4.4 数据完整性保护的可视化实现 76 4.4.1.实体完整性保护的实现 76 4.4.2 参照完整性保护的实现 77 4.4.3 域完整性保护的实现 80 4.5 设置数据完整性保护的语句 81 4.5.1 建表语句中添加数据完整性约束 81 4.5.2 涉及数据完整性的数据表结构修改语句 84 4.6 索引文件组织 87 4.6.1 索引的概念 87 4.6.2 聚集索引与唯一索引 88 4.7 数据库安全性管理 89 4.7.1 主体与安全对象 90 4.7.2 身份验证模式 90 4.7.3 登录名的管理 91 4.7.4 创建架构 93 4.7.5 针对具体数据库创建用户名 93 4.7.6 服务器角色 94 4.7.7 数据库角色 97 4.7.8 权限管理 98 第5章 数据模型 101 5.1 数据模型 101 5.2 E-R数据模型 102 5.2.1 数据之间的联系 102 5.2.2 实体联系模型(E-R图) 104 5.3 关系数据模型 106 5.3.1 关系数据模型基本概念 106 5.3.2 从E-R数据模型到关系数据模型 108 第6章 关系优化 112 6.1 基本概念 112 6.2 候选关键字与主属性 113 6.2.1 候选关键字 113 6.2.2 主属性 114 6.3 关系规范化 114 6.3.1 问题的提出 114 6.3.2 范式 117 第7章 小型仓库管理系统设计 122 7.1 管理信息系统设计概述 123 7.1.1 管理信息系统设计步骤 123 7.1.2 软件生产线 124 7.1.3 部件库 124 7.1.4 用例图 125 7.1.5 数据结构类图 127 7.1.6 组件图 129 7.1.7 系统结构类图 130 7.2 仓储管理系统需求分析 132 7.2.1 仓储管理系统功能要求 132 7.2.2 系统模块结构 134 7.2.3 实体分析 134 7.3 用例图设计 135 7.4 数据结构类图设计与建立数据表 137 7.5 应用系统设计与建立 141 7.5.1 系统结构类图设计 141 7.5.2 生成应用系统 148 第8章 数据库系统管理 153 8.1 SQL SERVER管理工具 153 8.2 SQL SERVER中的存储过程 157 8.2.1 存储过程的概念 157 8.2.2 存储过程的优点 157 8.2.3 在SQL Server 中,创建一个存储过程有两种方法: 158 8.2.4 使用管理工作平台创建存储过程的过程 159 8.2.5 重新命名存储过程 160 8.2.6 删除存储过程 160 8.2.7 执行存储过程 160 8.3 SQL SERVER中的触发器 160 8.3.1 触发器的概念及作用 160 8.3.2 触发器的种类 161 8.3.3 创建触发器 161 8.3.4 触发器的原理 162 8.3.5 INSTEAD OF 触发器 163 8.3.6 触发器的应用 163 8.4 数据库接口技术 164 8.4.1 ODBC(Open Database Connectivity) 164 8.4.2 JDBC 167 8.5 事务处理 169 8.5.1 事务的基本概念 169 8.5.2 事务处理过程分析 170 8.5.3 SQL的事务管理 171 8.6 并发控制 172 8.6.1 并发处理产生的三种不一致性 172 8.6.2 封锁 174 实践篇 177 第9章 基于SQL SERVER2008的应用实践 177 9.1 SQLSERVER2008的可视化操作方法 177 9.1.1 可视化方式创建数据库 178 9.1.2 可视化方式创建数据表 184 9.1.3 可视化方式进行数据录入 186 9.1.4 分离和附加数据库 188 9.1.5 备份和恢复数据库 190 9.1.6 修改数据库数据文件 192 9.2 SQL SERVER文件组织分析 195 9.3 SQL数据定义功能 198 9.3.1创建数据库的语句 198 9.3.2修改数据库定义的语句 199 9.3.2创建数据表的语句 202 9.4 可视化定义数据完整性的方法 207 9.4.1 设置主键 207 9.4.2 设置“唯一”约束 209 9.4.3 设置参照关系 212 9.5 应用“新建数据表实验程序.JAR”程序建立数据表 213 9.6 应用“结构维护实验.JAR”程序辅助生成修改数据表结构语句 224 9.6.1 操作“数据表结构维护实验.jar” 224 9.6.2 生成数据结构维护语句 225 9.7 认识SQL查询语句 228 9.7.1 单表查询 231 9.7.2 涉及聚集函数的查询 232 9.7.3 多表查询。 233 9.8 应用“查询实验程序.JAR”辅助生成查询语句 235 9.8.1 查询实验程序.jar功能与操作方法 235 9.8.2 应用实验程序生成SELECT语句 236 9.9 应用关系运算.JAR程序学习关系代数理论 239 9.9.1 关系运算.jar”程序操作方法 240 9.9.2 认识关系运算运行结果 241 9.10 建立工资管理系统 242 9.10.1 工资管理系统的需求 243 9.10.2 系统模块结构 244 9.10.3 数据库设计 244 9.10.4 建立工资管理系统 244 9.10.5 运行系统 246 9.11 视图、索引、存储过程、触发器设计方法 248 9.11.1关于规则 249 9.11.2 索引 250 9.11.3 T-SQL实验 250 9.11.4 存储过程 251 9.11.5 触发器 253 9.11.6 默认对象 256 9.11.7 安全 257
个人分类: 生活点滴|2827 次阅读|0 个评论
基于软部件库的软件生产线研究报告
求新 2015-4-17 03:11
一年来,我们对我们研究的软部件库进行了进一步研究,设计了类似于UML的建模工具,使得开发应用系统更加简单,我将之称为基于软部件库的软件生产线。对于提高数据库课程教学质量、更深层次地研究软件复用课题具有意义。 一、关于软件生产线 的认识 软件生产线是杨芙青院士在98年就提出来的一个概念和理想,它是借鉴硬件生产中的生产线概念所定义的软件设计与制作平台,依靠这一平台可以快速、规范地设计并建成满足不同企业需求的应用系统。它和硬件系统也存在不相同之处,硬件系统常常基于生产线生产相同产品,主要起流水线作用;而软件可以很容易地进行复制与拷贝,如果是用来生产相似的软件,就无需生产线了。要生产不同产品而又要实现自动化生产,建模工具是不可缺少的。建模工具必须能和操作者互动,选择所需要的程序进行组装,生产出最终产品。为此,能供生产线选择的程序库必须规范、量少、有比较强的自适应能力,每个程序都应当是对大量实际应用程序整合的结果。归纳上述观点,软件生产线的要素包括建模工具、规模不太大但功能足以满足需要的程序库、系统测试工具等内容。程序库中程序应当由系统模块级、具有高度可复用性、高度自适应性的应用程序组成,否则难以和建模程序接口,也不方便使用。由于是模块级、数量不太多且有自适应性,才能与建模工具有效结合,使能迅速根据需求建模并自动生成应用系统。当系统要求更新、扩展时只需要修改系统模型,就能高速高质量实现从旧系统到新系统的变换。 借助我们所设计的部件库,再设计一套与部件库有良好接口的建模工具可以建立满足上述要求的软件生产线。 二、部件库 本系统基于管理信息系统软部件库设计,所有操作通过自动生成的菜单调用部件库中部件程序实现。本部件库包括约100个部件程序,每个部件程序集成多项系统模块级程序的功能,只需要配置参数就可选择其中一项功能,充当应用系统一个程序模块,完成多项具体工作。部件库包括数据维护、查询、统计分析、导入导出、打印报表与系统管理等各方面功能,能满足一般应用系统设计的需要。 三、建模工具设计方案 1. 用例图 1 )功能 用例图是可视化需求分析工具,可用来描述工作流程、数据需求概要与功能需求概要。运行时,在图形顶层显示工具条,及“数据结构类图”文件名文本框和“组件图”文件名文本框。如果在当前项目文件夹中存在命名为“用例图.txt”的文件,首先按文件内容初始化画板,恢复原用例图图形。否则,显示空绘图板。 2 )主要图形元素:(1)参与者,参与者指工作的主体。(2)用例,用例表示工作内容。(3)实体,实体指参与者操作某一用例时所涉及的数据,一个实体对应一个具体的数据表。(4)文件,文件代表系统外输入输出介质或媒体。(5)箭头线,用箭头线表示参与者、用例、文件之间的关系,用来形象地表现工作流程。(6)虚线,虚线表示某一操作与相关实体或文件的关系。 3 )主要操作 (1)填写文件名,在图形顶层文本框中填写“数据结构类图”文件名和“组件图”文件名或“系统结构类图”文件名。 (2)“查看数据”按钮,查看设计过程中产生的图形数据。 (3)“存盘”按钮,保存在列表中的数据存储到“用例图.txt”中。 (4)“系统初始化”按钮,执行系统初始化程序。 (5)绘制图形元素的操作 用鼠标点击“参与者”、“用例”、“实体”或“文件”按钮,之后在绘图板上点击,回答关于图形名称的提问,可在绘图板上画出相应图形。 (6)绘制箭头线的操作,双击“箭头线”按钮,再用鼠标点在一个图形元素上,按下左键不放拖到另一个图形上,可在绘图板上画出箭头线。 (7)绘制虚线的操作,虚线表现数据处理与相关数据间的关系。双击“虚线”按钮,按下鼠标左键不放从一个图形或箭头线拖到一个实体,可在绘图板上画出虚线。 (8)修改图形名称与删除图形的操作,用鼠标右键点击具体图形,修改或删除图形。 (9)删除线条的操作,(10)移动图形位置的操作 设计一例(图1): 图1 仓储管理系统用例图 2. 数据结构类图 1 )功能 数据结构类图根据用例图中实体情况进一步用类图描述实体的属性以及数据及数据之间联系,每一类图定义一个数据的数据库名称、数据表名称、字段名称及其属性。将根据每一个类图在“系统初始化”中定义的“ODBC数据源”所指向的数据库中建立一个数据表。用1对多或多对多线条形象地描述数据与数据之间的联系。运行时,在图形顶层显示工具条。如果在当前项目文件夹中存在用例图中所填写的“数据结构类图文件名”的文件,则按文件中内容恢复“数据结构类图”;否则,如果存在命名为“用例图.txt”的文件,首先按文件中关于“实体”的数据绘制有关数据表初始类图,其中仅包含数据库名与实体名,实体名将直接用作数据表名。如果存在多个同名实体,只画出一个。如果上述文件均不存在则显示空绘图板。 2 )主要图形元素: (1)“查看数据”按钮(2)类图,用类图表示数据表,用来描述数据表的结构定义。(3) 一对多实线,用来表示数据与数据之间的一对多联系(3)多对多实线,用来表示数据与数据之间的多对多联系。(4)备注框,用来对数据安全性和其他特性进行说明。(5)虚线,用来表示实体类图与备注框之间的联系。 3 )主要操作 (1)绘制或修改类图,先用鼠标点击“类图”按钮,再在绘图板上点击、或用鼠标右键点击图形板上“类图”,选择“修改类图参数并绘制类图”按钮,输入字段名称、数据类型、宽度与小数位、是否允许空值、是否设置为主键、是否设置为外键及相关主表与主键的名称、默认值、值集集合、CHECK约束条件表达式等内容。 (2)查看类图信息,左键点击有关类图或备注框,显示所有字段或备注内容完整信息。(3)填写备注信息,左键点击有关备注框,输入备注信息。(4)删除类图及相关线条,右键点击类图,删除有关类图连同连接到该类图的线条。(5)移动类图,用左键点中并拖动类图,将将类图及相关线条移动到新位置。 (6)绘制线条的操作,双击“一对多线条”按钮或“多对多线条”按钮或“虚线”按钮,在某一类图上按下鼠标左键不放拖到另一个类图或备注框,在绘图板上画出有关线条。(7)删除线条的操作 设计一例(图2): 图2 设计完成的数据结构类图 3. 组件图 1 )功能:较复杂系统常由多个子系统构成,组件图用来表现子系统设置情况,形象地描述系统与子系统之间的联系,设计并保存每个子系统名称、其子系统结构类图数据存放的文件名称,具有生成应用系统菜单及建立应用系统的jar可执行文件的功能。 2 )主要图形元素:(1)“查看数据”按钮 (2)“存盘”按钮 (3)“生成菜单”按钮,根据组件图、子系统结构类图、时序图生成系统运行菜单。(4)“建立系统”按钮,根据组件图、子系统结构类图、时序图生成应用系统可执行程序。(5)类图,表示系统与子系统特性,用来描述应用系统的模块结构。(6) 箭头线 3 )主要操作:(1)绘制或修改类图(2)删除类图及相关线条(3)移动类图(4)绘制线条(5)删除线条 4. 系统结构类图 1 )功能:系统结构类图用于子系统或较简单应用系统的设计,较简单应用系统指系统所有模块的类图可以在一个画面上安装并显示的系统。运行开始,需要定义其系统结构类图文件名,如果存在“组件图”,应当是其中定义的一个子系统结构类图的文件名,如果是较简单应用系统,应当是用例图中定义的组件图的文件名。 本系统用系统结构类图中的类图表现系统每一个模块将调用的程序名称、参数要求,用箭头线表现模块之间的联系。如果设计的是较简单应用系统,将没有组件图,由该程序直接生成应用系统菜单并建立应用系统的jar可执行文件。 2 )主要图形元素:(1)类图(2) 箭头线(3)“查看数据”按钮 (4) “存盘”按钮(5)“生成菜单”按钮 (6)“建立系统”按钮 3 )主要操作(1)绘制或修改类图(2)查看类图(4)删除类图及相关线条(5)移动类图(6)绘制线条的操作(7)删除线条的操作(8)刷新屏幕的操作 设计一例(图3): 图3系统结构类图绘制成功 5. 生成系统的菜单运行情况(图4) : 四、目前有待解决的问题 限于个人水平与条件有限,我们目前所做还是基础性研究,但是可以发现其中存在的机遇与优势,首先是提高开发效率。用来设计一个40个模块、10来个表的系统大概只需要一天到数天就能完成。特别是可实现规范化设计,维护与扩展将变得十分简易,只需改变和修改模型,就能快速完成扩展。如果向用户提供类库,维保工作将可交用户自己进行。操作者完全不需要有语言开发能力,不进入Eclipse等任何开发环境。 其2是对于数据库教学具有意义。自从10年前微软宣布停止发展VFP后,教学数据库特别是数据库基础变得困难,教VFP有点过时的感觉,教Access又完全脱离实用数据库,如果要教SQL Server或Oracle又解决不了应用系统设计的问题。我校目前就结合SQL Server组织教学,难度极大,效果很差。目前这套系统至少比各种数据库内嵌语言功能都强,要好学、好用得多。 第3,我个人认为可以考虑因特网应用问题。WEB统治因特网时间太久了,这种一统天下的局面难以适应新因特网的需要。如果有能很容易地进行部署、统一快速地更新、自适应的系统将可挑战WEB。 目前,我们在加紧设计“时序图”与工作流引擎,以使有更广应用天地,预期在近期能完成。 特别希望能制定部件库的规范与标准,研究规范的部件由构件与类集成的方法,希望部件能更贴近应用,在数量不大量增加的情况下能尽量满足应用的需要。非常希望能得到各方面领导与专家的指导与帮助。
个人分类: 生活点滴|3038 次阅读|0 个评论
软部件库(JAVA学习版)试发布版发布说明
求新 2014-4-14 22:04
随《数据库系统原理与应用》一书出版,现试发布“管理信息系统软部件库( JAVA 学习版)”(试发布版)全部源代码及“部件库最小系统( VFP4.0 版和网络版)”全部源代码。 您愿意研究探索软件生产工业化、软件生产线实现之路吗? 您希望在一个月内完成毕业设计吗? 您希望自己动手建一个管理信息系统吗? 您希望深入学习数据库与 JAVA 吗? 您希望让小学生也能用好数据库吗? 您希望能自己动手亲自维护您的管理系统吗? …… 您不妨下载本系统试运行一下吧。 “管理信息系统软部件”不以具体的应用系统为目标,而是根据对任意的“数据库”的基本操作进行设计,从实际应用角度表现数据库的理论与方法,将界面设计与功能设计有机结合到一起,围绕数据管理、数据定义、数据操作展开。它就如同电子产品中的智能插件、机械产品中的通用部件一样,只需设定初始参数、拨定若干开关就能用于新的场合。以之为实验工具可以帮助更深入地理解数据库的基本理论与基本概念。“管理信息系统软部件库( JAVA 学习版)”介绍了软部件的设计方法,每一个部件都可以用于实际应用系统的设计,读者可以从中学习利用 JAVA 语言设计数据库应用系统的基本方法。“ JAVA 学习版”要求突出管理信息系统一般程序模块的界面要求与设计方法,目标是提高系统易维护性与易扩展性,让一般应用人员也能很容易地学习与使用,降低系统维护费用。强调其在不同应用系统中的通用性,不刻意地强调模块内部的软件复用。要求每一个部件只由一到二个程序文件构成,尽量少用公用的程序库,内部允许用中文词汇作变量名、方法名与对象名,使非计算机专业读者也能比较容易地读懂甚至进行维护操作,它们将让读者感觉到学习 java 与应用系统的设计并不那么难。 “ VFP ”是桌面数据库系统,对环境要求简单,操作快捷,应用“部件库最小系统( VFP4.0 版或网络版)”作为实验或课堂演示工具,也可帮助加深对数据库及其应用系统的了解。为让大家深入研究部件技术,本次将全部发布它们的原代码,但在教材中并不涉及。教师可以选择“ JAVA 学习版”或“ VFP4.0 版”或“ VFP 网络版”其中一种作为实验工具。这些系统中的“软部件”是范例、又是工具且具有实用价值。选择合适的“软部件”程序拷贝并用到您的系统中,可让初学者在几个小时内就能用 JAVA 语言或 VFP 语音设计出简单的数据库应用系统。通过这样的实践真正了解数据库系统的设计方法、了解应用系统一般模块构成及各种功能模块的需求与结构,理解这些模块的设计目标、设计方法与设计技巧,使能熟练掌握数据库应用系统的设计。 “ JAVA 学习版”包括约 100 个软部件程序和十来个配合部件程序实现各类输出的构件程序,较全面实现从 VFP 版向 JAVA 版的移植,最早实验程序在 2005 年完成,又经过许多年的补充与完善,完全达到我们 03 年与 04 年国家自然基金申请书(均未获批准)的目标。应用该系统中软部件设计应用系统,只需正确设计数据库结构,运行本系统提供的 cover.java 程序定义封面的属性,再运行 HDDMenuCreate.java 定义菜单结构,之后进行封装,应用系统就建立完成了。原来需要三个月才能完成的毕业设计,现在在完成需求分析与总体设计后很快就能应用 JAVA 语言实现。本系统程序中关键内容,已经在《数据库系统原理与应用》一书。从中,读者将不只是学习少数几个假定应用系统的设计方法,而是要实地设计并建立一到多个真实的数据库应用系统,实战式的学习数据库系统设计与实现的方法。对于完整、全面地学习数据库的理论与设计数据库应用系统的方法进而提高动手能力更具有意义。 本系统软部件采用 JAVA 语言设计,但可以先不管源代码,重点玩转数据库,有条件的回过头再深研程序设计方法。 “部件库( JAVA 学习版)”是为学习数据库原理而研制的,只是示意性软件,离商业应用还有比较大的距离,希望对读者学习数据库原理与应用有所帮助。欢迎读者不吝指教,多予批评。 《数据库系统原理与应用》由程学先教授主编,曾玲、程传慧、陈永辉、杨晓艳、张慧萍等参加编写并完成课件、试题库与实验手册的制作。管理信息系统软部件程序由程学先、龚晓明、王富强、程传庆、齐赛、王玉明、陈义、王嘉、顾梦霞、贺红艳、齐赛、王玉民、聂志恒、张卫东、杨帅等设计,参加其他电子文稿设计与制作的还有刘伟、陈永辉、程传慧、杨晓艳、张慧萍等,在此一并表示感谢。 具体操作: 1 、安装 SQL Server 2008,JDK1.6 和 Eclipse 等软件,并做好环境配置。 2 、新建文件夹,进入 Eclipse ,定义新建项目,例如 P1 。将本原程序的所有 JAVA 原程序文件拷贝到项目文件夹例如 P1 下面 src 文件夹中,将本原程序的 P1 下面的各文件拷贝到生成的项目文件夹例如 P1 中。 3 、双击运行“ 0 系统初始化 .jar ”程序。 (附图1) 其 中关于 DBMS 填写“ sqlserver ”等内容。关于标题等以下内容要填宽度、高度、字号等数据,均按字符个数填写。全部输完后,按“辅助计算”换成象素单位数据。最后按“表格内容存盘”保存设置。 4 、双击运行“ 0 生成菜单 .jar ”程序。 (附图2) 首先建立菜单框架: 先输入节点名称,点击父节点,点击“添加节点”按钮,再输入以下一级节点名称等。 之后一一点击各个叶节点,对每个叶节点,先选择部件名称,将呈现不同界面,按界面要求输入参数。之前请阅看《数据库系统原理与应用》一书中相应内容介绍,或直接用记事本打开相应原程序代码,查看程序开始部分注释内容,了解每个部件功能、性能、参数要求等内容,再选择填写。本系统为学习版,程序不具备坚固性,设置错误将导致无法运行。本系统中涉及 office 文件和网络导入、导出操作的部件需要下载有关软件包才能使用,在下载并安装到系统前请先不要选用,否则编译将报错。每个叶节点参数输入完成后,必须点击“暂存”按钮。全部参数输入完成后点击“存盘”按钮和“生成菜单”按钮,之后再退出。 特别注意,如果不按“暂存”按钮、“存盘”按钮,数据将不被保存。以后如果修改菜单,可以重新运行该程序进行修改。但是注意,本系统某些部件运行依赖在菜单程序中记入的关于数据表名、字段名、连接语句的内容,在一次填写“表名”或之后修改菜单时这些内容可能与实际不相符,此时必须修改 P1 文件夹下文件“ menu1.txt ”,否则有时会出现运行错误。 为方便学习,尽量减少程序复杂度,本系统程序除单记录维护 4 外每考虑并行运行问题,同一部件为不同用途调用不能并行出现在屏幕上,必须一个关闭后再调用第 2 个,不同部件一般不受此限,作为研究性课题,单记录维护 4 不受此限。 本系统考虑过通用于不同的 DBMS 数据库系统的问题,但只在 SQL Server2008 中进行了测试,如果用在别的数据库系统中,有可能要修改程序中驱动程序语句及某些部件中设计的数据类型对照表。 5 、进入 Eclipse ,运行 main1.java 或 main2.java ,进入您的系统开始试验运行。或,右键点击您的项目名称,选择“导出”、“生成可执行 jar ”,可以分别选 main1.java 和 main2.java 为主引导程序,打成二个包(二个 jar 文件包),生成执行程序。一个是水平菜单控制的系统,一个是目录树菜单控制的系统。 欢迎对程序运行中出现的问题提出批评或改进意见。本系统的发布,希望达到抛砖引玉的目的,希望有更多的人关心或研究部件库,希望通过软件设计成本与维护成本的下降和应用系统设计难度的下降促使计算机应用更加广泛与普及,希望能产生软部件标准与规范、建成国家或省级各种应用软部件库,希望软件生产工业化的目标能早日实现。 谢谢所有参与部件技术研究的老师和同学,谢谢所有支持我们研究的领导们。 下载地址: http://202.114.177.212/sjk 我们的联系邮箱: 1243206676@qq.com
个人分类: 生活点滴|2958 次阅读|1 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-14 11:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部