Java JDBC SQLite更新项不工作

Java JDBC SQLite更新项不工作,java,eclipse,sqlite,jdbc,Java,Eclipse,Sqlite,Jdbc,我在Eclipse中使用JDBC和SQLite创建了一个数据库和一组表 我正在尝试使用以下代码更新表: public static void update() { Connection c = null; Statement stmt = null; try { Class.forName("org.sqlite.JDBC"); c = DriverManager.getConnection("j

我在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,其中phone=2

但是我得到了以下错误:

java.sql.SQLException: no such column: Byron

这告诉我,它将我的请求解释为要求更改名为Byron的列,这不是我认为代码所说的?

根据SQL语法,
varchar
值应与单引号一起使用,因此请更新以下内容:

      String sql = "UPDATE CUSTOMERS2 set ADDRESS = Byron WHERE PHONE=2;";

如果不使用单引号,SQL会假定您正在尝试使用其他列设置值,因此会抛出错误:

java.sql.SQLException: no such column: Byron
建议:使用
preparedstation
进行动态参数查询

PreparedStatement stmt;
String sql = "UPDATE CUSTOMERS2 set ADDRESS=? WHERE PHONE=?";
stmt = c.prepareStatement(sql);
stmt.setString(1, "Byron");
stmt.setInt(2, 2);
stmt.executeUpdate();

需要引用“拜伦”。
PreparedStatement stmt;
String sql = "UPDATE CUSTOMERS2 set ADDRESS=? WHERE PHONE=?";
stmt = c.prepareStatement(sql);
stmt.setString(1, "Byron");
stmt.setInt(2, 2);
stmt.executeUpdate();