基本插入在数据库中有效,但在Java类中无效

时间:2019-06-25 12:21:21

标签: java sql sql-server jdbc

我第一次使用Microsoft Azure的云数据库,除插入外,所有SQL (SELECT, UPDATE and DELETE)都在工作。当我尝试插入到表中时,它会给我以下例外: com.microsoft.sqlserver.jdbc.SQLServerException:为更新生成了结果集。

当在数据库本身中完成操作时,请记住所有SQL工作。

我注意到,只有在使用stat.executeUpdate()并将其更改为stat.executeQuery()时,它才会提供给我,没有例外,它是“成功的”,但不会在表中插入任何内容。

我已经更新了所有软件,但没有任何改变。

我发现一个INSERT起作用,而另一个不起作用。

编辑:另一个问题是我的方法无效且未使用stat.executUpdate()获取评论时返回评论。

public static void main(String[] args)
{
    ConnectDB();
    insertHistory("5364", 10, "5005", "353", "6", 10, "admin");
}

这是损坏的INSERT:

    public static void insertHistory(String sInt, int iBase, String P1, String P2, String P3, int pBase, String Email)
    {
        try
        {
            stat = con.prepareStatement("INSERT INTO dbo.tblHistory (Num, BaseForNum, P1, P2, P3, BaseForP, UserID) VALUES (?, ?, ?, ?, ?, ?, ?)");
            stat.setString(1, sInt);
            stat.setInt(2, iBase);
            stat.setString(3, P1);
            stat.setString(4, P2);
            stat.setString(5, P3);
            stat.setInt(6, pBase);
            stat.setInt(7, getUserID(Email));
            stat.executeUpdate();
        }
        catch(SQLException e)
        {
            System.out.println(e);
            JOptionPane.showMessageDialog(null, "Could not save to tblHistory.");
        }
    }

这是有效的INSERT:

    public static void insertAccount(String Email, String Password)
    {
        try
        {
            stat = con.prepareStatement("INSERT INTO dbo.tblUser (Email, Password) VALUES (?, ?)");
            stat.setString(1, Email);
            stat.setString(2, Password);
            stat.executeUpdate();
            JOptionPane.showMessageDialog(null, "Account created.");
        }
        catch(SQLException e)
        {
            JOptionPane.showMessageDialog(null, e);
        }
    }

我希望它没有异常并插入数据库,但是我得到了SQL异常。

1 个答案:

答案 0 :(得分:0)

我将stat.setInt(7, getUserID(Email))更改为stat.setInt(7, 1)。 RealSkeptic表示这是因为它访问数据库。