0

目前正在制作一个从 MSAccess 数据库中获取数据的 java 程序,其中一些错误非常令人沮丧。我不断收到这个 SQL.Exception :参数太少。此程序中最后剩余的错误预计有 1 个错误。

db 的小背景:它有 3 张桌子(玩家桌(11 列)、团队桌(3 列)和对手桌(6 列)。

这些都是功能,我很确定问题出在某个地方

conn = Connect.ConnectDB();
    String sql = "insert into Player ("+"PlayerLastName,"+"PlayerFirstName,"+"Position)"+ "values("+txtid.getText()+ ",'"+txtname.getText()+"','"+txtaddress.getText()+"')" ;
    try{
        pst = conn.prepareStatement(sql);
        pst.executeQuery();
        pst.setString(1, txtid.getText());
        pst.setString(2, txtname.getText());
        pst.setString(3, txtaddress.getText());
        JOptionPane.showMessageDialog(null, txtid.getText() + " Saved");
        UpdateJTable();
        //conn.close();
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }

或者这个函数

        String sql = "select * from Player where PlayerLastName = " +txtid.getText()+ "";
    String pine = null;
    try{
        pst = conn.prepareStatement(sql);

        ResultSet res;
        res = pst.executeQuery();

        pine.equalsIgnoreCase(jTable1.getModel().getValueAt(rowsu, 10).toString());

        while(res.next()){
            JOptionPane.showMessageDialog(null, txtname + " " + txtid.getText() + " has a total of " +"4");//+ pine);//res.getInt("Penalties") );

        }
        UpdateJTable();

    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
4

1 回答 1

1

一方面,您似乎在插入语句中的姓氏周围缺少单引号。

可能还有其他错误,这只是我注意到的第一件事。

如果您只是在执行之前记录 sql 字符串,这应该很容易调试。

编辑

我认为您对 setString() 的调用也是一个问题。以下是您应该如何执行此操作:

conn = Connect.ConnectDB();
    String sql = "insert into Player (PlayerLastName, PlayerFirstName, Position) values(?, ?, ?)";
    try{
        pst = conn.prepareStatement(sql);
        pst.setString(1, txtid.getText());
        pst.setString(2, txtname.getText());
        pst.setString(3, txtaddress.getText());
        pst.execute();
        JOptionPane.showMessageDialog(null, txtid.getText() + " Saved");
        UpdateJTable();
        //conn.close();
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
于 2013-04-25T14:54:41.500 回答