2011-05-27 125 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