1

Java プロジェクトに MS SQL Server 2005 と Netbeans 6.9 を使用しています。

これが私のテーブル構造です(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

あなたの写真によると、どの列もnull値を許可していません。いずれかの列に null 値を渡すと、barf になります。したがって、すべての列に値を渡してみると、おそらく異なる、より良い結果が得られるでしょう。

于 2012-10-24T10:07:32.967 に答える