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)
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)
问题原因可能是你插入INSERT INTO biao VALUES('12345','cen',89,89)
你的表 biao里的字段不只4个或者字段值顺序不对
INSERT INTO biao (字段1,字段2,字段3,字段4) VALUES('12345','cen',89,89)
是可以的。如果你的biao 里除了学号,姓名,数学,英语还有一个自增的index的话,
你可以把这个字段的值也写进去。试验下就知道了。