2011-05-27 74 views
3

我是jdbc sqlite中的新成员。我想知道如何执行更新。比如我有一张叫人名的表,里面有职业。我应该使用PreparedStatement吗?JDBC SQLite更新

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(); 

我想问的正确方法。谢谢你..

+2

看起来好像没什么问题。这段代码不适合你吗?怎么样? – 2011-05-27 12:12:15

+2

不要以';'结尾,在JDBC中不是必需的。是的,PreparedStatement没问题,但是你似乎没有在'change'语句上运行execute()。 – 2011-05-27 12:17:45

+0

谢谢。我解决了它。 :D – Hoou 2011-05-27 12:18:53

回答

1

你可能想从后检查Java and SQLite

例子:

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(); 
} 
} 

谢谢,

+1

关闭非托管资源,例如'finally'块中的Connection。 – 2011-06-11 09:56:27

2

你是不是 “执行” 的更新。您需要拨打change.executeUpdate()才能将UPDATE语句发送到引擎。

(以及内存页指出:在SQL字符串中删除;

+0

这对我有帮助。谢谢! – Winona 2013-10-11 17:18:34