-1

我是初学者,在使用 JDBC 在 Java 中使用 MySql 时遇到问题。任何人都可以粘贴一行代码如何使用“SQL UPDATE”。或者也许有人知道一些好的教程来学习它?

我的代码有错误:

                    try { 
        conn = DriverManager.getConnection(CONN_STRING, USERNAME,    PASSWORD); 
        System.out.println("Connected!");
        Statement st = conn.createStatement();
        String strUpdate = "UPDATE rozchody SET nazwa ='test' ";
        ResultSet ra = st.executeQuery(strUpdate);
        ResultSet rs = st.executeQuery("select * from rozchody");
        while(rs.next()){
            System.out.println("wyswietlam: ");
            String s = rs.getString("nazwa");
            System.out.println(s);
        }

    } catch (SQLException e) {
        System.err.println(e);
    } finally {
        if (conn != null) {
            conn.close();
        }
    }
4

4 回答 4

1

要执行 UPDATE/INSERT/CREATE 语句,您应该使用 Statement 类的 execute() 函数,而不是 executeQuery()。

更正的代码:

    conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD); 
    System.out.println("Connected!");
    Statement st = conn.createStatement();
    String strUpdate = "UPDATE rozchody SET nazwa ='test' ";
    st.execute(strUpdate); // or use executeUpdate()

它将返回一个布尔值,您可以检查并继续。

于 2013-10-23T19:57:25.473 回答
1

在此处遵循此示例,但本质上就是这样

String strUpdate = "UPDATE rozchody SET nazwa ='test'";
PreparedStatement preparedStatement = conn.prepareStatement(strUpdate);
// execute insert SQL stetement
preparedStatement.executeUpdate();
于 2013-10-23T19:59:30.907 回答
0

当您想对 SQL 数据库执行 UPDATE、INSERT、DELETE 时,您永远不会收到结果集。使用executeUpdate而不是executeQuery.

于 2013-10-23T19:58:43.657 回答
0

一个ResultSet对象只能打开一个Statement。您正在ResultSet使用 UPDATE 和 SELECT 语句创建两个对象。

由于 UPDATE 不返回 a ResultSet,因此使用st.execute(strUpdate). 然后你可以检索ResultSet一个st.executeQuery("select * from rozchody");

您的固定代码:

try { 
    conn = DriverManager.getConnection(CONN_STRING, USERNAME,    PASSWORD); 
    System.out.println("Connected!");
    Statement st = conn.createStatement();
    String strUpdate = "UPDATE rozchody SET nazwa ='test' ";

    //Change this
    st.execute(strUpdate);
    ResultSet rs = st.executeQuery("select * from rozchody");
    //Now you won't get an error opening a new ResultSet

    while(rs.next()){
        System.out.println("wyswietlam: ");
        String s = rs.getString("nazwa");
        System.out.println(s);
    }

} catch (SQLException e) {
    System.err.println(e);
} finally {
    if (conn != null) {
        conn.close();
    }
}

请注意,虽然上述方法可行,但通常最好使用PreparedStatements而不是重新使用 aStatement来执行不同的执行。这将有助于防止 SQL 注入,一旦您对Statement对象的工作方式有了更深入的了解,就应该阅读它。

于 2013-10-23T19:58:51.423 回答