本人是菜鸟,刚刚学JAVA,求老手 修改指导!!!!Frame f2 = new Frame("信息查询窗口");
f2.setVisible(true);f2.setSize(400,200);
f2.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}});
f2.setLayout(new GridLayout(1, 3));
Panel p6= new Panel();

Label label0 = new Label("请输入需要查询的图书编号 ");
final TextField usename = new TextField(5);
p6.add(label0);
p6.add(usename);
Button submit3 = new Button(" 确定 ");
p6.add(submit3);
f2.add(p6);
submit3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

String xx=usename.getText();

String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=book.mdb";

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(url); 
Statement stmt = conn.createStatement();
String command = "select * from book where bno=xx";
ResultSet rs = stmt.executeQuery(command);

while(rs.next())
{
String x1=rs.getString(1);
String x2= rs.getString(2);
String x3=rs.getString(3);
String x4= rs.getString(4);
float x5=rs.getFloat(5);
String x6=rs.getString(6);

System.out.print(" " + x1 + " ");
System.out.print(" " + x2 + " ");
System.out.print(" " + x3 + " ");
System.out.print(" " + x4 + " ");
System.out.print(" " + x5 + " ");
System.out.print(" " + x6 + " ");


dispose() ;
Frame f1 = new Frame("信息查询完成");
f1.setVisible(true);f1.setSize(400,200);
f1.setVisible(true);
f1.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
});
JTable table;

Object a[][] = { {x1,x2,x3,x4,x5,x6} };
Object name[] = { "图书编号",    "书名" ,  "分类名" , "出版社"  ,"价格"  ,"作者"};
TableModel model = new DefaultTableModel(a, name);
table = new JTable(model);

f1.add(table);conn.close();}}
catch(Exception a) {
a.printStackTrace();
}

}
}); 异常很多:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access 驱动程序] 参数不足,期待是 1。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
at package1.LoginWindow$1$2$2.actionPerformed(LoginWindiw.java:120)
at java.awt.Button.processActionEvent(Button.java:392)
at java.awt.Button.processEvent(Button.java:360)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

解决方案 »

  1.   


    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:/DataBase/books.mdb";   //注意修改路径,最好用java反射或取路径,不能以绝对路径出现。
        Connection  con=DriverManager.getConnection(url) ;  
        Statement stmt=con.createStatement();
        ResultSet rst=stmt.executeQuery("select * from book");
        while(rst.next())
        {
            
        }
        //关闭连接、释放资源
        rst.close();
        stmt.close();
        con.close();
    随便百度的
      

  2.   

    检查一下SQL语句,应该有错。
      

  3.   

    额,我的数据库已经放下项目的根目录下了,应该就可以是相对路径吧,就算改了那个绝对路径,但是不行。以下是我修改后的代码 Frame f2 = new Frame("信息查询窗口");
    f2.setVisible(true);f2.setSize(400,200);
    f2.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent we)
    {
    System.exit(0);
    }}); f2.setLayout(new GridLayout(1, 3));
    Panel p6= new Panel();

    Label label0 = new Label("请输入需要查询的图书编号 ");
    final TextField usename = new TextField(5);
    p6.add(label0);
    p6.add(usename);
    Button submit3 = new Button(" 确定 ");
    p6.add(submit3);
    f2.add(p6);
    submit3.addActionListener(new ActionListener()
    {

    public void actionPerformed(ActionEvent e)
    {

    String xx=usename.getText();



    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=book.mdb";   //注意修改路径,最好用java反射或取路径,不能以绝对路径出现。
        Connection  con=DriverManager.getConnection(url) ;  
        Statement stmt=con.createStatement();
    String command = "select * from book where bno=xx";
    ResultSet rs = stmt.executeQuery(command);

    while(rs.next())
    {
    String x1=rs.getString(1);
    String x2= rs.getString(2);
    String x3=rs.getString(3);
    String x4= rs.getString(4);
    float x5=rs.getFloat(5);
    String x6=rs.getString(6);

    System.out.print(" " + x1 + " ");
    System.out.print(" " + x2 + " ");
    System.out.print(" " + x3 + " ");
    System.out.print(" " + x4 + " ");
    System.out.print(" " + x5 + " ");
    System.out.print(" " + x6 + " ");


    dispose() ;
    Frame f1 = new Frame("信息查询完成");
    f1.setVisible(true);f1.setSize(400,200);
    f1.setVisible(true);
    f1.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent we)
    {
    System.exit(0);
    }
    });
    JTable table;

    Object a[][] = { {x1,x2,x3,x4,x5,x6} };
    Object name[] = { "图书编号",    "书名" ,  "分类名" , "出版社"  ,"价格"  ,"作者"};
    TableModel model = new DefaultTableModel(a, name);
    table = new JTable(model);

    f1.add(table);rs.close();
        stmt.close();
        con.close();}}
    catch(Exception a) {
    a.printStackTrace();
    }
    }
    }); 异常:
    java.sql.SQLException: [Microsoft][ODBC Microsoft Access 驱动程序] 参数不足,期待是 2。
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
    at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
    at package1.LoginWindow$1$2$2.actionPerformed(LoginWindiw.java:121)
    at java.awt.Button.processActionEvent(Button.java:392)
    at java.awt.Button.processEvent(Button.java:360)
    at java.awt.Component.dispatchEventImpl(Component.java:4583)
    at java.awt.Component.dispatchEvent(Component.java:4413)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
      

  4.   

    ------------------------------------------我试过改成其他可以搜到的SQL语句
    但是还是没有相应的X1  X2等的输出
      

  5.   

    -----------
    额,我的数据库已经放下项目的根目录下了,应该就可以是相对路径吧,就算改了那个绝对路径,但是不行。以下是我修改后的代码 Frame f2 = new Frame("信息查询窗口");
    f2.setVisible(true);f2.setSize(400,200);
    f2.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent we)
    {
    System.exit(0);
    }});  f2.setLayout(new GridLayout(1, 3));
    Panel p6= new Panel(); Label label0 = new Label("请输入需要查询的图书编号 ");
    final TextField usename = new TextField(5);
    p6.add(label0);
    p6.add(usename);
    Button submit3 = new Button(" 确定 ");
    p6.add(submit3);
    f2.add(p6);
    submit3.addActionListener(new ActionListener()
    {public void actionPerformed(ActionEvent e)
    {String xx=usename.getText();try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=book.mdb"; //注意修改路径,最好用java反射或取路径,不能以绝对路径出现。
    Connection con=DriverManager.getConnection(url) ;   
    Statement stmt=con.createStatement();
    String command = "select * from book where bno=xx";
    ResultSet rs = stmt.executeQuery(command);while(rs.next())
    {
    String x1=rs.getString(1);
    String x2= rs.getString(2);
    String x3=rs.getString(3);
    String x4= rs.getString(4);
    float x5=rs.getFloat(5);
    String x6=rs.getString(6);System.out.print(" " + x1 + " ");
    System.out.print(" " + x2 + " ");
    System.out.print(" " + x3 + " ");
    System.out.print(" " + x4 + " ");
    System.out.print(" " + x5 + " ");
    System.out.print(" " + x6 + " ");
    dispose() ;
    Frame f1 = new Frame("信息查询完成");
    f1.setVisible(true);f1.setSize(400,200);
    f1.setVisible(true);
    f1.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent we)
    {
    System.exit(0);
    }
    });
    JTable table;Object a[][] = { {x1,x2,x3,x4,x5,x6} };
    Object name[] = { "图书编号", "书名" , "分类名" , "出版社" ,"价格" ,"作者"};
    TableModel model = new DefaultTableModel(a, name);
    table = new JTable(model);f1.add(table);rs.close();
    stmt.close();
    con.close();}}
    catch(Exception a) {
    a.printStackTrace();
    }
    }
    }); 异常:
    java.sql.SQLException: [Microsoft][ODBC Microsoft Access 驱动程序] 参数不足,期待是 2。
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
    at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
    at package1.LoginWindow$1$2$2.actionPerformed(LoginWindiw.java:121)
    at java.awt.Button.processActionEvent(Button.java:392)
    at java.awt.Button.processEvent(Button.java:360)
    at java.awt.Component.dispatchEventImpl(Component.java:4583)
    at java.awt.Component.dispatchEvent(Component.java:4413)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
      

  6.   

    那么改用这些可以搜到的SQL语句后报什么异常呢?
      

  7.   

    楼主说得对,相对路径和绝对路径都可以的,不是url的问题。如果是文件路径错,报的不会是“参数不足,期待是 1”这个异常。