import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class DataBase extends JFrame implements ActionListener{
    private JTextField tf=new JTextField();
    private JButton bt=new JButton("执行查询");
    private JButton bt1=new JButton("执行更新");
    private JTextField tf1=new JTextField();
    private JTable table;
    Object a[][];
    Connection con;
    Statement sql;
    ResultSet rs;
    int rt;
    Object str[]={"学号","姓名","数学","英语"};
    public DataBase(){
     super("数据库操作");
     a=new Object[60][4];
     table=new JTable(a,str);
     tf.setFont(new Font("Dialog",Font.PLAIN,18));
     tf1.setFont(new Font("Dialog",Font.PLAIN,18));
    JScrollPane js=new JScrollPane(table);
    
    JPanel panel1=new JPanel(new BorderLayout());
    JPanel panel=new JPanel(new BorderLayout());
    JPanel BigPanel=new JPanel(new GridLayout(2,1));
    panel.add("Center",tf1);
    panel.add("East",bt1);
    panel1.add("Center",tf);
    panel1.add("East",bt);
    BigPanel.add(panel);BigPanel.add(panel1);
    
    JPanel panel2=new JPanel(new BorderLayout());
    panel2.add("Center",js);
    setLayout(new BorderLayout());
    add("North",BigPanel);
    add("Center",panel2);
    bt.addActionListener(this);
    bt1.addActionListener(this);
    setSize(500,500);
    setVisible(true);
    validate();
    }
    int i=0;
    public void actionPerformed(ActionEvent e){
     if(e.getSource()==bt){
     //tf.setText("select * from biao");
     while(i>=0){
     a[i][0]="";
     a[i][1]="";
     a[i][2]="";
     a[i][3]="";
     i--;
     }
     i=0;
     try{
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     }catch(ClassNotFoundException ev){}
     try{
     con=DriverManager.getConnection("jdbc:odbc:demo","test","123");
     sql=con.createStatement();
        rs=sql.executeQuery(tf.getText());
     while(rs.next()){
     String number=rs.getString("学号");
     String name=rs.getString("姓名");
     int math=rs.getInt("数学");
     int eng=rs.getInt("英语");
     a[i][0]=number;
     a[i][1]=name;
     a[i][2]=String.valueOf(math);
     a[i][3]=String.valueOf(eng);
     i++;
     }
     con.close();
     repaint();
     }catch(SQLException ev){}
     }
     else if(e.getSource()==bt1){
     //tf1.setText("hello,world");
    
     try{
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     }catch(ClassNotFoundException ev){
     System.out.println("hello");
     }
        try{
     con=DriverManager.getConnection("jdbc:odbc:demo","test","123");
        sql=con.createStatement();
     sql.executeUpdate("INSERT INTO biao VALUES('12345','cen',89,89)");
        con.commit();
        con.close();
     }catch(SQLException ev){ev.printStackTrace();} 
     }
    }
    public static void main(String[] args){
      DataBase db=new DataBase();
      }
    }
在按下 执行更新 按钮时,执行语句INSERT INTO biao VALUES('12345','cen',89,89)报出的异常如下:java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 查询值的数目与目标字段中的数目不同。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)
at DataBase.actionPerformed(DataBase.java:93)

解决方案 »

  1.   

    这样写 insert into 表明(字段列表1,字段列表2。) values(字段值1,字段值2,...);
     问题原因可能是你插入INSERT INTO biao VALUES('12345','cen',89,89)
    你的表 biao里的字段不只4个或者字段值顺序不对
      

  2.   

    这样用:
    INSERT INTO biao (字段1,字段2,字段3,字段4) VALUES('12345','cen',89,89)
      

  3.   

    你建的表不止这几个字段。而你插入数据的sql文 没有指定。如2楼说的一样。
    是可以的。如果你的biao 里除了学号,姓名,数学,英语还有一个自增的index的话,
    你可以把这个字段的值也写进去。试验下就知道了。