在Java中插入SQL

在Java中插入SQL,java,sql,jdbc,prepared-statement,Java,Sql,Jdbc,Prepared Statement,我有一个Java应用程序,我想使用SQL数据库。我有一个连接类: public class SQLConnection{ private static String url = "jdbc:postgresql://localhost:5432/table"; private static String user = "postgres"; private static String passwd = "toto"; private static Connect

我有一个Java应用程序,我想使用SQL数据库。我有一个连接类:


public class SQLConnection{
    private static String url = "jdbc:postgresql://localhost:5432/table";
    private static String user = "postgres";
    private static String passwd = "toto";
    private static Connection connect;
    public static Connection getInstance(){
        if(connect == null){
            try {
                connect = DriverManager.getConnection(url, user, passwd);
            } catch (SQLException e) {
                JOptionPane.showMessageDialog(null, e.getMessage(), "Connection Error", JOptionPane.ERROR_MESSAGE);
            }
        }       
        return connect; 
    }
}
现在,在另一个类中,我成功地打印了我的值,但当我尝试插入一个值时,什么都没有发生

这是我的密码:


try {
Statement state = SQLConnection.getInstance().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
Statement state2 = SQLConnection.getInstance().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
state2.executeUpdate("INSERT INTO table(field1) VALUES (\"Value\")"); // Here's my problem
ResultSet res = state.executeQuery("SELECT * FROM table");
应该是:

state2.executeUpdate("INSERT INTO plateau(field1) VALUES (\"Value\")");

Copuld只是复制到SO错误,但是查找但应该插入表(字段1)还是插入平台(字段1)?

使用后需要(和)连接(和语句)。您还需要确保没有吞下任何可能导致您看到“什么也没有发生”的
SQLException
s


也就是说

private static Connection connect;
这是一个非常糟糕的主意。在应用程序中,决不能将外部资源声明为
static
。当另一方决定关闭资源时,您的应用程序将中断,因为该资源已被释放太长时间。您确实需要在最短可能范围内获取并关闭这些资源(
连接
语句
结果集
),即在执行查询的方法块内

另外,我强烈建议使用而不是
语句
,因为这将阻止代码被删除


您可能会发现了解有关如何以正确方式进行基本JDBC交互的更多信息非常有用。

是的,很抱歉,我只是为了stackoverflow修改了代码。错误不是;)(我编辑了代码)是的,很抱歉,我只是为了stackoverflow修改了代码。错误并非如此;)(我编辑了我的代码)我想知道为什么以及如何将它标记为
prepared statement
,而您根本不在代码中使用它(您应该这样做)。默认情况下,自动提交是启用的。除非覆盖它,否则不需要执行提交调用。关闭也不是绝对必要的(因为它最终会自己关闭),但这是一种最佳实践。@Brian:在我做JDBC的这些年里,我了解到一个查询没有被执行的可能原因只有两个。1) 连接未提交。2) 一个例外被接受了。OP可能没有发布问题中所有必要的信息(另请参见其他答案,它们基于OP的错误信息)。
private static Connection connect;