浅谈JDBC

来源:互联网 发布:软件项目建议书模板 编辑:程序博客网 时间:2024/06/07 06:53

    使用数据库对数据资源进行管理,可以减少数据的冗余度,节省数据的存储空间,实现数据资源的充分共享,为用户提供管理数据的简便手段.在学习VB的时候,我们接触了ODBC,在学习VB.NET的时候,我们接触了ADO.NET ,Java的学习中,又来了一个JDBC,但是他们之间都是大同小异的.

    JDBC(Java DataBase Connectivity)是为java语言定义的一个SQL调用级的数据库编程接口,通过JDBC API,程序员能够在java程序中方便地连接和访问数据库,实现java的数据库编程.JDBC隔离了java与不同数据库之间的对话,使得java程序无须考虑不同的数据库管理系统平台.javaJDBC结合起来将使程序员只须写一遍程序就可让它在任何平台上运行.java程序通过JDBC访问数据库的关系如下图所示:


JDBC是一组有java语言编写的类和接口,其中API包含在java.sqljavax.sql两个包中.JDBC API 可分为两个层次,面向底层的JDBC Driver API和面向程序员的JDBC API.它们的关系如下所示:


从上图中,我们可以看出,应用程序通过JDBC API 和底层的JDBCDriver API打交道.其中JDBCDriver可以分为四中类型.

JDBC有了初步的了解,我们再来一个例子吧--查询和添加数据.

import javax.swing.*;import  javax.swing.border.*;import java.awt.*;import java.awt.event.*;import java.sql.*;//实现ActionListener接口,因此其对象就是一个事件监听器public class PersonManager implements ActionListener {JFrame f=null;    //类属性public PersonManager() //构造方法{f=new JFrame("员工信息");  //创建一个顶层容器Container contentPane=f.getContentPane(); //获得其内容面板JPanel buttonPanel =new JPanel();  //创建一中间容器JPanelJButton b=new JButton("员工登记"); //创建一原子组件--按钮b.addActionListener(this );  //为按钮添加事件监听器对象buttonPanel.add(b) ; //将此按钮添加到中间容器b=new JButton("退出系统"); //再创建一"退出系统"按钮b.addActionListener(this);buttonPanel.add(b) ; //将此按钮添加到中间容器buttonPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.blue,2),"员工登记系统",TitledBorder.CENTER,TitledBorder.TOP)); //设置中间容器边框contentPane.add(buttonPanel,BorderLayout.CENTER);JMenuBar mBar=new JMenuBar() ; //创建菜单条JMenu selection= new JMenu("选项");JMenuItem regist=new JMenuItem("员工登记");JMenuItem sum=new JMenuItem("统计");selection.add(regist);selection.add(sum);JMenu sys=new JMenu("系统");JMenuItem exit=new JMenuItem("退出系统");sys.add(selection);mBar.add(sys);f.setJMenuBar(mBar);//为窗体增加菜单regist.addActionListener(this);  //为菜单添加事件监听器sum.addActionListener(this) ; exit.addActionListener(this);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() {  //为窗口操作添加监听器public void windowClosing(WindowEvent e){System.exit(0);}});}public void actionPerformed (ActionEvent e)  //实现ActionListener 接口{String cmd=e.getActionCommand();//从事件对象获得相关名称if (cmd.equals("员工登记")) {  //根据名称选择相应事件new RegistSystem(f);    //显示员工登记对话框}else if (cmd.equals("退出系统")) {System.exit(0);}else if (cmd.equals("统计")) {try {Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  //加载数据库引擎,返回给定字符串名称String url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=PIMS"; //连接数据库String user="sa";String password="123456";//动态导入数据库的驱动Connection conn= DriverManager.getConnection(url, user, password); //连接数据库对象Statement stmt=conn.createStatement(); //执行SQL 语句ResultSet rSet =stmt.executeQuery("select * from person ");int i=0;while(rSet.next()){i=i+1;}JOptionPane.showMessageDialog(f, "共有"+i+"名员工");  //显示信息对话框stmt.close();  conn.close();   //关闭数据库的连接} catch (Exception ex) {// TODO: handle exception}}}public static void main(String[] args){new PersonManager();}}class RegistSystem implements ActionListener {  //用于产生JDialog,实现事件监听JDialog dialog1;JTextField tF1=new JTextField();JTextField tF2=new JTextField();JTextField tF3=new JTextField();JTextField tF4=new JTextField();JTextField tF5=new JTextField();JTextField tF6=new JTextField();@SuppressWarnings("deprecation")RegistSystem(JFrame f)  //构造方法,从其调用方法中获得对话框的父窗体{dialog1=new JDialog(f,"员工登记",true);  //产生一modal 对话框Container dialogPane=dialog1.getContentPane();dialogPane.setLayout(new GridLayout(7,2));dialogPane.add(new JLabel("员工编号:",SwingConstants.CENTER));dialogPane.add(tF1);dialogPane.add(new JLabel("员工姓名:",SwingConstants.CENTER));dialogPane.add(tF2);dialogPane.add(new JLabel("部门编号:",SwingConstants.CENTER));dialogPane.add(tF3);dialogPane.add(new JLabel("职务:",SwingConstants.CENTER));dialogPane.add(tF4);dialogPane.add(new JLabel("工资:",SwingConstants.CENTER));dialogPane.add(tF5);dialogPane.add(new JLabel("学历编号:",SwingConstants.CENTER));dialogPane.add(tF6);JButton b1=new JButton("确定");dialogPane.add(b1);JButton b2=new JButton("取消");dialogPane.add(b2);b1.addActionListener(this); //为确定按钮添加监听事件b2.addActionListener(this); //为取消按钮添加监听事件dialog1.setBounds(200,150,400,130);dialog1.show();}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){try {Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  //加载数据库引擎,返回给定字符串名称String url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=PIMS"; //连接数据库String user="sa";String password="123456";//动态导入数据库的驱动Connection conn= DriverManager.getConnection(url, user, password); //连接数据库对象Statement stmt=conn.createStatement(); //执行SQL 语句int ID=Integer.parseInt(tF1.getText());String name=tF2.getText();int DepID=Integer.parseInt(tF3.getText());String occupation=tF4.getText();int salary=Integer.parseInt(tF5.getText());int EduID=Integer.parseInt(tF5.getText());String sQLOrderString="insert into Person( ID,Name,Department,Occupation ,Salary,Education) values ("+ID+","+name+","+DepID+","+occupation+","+salary+","+EduID+")";stmt.executeUpdate(sQLOrderString); //添加一条记录stmt.close();conn.close(); //关闭连接} catch (Exception e2) {// TODO: handle exception}}else if (cmd.equals("取消")) {dialog1.dispose();  //直接返回主窗体}}}

运行界面:


查询数据库中的数据条数结果为:


插入数据界面:


插入后的查询结果为:

总结:

    JDBC虽然是在JAVA中才有的,但是在VB学习的时候,我们使用过ODBC,在VB.NET中我们学习过ADO.NET,它们都是差不多的,都是用于连接数据库的,连接数据库的步骤是相同的,只是连接属性不同而已,做做例子,感觉JDBC也就是那么一回事.

0 0
原创粉丝点击