Java之数据库连接(二)

Java+MySql:学生图书信息管理系统

       该程序片段改进了Java之数据库连接(一)的方法,并在此基础上实现了一个小型的基于GUI的学生图书管理系统,实现了学生借阅图书信息的增加、删除、更新、查看功能。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

	/**
	*@Program ConnDB:【1】连接数据库(连接MYSQL)
	*@Author: Livjunjie
	*@Time:   2013年10月20日17:03:47
	*/
	package cn.xuc.edu.JDBC;
		
	import java.sql.*;
	import java.util.Vector;
	
	public class ConnDB {
	
		public static void main(String[] args) {
			// TODO Auto-generated method stub
			Connection conn=null;
			
			try {
				//连接mysql
				Class.forName("com.mysql.jdbc.Driver");
			    String url="jdbc:mysql://localhost:3306/book";
				String user="root";
				String password="123456";
			
			 conn=DriverManager.getConnection(url,user,password);
				System.out.println("数据库连接成功");
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				System.out.println("数据库驱动没有找到");
				e.printStackTrace()
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				System.out.println("数据库连接失败");
				e.printStackTrace();
			}
			finally{
				if(conn!=null)
					try {
						conn.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						System.out.println("数据库关闭失败");
						e.printStackTrace();
					}
			}
		}
	
	/**
	*@Program SQLDemo: 【2】加载驱动程序
	*@Author: Livjunjie
	*@Time:   2013年10月20日17:06:21
	*/
	package cn.xuc.edu.JDBC;

	import java.sql.Connection;
	import java.sql.DriverManager;
	import java.sql.ResultSet;
	import java.sql.SQLException;
	import java.sql.Statement;
	import java.util.Vector;
	
	
	public class SQLDemo {	
		public static Vector queryData(String sql )  {
			// TODO Auto-generated method stub
			// TODO Auto-generated method stub
			Connection conn=null;
	                Vector data=new Vector();
			try {
				//连接mysql
				Class.forName("com.mysql.jdbc.Driver");
				String url="jdbc:mysql://localhost:3306/book";
				String user="root";
				String password="123456";
				conn=DriverManager.getConnection(url,user,password);
				System.out.println("数据库连接成功");
				//创建Statement
				Statement stmt=conn.createStatement();
				//执行sql语句
			    sql="select * from book";
				ResultSet rs=stmt.executeQuery(sql);
				//处理查询结果
				while(rs.next()){
					Vector line=new Vector();
					for(int i=1;i<=6;i++){
						//System.out.println(rs.getObject(i));
						line.add(rs.getObject(i));
					}
				data.add(line);
				}
				rs.close();
				stmt.close();
				conn.close();
				//System.out.println(data);
				return data;
			
			} catch (ClassNotFoundException e) {
				System.out.println("数据库驱动没有找到");
				e.printStackTrace();
				
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				System.out.println("数据库连接失败");
				e.printStackTrace();
			}
			finally{
				if(conn!=null)
					try {
						conn.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						System.out.println("数据库关闭失败");
						e.printStackTrace();
					}
			}
			return null;
		}

	    //添加数据
		public static boolean insertData1(){
			Connection conn=null;
			 try {
				Statement stmt=conn.createStatement();
				//写插入数据的SQL语句  这儿应该怎么写呢?
				String sql="select * from book";
				//执行插入数据的SQL语句,返回受影响的行数
				int rs=stmt.executeUpdate(sql);
				stmt.close();
				conn.close();
               //如果受影响的行数大于零,则插入数据成功,返回true,否则插入数据失败,返回false.
				if(rs>0){
					return true;
				}else{
					return false;
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return false;
		}
	}

	/**
	*@Program LoginUI:【3】GUI窗口程序代码
	*@Author: Livjunjie
	*@Time:   2013年10月20日17:17:29
	*/		
	package cn.xuc.edu.JDBC;
	
	import java.awt.Color;
	import java.awt.Rectangle;
	import java.awt.event.ActionEvent;
	import java.util.Vector;
	
	import javax.swing.ButtonGroup;
	import javax.swing.JTable;
	import javax.swing.table.DefaultTableModel;
	import javax.swing.table.JTableHeader;

	public class LoginUI extends javax.swing.JFrame {
		int index=0;
		/** Creates new form Lgin */
		DefaultTableModel dtm=new DefaultTableModel();
		JTable tblStudent=new JTable(dtm);
		Vector data=new Vector();
		Vector title=new Vector();
		JTableHeader jTableHeader1=tblStudent.getTableHeader();
		public Login2() {
			initComponents();
		}
		private void initComponents() {
	        jLabel1 = new javax.swing.JLabel();
			jTextField1 = new javax.swing.JTextField();
			jLabel2 = new javax.swing.JLabel();
			jTextField2 = new javax.swing.JTextField();
			jLabel3 = new javax.swing.JLabel();
			jTextField3 = new javax.swing.JTextField();
			jLabel4 = new javax.swing.JLabel();
			jTextField4 = new javax.swing.JTextField();
			jLabel5 = new javax.swing.JLabel();
			jTextField5 = new javax.swing.JTextField();
			jLabel6 = new javax.swing.JLabel();
			jRadioButton1 = new javax.swing.JRadioButton();
			jRadioButton2 = new javax.swing.JRadioButton();
			jButton1 = new javax.swing.JButton();
			jButton2 = new javax.swing.JButton();
			jButton3 = new javax.swing.JButton();
			jButton4 = new javax.swing.JButton();
			jButton5 = new javax.swing.JButton();
		    jButton6 = new javax.swing.JButton();
			jButton7 = new javax.swing.JButton();
			jButton8 = new javax.swing.JButton();
			jScrollPane1 = new javax.swing.JScrollPane();
			jTable1 = new javax.swing.JTable();
	
	       	setTitle("学生图书信息管理系统");
	        
          setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
	    	tblStudent.setBounds(new Rectangle(12,250,515,163));
			jTableHeader1.setBounds(new Rectangle(12,200,500,0));
			this.add(tblStudent);
			this.add(jTableHeader1);
			//调用在JTable中显示数据的方法
			showTableData();
			//调用在JTextFiled中显示数据的方法
			showJTextFiledData(index);
	       	jLabel1.setText("\u56fe\u4e66\u7f16\u53f7");
			jLabel2.setText("\u56fe\u4e66\u540d\u79f0");
			jLabel3.setText("\u4f5c\u8005");
			jLabel4.setText("\u51fa\u7248\u793e");
			jLabel5.setText("\u51fa\u7248\u65e5\u671f");
			jLabel6.setText("\u5728\u5e93\u72b6\u6001");
			jRadioButton1.setText("\u5728\u5e93");
			jRadioButton2.setText("\u501f\u51fa");
			jButton1.setText("<<");
            	jButton1.addActionListener(new   java.awt.event.ActionListener() {
			Public voidactionPerformed(java.awt.event.ActionEvent evt) {
				jButton1ActionPerformed(evt);
			}
		});

		jButton2.setText("<");
		jButton2.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton2ActionPerformed(evt);
			}
		});

		jButton3.setText(">");
		jButton3.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton3ActionPerformed(evt);
			}
		});
		jButton4.setText(">>");
		jButton4.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton4ActionPerformed(evt);
			}
		});
		jButton5.setText("\u6dfb\u52a0");
		jButton5.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton5ActionPerformed(evt);
			}
		});
		jButton6.setText("\u4fee\u6539");
		jButton6.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton6ActionPerformed(evt);
			}
		});
		jButton7.setText("\u5220\u9664");
		jButton7.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton7ActionPerformed(evt);
			}
		});
		jButton8.setText("\u4fdd\u5b58");
		jButton8.addActionListener(new  java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent{ 
				jButton8ActionPerformed(evt);
			}
		});
	 	 //注意此处的代码
			jScrollPane1.setViewportView(tblStudent);
	
			javax.swing.GroupLayoutlayout=new javax.swing.GroupLayout(getContentPane());
			getContentPane().setLayout(layout);
			layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
			javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addContainerGap().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.			TRAILING.addComponent(jScrollPane1,javax.swing.GroupLayout.Alignment.LEADING,javax.swing.GroupLayout.DEFAULT_SIZE,420,Short.MAX_VALUE).addGroup(javax.swing.GroupL			ayout.Alignment.LEADINlayout.createSequentialGroup().addComponent(jLabel1).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jTextF			ield1,javax.swing.GroupLayout.PREFERRED_SIZE,89,javax.swing.GroupLayout.PREFERRED_SIZE)).addGroup(javax.swing.GroupLayout.Alignment.LEADING,layout.createSequentia			lGroup().addComponent(bg.add(jRadioButton1);
		        bg.add(jRadioButton2);
		        pack();
		        this.setLocationRelativeTo(null);
		}// </editor-fold>
		private void showJTextFiledData(int index) {
			// TODO Auto-generated method stub
			//调用查询数据获得的方法
			data=SQLDemo.queryData("Select *from book");
			//判断如果获取数据的数量大于零则显示数据
			if(data.size()>0){
				//实例化一个书类的对像
	            Book bk=new Book();
				//取出data中索引为index的数据
				Vector vBk=(Vector)data.get(index);
				//调用获Book类的获取某本书的信息的方法
				bk.getBookInfo(vBk);
				//将书籍编号显示在书籍编号文本框
				jTextField1.setText(bk.bkID);
				jTextField2.setText(bk.bkName);
				jTextField3.setText(bk.bkAuthor);
				jTextField4.setText(bk.bkPress);
				jTextField5.setText(bk.bkPDat);
				//判断在库状态是在库,则将在库按钮选中
				if(bk.bkStatus.equals("在库")){
					jRadioButton1.setSelected(true);
			    }else{
	            	//如果状态是借出,则将借出按钮选中
					jRadioButton2.setSelected(true);
			}
			}
		}
	           //GEN-END:initComponents
		private void showTableData() {
			 // TODO Auto-generated method stub
		        //准备表头中的数据
				title.add("图书编号");
				title.add("图书名称");
				title.add("作者");
				title.add("出版社");
				title.add("出版日期");
				title.add("在库状态");
			//调用查询数据获得的方法
				data=SQLDemo.queryData("Select *from book");
			//使用默认表格模式dtm在表格中显示数据
				dtm.setDataVector(data,title);
			}
		PrivatevoidjButton8ActionPerformed(java.awt.event.ActionEvent evt) {
			// TODO add your handling code here:
		}
		privatevoidjButton7ActionPerformed(java.awt.event.ActionEvent evt) {
			// TODO add your handling code her
		privatevoidjButton6ActionPerformed(java.awt.event.ActionEvent evt) {
			// TODO add your handling code here:
		}
	    privatevoidjButton5ActionPerformed(java.awt.event.ActionEvent evt) {
			// TODO add your handling code here:    
		}
		privatevoidjButton4ActionPerformed(java.awt.event.ActionEvent evt) {
			// TODO add your handling code here:
			index=data.size()-1;
			showJTextFiledData(index);
		}
		private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
			// TODO add your handling code here:
			index++;
			if(index<data.size())
			showJTextFiledData(index);
		}
		privatevoid jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
			// TODO add your handling code here:
			index--;
			if(index>=0)
			showJTextFiledData(index);	
		}
		private void jButton1ActionPerformed(ActionEvent e) {
			// TODO add your handling code here:
			index=0;
			showJTextFiledData(index);
		}

	
		/**
		 * @param args the command line arguments
		 */
		public static void main(String args[]) {
			java.awt.EventQueue.invokeLater(new Runnable() {
				public void run() {
					new Login2().setVisible(true);
				}
			});
		}
		//GEN-BEGIN:variables
		// Variables declaration - do not modify
		private javax.swing.JButton jButton1;
		private javax.swing.JButton jButton2;
		private javax.swing.JButton jButton3;
		private javax.swing.JButton jButton4;
		private javax.swing.JButton jButton5;
		private javax.swing.JButton jButton6;
		private javax.swing.JButton jButton7;
		private javax.swing.JButton jButton8;
	    private javax.swing.JLabel jLabel1;
		private javax.swing.JLabel jLabel2;
		private javax.swing.JLabel jLabel3;
		private javax.swing.JLabel jLabel4;
		private javax.swing.JLabel jLabel5;
		private javax.swing.JLabel jLabel6;

		private javax.swing.JRadioButton jRadioButton1;
		private javax.swing.JRadioButton jRadioButton2;

		private javax.swing.JScrollPane jScrollPane1;
		private javax.swing.JTable jTable1;

		private javax.swing.JTextField jTextField1;
		private javax.swing.JTextField jTextField2;
		private javax.swing.JTextField jTextField3;
		private javax.swing.JTextField jTextField4;
		private javax.swing.JTextField jTextField5;
		 //实例化单选按钮组
	   	 ButtonGroup bg=new ButtonGroup();
	    	 //定义数据索引
	    	 int indexd=0;
		// End of variables declaration//GEN-END:variables
	
	}
/**
*@Program Application:启动应用程序
*@Author: Livjunjie*@Time: 2013年10月20日17:54:36
*/
package cn.xuc.edu.JDBC;public class Application {
/** 
* @param args 
*/
public static void main(String[] args){
              // TODO Auto-generated method stubnew 
              LoginUI().setVisible(true);
       }
}
程序运行结果示例图:
(1)图书借出状态
(2)图书在库状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值