java - 程序在Java中抛出java.lang.UnsupportedOperationException

标签 java swing jdbc

    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.sql.*;
    import java.io.*;

    public class Student3 extends JFrame implements ActionListener
    {
    Connection cn;
    Statement st1,st2;
    ResultSet rs;

    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();

    JLabel lblNo = new JLabel("Roll No ");
    JLabel lblName = new JLabel("First Name ");
    JLabel lblCont = new JLabel("Contect no ");
    JLabel lblCity = new JLabel("City ");

    JTextField txtNo = new JTextField(12);
    JTextField txtName = new JTextField(12);
    JTextField txtCont = new JTextField(12);
    JTextField txtCity = new JTextField(12);

    JButton btnFirst = new JButton("First");
    JButton btnNext = new JButton("Next");
    JButton btnPrevious = new JButton("Previous");
    JButton btnLast = new JButton("Last");
    JButton btnAdd = new JButton("Add");
    JButton btnUpdate = new JButton("Update");
    JButton btnDelete = new JButton("Delete");
    JButton btnExit = new JButton("Exit");

        Student3()
        {
            try
            {
                panel1.setLayout(new GridBagLayout());

                GridBagConstraints c = new GridBagConstraints();

                //c.fill=GridBagConstraints.BOTH;
                c.gridwidth=2;
                c.gridx=0;
                c.gridy=0;
                panel1.add(lblNo,c);

                c.gridx=2;
                c.gridy=0;
                panel1.add(txtNo,c);

                c.gridx=0;
                c.gridy=1;
                panel1.add(lblName,c);

                c.gridx=2;
                c.gridy=1;
                panel1.add(txtName,c);

                c.gridx=0;
                c.gridy=2;
                panel1.add(lblCont,c);

                c.gridx=2;
                c.gridy=2;
                panel1.add(txtCont,c);

                c.gridx=0;
                c.gridy=3;
                panel1.add(lblCity,c);

                c.gridx=2;
                c.gridy=3;
                panel1.add(txtCity,c);

                c.fill=GridBagConstraints.BOTH;
                //c.gridwidth=1;
                c.gridx=0;
                c.gridy=5;
                panel1.add(btnFirst,c);

                c.gridwidth=1;
                c.gridx=2;
                c.gridy=5;
                panel1.add(btnNext,c);

                c.gridx=3;
                c.gridy=5;
                panel1.add(btnPrevious,c);

                c.gridx=4;
                c.gridy=5;
                panel1.add(btnLast,c);

                c.gridwidth=2;
                c.gridx=0;
                c.gridy=6;
                panel1.add(btnAdd,c);

                c.gridwidth=1;
                c.gridx=2;
                c.gridy=6;
                panel1.add(btnUpdate,c);

                c.gridx=3;
                c.gridy=6;
                panel1.add(btnDelete,c);

                c.gridx=4;
                c.gridy=6;
                panel1.add(btnExit,c);

                getContentPane().add(panel1);

                btnFirst. addActionListener(this);
                btnLast. addActionListener(this);
                btnNext. addActionListener(this);
                btnPrevious. addActionListener(this);
                btnAdd. addActionListener(this);
                btnUpdate. addActionListener(this);
                btnDelete. addActionListener(this);
                btnExit. addActionListener(this);

                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//Load the JDBC-ODBC bridge driver
                cn = DriverManager.getConnection("jdbc:odbc:STUDENT_DSN");//Connection to database is done

                //st1=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
                st1=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE,ResultSet.HOLD_CURSORS_OVER_COMMIT);
                //cn.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT);
                //st1.setFetchSize(25);

                st2=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);


                String query = "select * from Student";         
                rs=st1.executeQuery(query);
                rs.first();
                getRecord();
            }
            catch(Exception e)
            {
                System.out.println(e);
            }
        }

        public static void main (String[] args)
        {
            Student3 my =new Student3();

            my.setTitle("Java Database Operation..");
            my.setVisible(true);
            my.setResizable(false);
            my.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            my.setBounds(200,250,300,175);
        }

        void getRecord()
        {
            try
            {
                txtNo.setText(rs.getObject(1).toString());
                txtName.setText(rs.getObject(2).toString());
                txtCont.setText(rs.getObject(3).toString());
                txtCity.setText(rs.getObject(4).toString());
            }
            catch(Exception ex)
            {
                System.out.println(ex);
            }
        }

        public void actionPerformed(ActionEvent e)
        {   
            try
            {

                Object obj = e.getSource();
                if(obj == btnFirst)
                {
                    rs.first();
                    getRecord();
                }
                if(obj == btnLast)
                {
                    rs.last();
                    getRecord();                
                }
                if(obj == btnNext)
                {
                    rs.next();
                    if(!rs.isAfterLast())
                    {               
                        getRecord();
                    }
                    else
                    {
                        rs.previous();
                    }
                }
                if(obj == btnPrevious)
                {
                    rs.previous();
                    if(!rs.isBeforeFirst())
                    {               
                        getRecord();
                    }
                    else
                    {
                        rs.next();
                    }
                }
                if(obj == btnAdd)
                {
                    String name=txtName.getText();

                    String cont=txtCont.getText();

                    String city=txtCity.getText();


                    String query="insert into Student(sName,sCont,sCity) values ('"+name+"','"+cont+"','"+city+"')" ;
                    st2.executeUpdate(query);

                    query = "select * from Student";            
                    rs=st1.executeQuery(query);

                    rs.last();
                }
                if(obj == btnUpdate)
                {
                    int no =Integer.parseInt(txtNo.getText());
                    //System.out.println(no);

                    String new_name=txtName.getText();

                    String new_cont=txtCont.getText();

                    String new_city=txtCity.getText();

                    String query="update Student set sName = '"+new_name+"', sCont = '"+new_cont+"' , sCity = '"+new_city+"' where sNo = "+no+" " ;
                    st2.executeUpdate(query);
                }
                if(obj == btnDelete)
                {
                    int no =Integer.parseInt(txtNo.getText());
                    String query="delete from Student where sNo = "+no+"    " ;
                    st2.executeUpdate(query);
                }
                if(obj == btnExit)
                {
                    System.exit(0);
                }
            }
            catch(Exception ex)
            {
                System.out.println(ex);
            }
        }
    }

如果我正在编写 st1=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE,ResultSet.HOLD_CURSORS_OVER_COMMIT); 我得到异常 java.lang.UnsupportedOperationException

我必须使用 ResultSet.HOLD_CURSORS_OVER_COMMIT 因为我想在添加新记录后保持能力。

最佳答案

一般而言,java.lang.UnsupportedOperationException 表示实现者不想实现该方法。在这种情况下,Odbc 人员决定不实现 createConnection 的三参数重载,可能是因为他们不支持可持有性。

我记得有一次(在哪里?)听说 Java 人员不认为 Odbc 驱动程序具有生产质量。因此,如果您正在访问 mysql 数据库或其他数据库,最好使用供应商特定的驱动程序。


哦,顺便说一句,如果这不是一次性代码,切勿在同一个类中混合使用 GUI 和 SQL。

关于java - 程序在Java中抛出java.lang.UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14000571/

相关文章:

java - 无法将复选框添加到 JList

java - 如何在 TextField Java 中限制字符和数字值

java - mssql 2005 日期时间和 jdbc

带有首字母缩略词的 Java 命名约定

java - JMX 客户端只能在本地访问

java - 由于 saxon9.jar,JAXB 解码时出错

java - 如何在Jpanel上绘画?

mysql - sqoop 异常,com.mysql.jdbc.exceptions.jdbc4.CommunicationsException

java - log4j:错误无法加载驱动程序java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver

java - 如何编译 Java 源文件?