Java jdbcsqlite更新

Java jdbcsqlite更新,java,sqlite,jdbc,Java,Sqlite,Jdbc,我是JDBCSQLite的新手。我想知道如何执行更新。例如,我有一个名为people name的表,里面有职业。我应该使用准备好的报表吗 PreparedStatement change = conn.prepareStatement("Update people set name = ? "); change.setString(1, "John"); ResultSet rs = stat.executeQuery("select * from people where name = 'G

我是JDBCSQLite的新手。我想知道如何执行更新。例如,我有一个名为people name的表,里面有职业。我应该使用准备好的报表吗

PreparedStatement change = conn.prepareStatement("Update people set name = ? ");
change.setString(1, "John");

ResultSet rs = stat.executeQuery("select * from people where name = 'Gandhi';");
while (rs.next()) {
    System.out.println("name = " + rs.getString("name"));
    System.out.println("job = " + rs.getString("occupation"));
}
rs.close();
conn.close();
我想问一下正确的方法。谢谢您。

您可能需要查看

文章中的例子:

package com.rungeek.sqlite;

import java.sql.Connection;
import java.sql.DriverManager; 
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class Test {
 public static void main(String[] args) throws Exception {
    Class.forName("org.sqlite.JDBC");
    Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
    Statement stat = conn.createStatement();
    stat.executeUpdate("drop table if exists people;");
    stat.executeUpdate("create table people (name, occupation);");
    PreparedStatement prep = conn.prepareStatement(
        "insert into people values (?, ?);");

    prep.setString(1, "Gandhi");
    prep.setString(2, "politics");
    prep.addBatch();
    prep.setString(1, "Turing");
    prep.setString(2, "computers");
    prep.addBatch();
    prep.setString(1, "Wittgenstein");
    prep.setString(2, "smartypants");
    prep.addBatch();

    conn.setAutoCommit(false);
    prep.executeBatch();
    conn.setAutoCommit(true);

    ResultSet rs = stat.executeQuery("select * from people;");
    while (rs.next()) {
        System.out.println("name = " + rs.getString("name"));
        System.out.println("job = " + rs.getString("occupation"));
    }
    rs.close();
    conn.close();
}
}
谢谢,

您不是在“执行”更新。您需要调用
change.executeUpdate()
,以便将UPDATE语句发送到引擎


(正如ZeroPage所指出的:删除SQL字符串中的

在我看来很好。这个代码不适合你吗?怎么不呢?不要用“;”来结束你的陈述这在JDBC中是不必要的。是的,PreparedStatement很好,但是您似乎没有对'change'语句运行execute()。您可能需要在update语句中添加一个
where
子句。有一个WTF正在等待发生。始终在
finally
块中关闭非托管资源,如连接和结果集。在
finally
块中关闭非托管资源,如连接。这对我很有帮助。非常感谢。