📄 book.java
字号:
/* * Book.java * 说明:图书档案 * 编写:倪少春 * Created on 2005年1月1日, 上午9:13 */public class Book extends javax.swing.JInternalFrame { private int rowCount=1;//行数 private final int colCount=6;//列数 private Object[][] ob=null; private DataConnect dc=null;//自定义数据库连接程序 //自定义MODEL用在JTable private class MyTable extends javax.swing.table.DefaultTableModel { private Class[] types =null; private boolean[] canEdit; public MyTable(Object[][] ob) { super(ob,new String[] {"图书ID", "图书名", "出版社", "作者", "条码" ,"类名"}); types= new Class[6]; try { types[0]=Class.forName("java.lang.Integer"); types[1]=Class.forName("java.lang.String"); types[2]=Class.forName("java.lang.String"); types[3]=Class.forName("java.lang.String"); types[4]=Class.forName("java.lang.String"); types[5]=Class.forName("java.lang.String"); } catch(ClassNotFoundException e) { System.out.println("类路径安装错误"); } canEdit= new boolean [] { false, true, true, true, true, false }; } public Class getColumnClass(int columnIndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }; private MyTable mytable; //刷新类别list private void sort_Refresh() { try { java.sql.Statement stmt=dc.getStatement(); String strSql="SELECT name FROM BookSort ORDER BY id"; java.sql.ResultSet rs=stmt.executeQuery(strSql); String strSort=""; while(rs.next()) strSort=strSort+"#"+rs.getString(1); if(strSort!=null) { strSort="所有类别"+strSort; String[] strList=strSort.split("#"); class AM extends javax.swing.AbstractListModel { String[] strings; public AM(String[] strList) { strings=strList; } public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }; jl_sort.setModel(new AM(strList)); } } catch(java.sql.SQLException sqle) { javax.swing.JOptionPane.showMessageDialog(this,"类别刷新出错"); } } private void book_Refresh(String sortName) { String strSql= "SELECT Book.id," + "Book.name," + "Book.author," + "Book.book_concern," + "Book.tm," + "BookSort.name as SortName " + "FROM Book,BookSort WHERE Book.sortId=BookSort.id"; String strRows= "SELECT count(Book.id) " + "FROM Book,BookSort WHERE Book.sortId=BookSort.id"; if(sortName!=null) { strSql=strSql+" AND BookSort.name='"+sortName.trim()+"'"; strRows=strRows+" AND BookSort.name='"+sortName.trim()+"'"; } try { java.sql.Statement stmt=dc.getStatement(); java.sql.ResultSet rs=stmt.executeQuery(strRows); rs.next(); rowCount=rs.getInt(1); ob=new Object[rowCount][colCount]; if(rowCount!=0) rs=stmt.executeQuery(strSql); for(int i=0;i<ob.length;i++) { if(rs.next()==false)break; ob[i][0]=new Integer(rs.getInt(1));//id ob[i][1]=rs.getString(2);//书名 ob[i][2]=rs.getString(3);//作者 ob[i][3]=rs.getString(4);//出版社 ob[i][4]=rs.getString(5);//条码 ob[i][5]=rs.getString(6);//类名 } mytable=new MyTable(ob); jtb_book.setModel(mytable); } catch(java.sql.SQLException sqle) { javax.swing.JOptionPane.showMessageDialog(this,"图书表刷新错误"); } } private void button_Refresh() { boolean b=true; if(jl_sort.getSelectedIndex()==0) b=false; jb_insert.setEnabled(b); jb_delete.setEnabled(b); jb_save.setEnabled(b); } public Book(DataConnect dc) { initComponents(); this.dc=dc; sort_Refresh(); jl_sort.setSelectedIndex(0); this.jl_sortMouseClicked(null); } private void initComponents() {//GEN-BEGIN:initComponents jToolBar1 = new javax.swing.JToolBar(); jb_insert = new javax.swing.JButton(); jb_save = new javax.swing.JButton(); jb_delete = new javax.swing.JButton(); jb_Refresh = new javax.swing.JButton(); jl_sort = new javax.swing.JList(); jScrollPane1 = new javax.swing.JScrollPane(); jtb_book = new javax.swing.JTable(); setClosable(true); setResizable(true); setTitle("\u56fe\u4e66\u6863\u6848"); jb_insert.setText("\u63d2\u884c"); jb_insert.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jb_insertMouseClicked(evt); } }); jToolBar1.add(jb_insert); jb_save.setText("\u4fdd\u5b58"); jb_save.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jb_saveMouseClicked(evt); } }); jToolBar1.add(jb_save); jb_delete.setText("\u5220\u884c"); jToolBar1.add(jb_delete); jb_Refresh.setText("\u5237\u65b0"); jb_Refresh.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jb_RefreshMouseClicked(evt); } }); jToolBar1.add(jb_Refresh); getContentPane().add(jToolBar1, java.awt.BorderLayout.NORTH); jl_sort.setModel(new javax.swing.AbstractListModel() { String[] strings = { "所有类别" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); jl_sort.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jl_sortMouseClicked(evt); } }); getContentPane().add(jl_sort, java.awt.BorderLayout.WEST); jtb_book.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null, null, null}, {null, null, null, null, null, null}, {null, null, null, null, null, null}, {null, null, null, null, null, null} }, new String [] { "图书ID", "图书名", "作者", "出版社", "条码", "类名" } ) { Class[] types = new Class [] { java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class }; boolean[] canEdit = new boolean [] { false, true, true, true, true, true }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jScrollPane1.setViewportView(jtb_book); getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER); pack(); }//GEN-END:initComponents private void jb_insertMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jb_insertMouseClicked //插行 jb_saveMouseClicked(null); javax.swing.ListModel lm=jl_sort.getModel(); Object [][] old= ob; rowCount=rowCount+1; ob=new Object[rowCount][colCount]; for(int i=0;i<old.length;i++) for(int j=0;j<old[0].length;j++) ob[i][j]=old[i][j]; //计算当前ID最大值 try { java.sql.Statement ps=dc.getStatement(); java.sql.ResultSet rs=ps.executeQuery( "select max(id) from Book");rs.next(); int maxId=rs.getInt(1); ob[ob.length-1][0]=new Integer(maxId+1); ob[ob.length-1][ob[0].length-1]=lm.getElementAt(jl_sort.getSelectedIndex()); } catch(java.sql.SQLException sqle) { javax.swing.JOptionPane.showMessageDialog (this,"插行出现错误,错误提示:"+sqle,"错误提示", javax.swing.JOptionPane.ERROR_MESSAGE); } mytable=new MyTable(ob); jtb_book.setModel(mytable); }//GEN-LAST:event_jb_insertMouseClicked private void jb_saveMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jb_saveMouseClicked javax.swing.table.TableModel tm=jtb_book.getModel(); try { java.sql.PreparedStatement ps_cx=dc.getPreparedStatement( "SELECT COUNT(id) FROM Book WHERE id=?"); java.sql.PreparedStatement ps_update=dc.getPreparedStatement( "UPDATE Book SET name=?,author=?,book_concern=?,tm=? where id=?"); java.sql.PreparedStatement ps_insert=dc.getPreparedStatement( "INSERT INTO Book(id,name,author,book_concern,tm,sortid) " + "VALUES(?,?,?,?,?,?)"); java.sql.ResultSet rs=null; java.sql.Statement stmt=dc.getStatement(); javax.swing.ListModel lm=jl_sort.getModel(); String sortName= lm.getElementAt(jl_sort.getSelectedIndex()).toString(); rs=stmt.executeQuery( "SELECT id from BookSort WHERE name='" + sortName+"'"); if(rs.next()==false) { javax.swing.JOptionPane.showMessageDialog (this,"类别名为:'"+sortName+"'未查到"); return; } int sortId=rs.getInt(1); rs=null; stmt.close(); for(int i=0;i<tm.getRowCount();i++) { if( tm.getValueAt(i,0)!=null&&//id tm.getValueAt(i,1)!=null&&//name tm.getValueAt(i,2)!=null&&//author tm.getValueAt(i,3)!=null&&//book_concern tm.getValueAt(i,4)!=null&&//tm tm.getValueAt(i,5)!=null)//BookSort.name { int Id=Integer.parseInt(tm.getValueAt(i,0).toString()); ps_cx.setInt(1, Id); rs=ps_cx.executeQuery(); rs.next(); if(rs.getInt(1)==1) { //insert ps_update.setString(1,tm.getValueAt(i,1).toString()); ps_update.setString(2,tm.getValueAt(i,2).toString()); ps_update.setString(3,tm.getValueAt(i,3).toString()); ps_update.setString(4,tm.getValueAt(i,4).toString()); ps_update.setInt(5,Id); ps_update.execute(); } else { //update ps_insert.setInt(1,Id); ps_insert.setString(2,tm.getValueAt(i,1).toString()); ps_insert.setString(3,tm.getValueAt(i,2).toString()); ps_insert.setString(4,tm.getValueAt(i,3).toString()); ps_insert.setString(5,tm.getValueAt(i,4).toString()); ps_insert.setInt(6, sortId); ps_insert.execute(); } } else { javax.swing.JOptionPane.showMessageDialog (this,"录入表中含有未输入或未确认的信息\n请检查!"); return; } } this.book_Refresh(sortName); } catch(java.sql.SQLException sqle) { javax.swing.JOptionPane.showMessageDialog (this,"数据库操作错误"+sqle,"错误提示"+"\n"+sqle.getStackTrace(), javax.swing.JOptionPane.ERROR_MESSAGE); } }//GEN-LAST:event_jb_saveMouseClicked private void jb_RefreshMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jb_RefreshMouseClicked sort_Refresh(); jl_sort.setSelectedIndex(0); this.jl_sortMouseClicked(null); }//GEN-LAST:event_jb_RefreshMouseClicked private void jl_sortMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jl_sortMouseClicked int index=jl_sort.getSelectedIndex(); javax.swing.ListModel lm=jl_sort.getModel(); if(index!=0) { String sortName=lm.getElementAt(index).toString(); this.book_Refresh(sortName); } else { this.book_Refresh(null); } button_Refresh(); }//GEN-LAST:event_jl_sortMouseClicked // 变量声明 - 不进行修改//GEN-BEGIN:variables private javax.swing.JScrollPane jScrollPane1; private javax.swing.JToolBar jToolBar1; private javax.swing.JButton jb_Refresh; private javax.swing.JButton jb_delete; private javax.swing.JButton jb_insert; private javax.swing.JButton jb_save; private javax.swing.JList jl_sort; private javax.swing.JTable jtb_book; // 变量声明结束//GEN-END:variables }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -