1

我正在为我的 Java 项目使用带有 Netbeans 6.9 的 MS SQL Server 2005。

这是我的表结构(在 SSMS 2005 中):

http://i.stack.imgur.com/bwTuH.png

现在,在 Netbeans 中,我使用此代码片段将输入的名称保存到“名称”列中:

 if(e.getSource().equals(submit))
    {
        try
        {
            String str="insert into TETRISUSERS values(?,'0')";
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con=DriverManager.getConnection("jdbc:odbc:java","sa", "123456");
            PreparedStatement stmt=con.prepareStatement(str);
            stmt.setString(1,username.getText());

            stmt.executeUpdate();
        }
        catch(Exception ex)
        {
            JOptionPane.showMessageDialog(name1,"Error : "+ex.getMessage());
        }

现在,当我运行项目并输入名称时,出现以下错误:

错误:[Microsoft][ODBC SQL Server Driverr][SQL Server]插入错误:列名或提供的值的数量与表定义不匹配。

我还尝试在插入命令中使用直接列名,如下所示:

   try
        {
            String str="insert into TETRISUSERS(ID,name,highscore) values(?,'0',?)";
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con=DriverManager.getConnection("jdbc:odbc:java","sa", "007007");
            PreparedStatement stmt=con.prepareStatement(str);
            stmt.setString(1,username.getText());

            stmt.executeUpdate();
        }

但是这样我得到了这个错误:

错误:[Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

最后,我尝试使用这个:

try
        {
            String str="insert into TETRISUSERS(ID,name) values(?,'0')";
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con=DriverManager.getConnection("jdbc:odbc:java","sa", "007007");
            PreparedStatement stmt=con.prepareStatement(str);
            stmt.setString(1,username.getText());

            stmt.executeUpdate();
        }

我得到了这个错误:

错误:一般错误

谁能指导我哪里错了?

4

1 回答 1

0

根据您的图片,所有列都不允许空值。如果您为任何列传递空值,它就会出错。因此,尝试为每一列传递一个值,您可能会得到不同且可能更好的结果。

于 2012-10-24T10:07:32.967 回答