Java JDBC SQLite 更新条目不起作用
Posted
技术标签:
【中文标题】Java JDBC SQLite 更新条目不起作用【英文标题】:Java JDBC SQLite update entry not working 【发布时间】:2014-10-09 03:27:09 【问题描述】:我在 Eclipse 中使用 JDBC 和 SQLite 创建了一个数据库和一组表。
我正在尝试使用以下代码更新表格:
public static void update()
Connection c = null;
Statement stmt = null;
try
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:WalkerTechCars.db");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "UPDATE CUSTOMERS2 set ADDRESS = Byron WHERE PHONE=2;";
stmt.executeUpdate(sql);
c.commit();
ResultSet rs = stmt.executeQuery( "SELECT * FROM CUSTOMERS;" );
while ( rs.next() )
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
String address = rs.getString("address");
float salary = rs.getFloat("salary");
System.out.println( "ID = " + id );
System.out.println( "NAME = " + name );
System.out.println( "AGE = " + age );
System.out.println( "ADDRESS = " + address );
System.out.println( "SALARY = " + salary );
System.out.println();
rs.close();
stmt.close();
c.close();
catch ( Exception e )
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
System.out.println("Update Completed successfully");
据我所知,我使用的 SQL 语法说:
更新表customers2并将地址设置为Byron where phone =2
但出现以下错误:
java.sql.SQLException: no such column: Byron
这告诉我它将我的请求解释为要求更改名为 Byron 的列,这不是我认为代码所说的内容?
【问题讨论】:
需要引用'Byron'
。
【参考方案1】:
根据 SQL 语法,varchar
值应与单引号一起使用,因此请更新:
String sql = "UPDATE CUSTOMERS2 set ADDRESS = Byron WHERE PHONE=2;";
到
String sql = "UPDATE CUSTOMERS2 set ADDRESS = 'Byron' WHERE PHONE=2;";
如果您不使用单引号,SQL 会假定您尝试使用不同的列设置值,因此会引发错误:
java.sql.SQLException: no such column: Byron
建议:使用PreparedStatment
进行动态参数查询
PreparedStatement stmt;
String sql = "UPDATE CUSTOMERS2 set ADDRESS=? WHERE PHONE=?";
stmt = c.prepareStatement(sql);
stmt.setString(1, "Byron");
stmt.setInt(2, 2);
stmt.executeUpdate();
【讨论】:
以上是关于Java JDBC SQLite 更新条目不起作用的主要内容,如果未能解决你的问题,请参考以下文章