java - 在java中使用JTextfields将数据更新到oracle数据库中的问题

标签 java sql oracle swing jdbc

按下更新按钮时,需要执行以下代码片段: 注意:t1,t2,。 。 .,t8 是 JTextfield。另请注意,CUST_PHONE 和 ADV 接收数据类型编号,而其余均为 varchar。
CUST_NAME 是假定的主键;

theQuery("update gkkdb set CUST_ID='"+t1.getText()+"', CUST_PHONE="+t3.getText()+",CUST_CAT='"+t4.getText()+"',ST_DATE='"+t5.getText()+"',ADV="+t6.getText()+",END_DATE='"+t7.getText()+"',ADDR='"+t8.getText()+"' where CUST_NAME="+t2.getText());

Query(String s)函数如下:-

public void theQuery(String query)
{
Connection con = null;
Statement st= null;
try{
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    con = DriverManager.getConnection("jdbc:oracle:thin:@Localhost:1521:xe","system","qwerty");
    System.out.println("Database connected");
    st= con.createStatement();
    st.executeUpdate(query);
    JOptionPane.showMessageDialog(null,"Customer Updated!");
    } catch(Exception e)
    {
    JOptionPane.showMessageDialog(null,e.getMessage());
    }
    }

它显示错误为:ORA-00904:“xxxx”:无效标识符,其中 xxxx 是我用来更新数据的任何 CUST_NAME。

最佳答案

您是否显示了所有变量的值以确保它们包含数据?

客户 ID 是字符串还是整数?

无论如何,对 SQL 使用 PreparedStatement 来防止错误。

一个简单的入门示例:

String sql = "UPDATE Page SET Title = ? WHERE Name = ?";

PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString( 1, textField1.getText() );
stmt.setString( 2, textField2.getText() );
stmt.executeUpdate();
stmt.close();

我希望你能明白。每个 ”?”被替换,您不必担心语法。更容易阅读和发现错误。

关于java - 在java中使用JTextfields将数据更新到oracle数据库中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39927090/

相关文章:

asp.net - ODP.net 连接池 : ClientID, 客户端标识符从第一个登录的用户开始不会改变

java - 在 Tomcat 上使用 MySQL 池化 PreparedStatement

java - HSQLDB 别名不存在,linux sh 脚本

sql - 使用从列到两列的递归查询

python - 使用 2 个选择标准编写查询的更好方法

oracle - 在 PLSQL 中为每个表执行

Java aes key 到 32 字节字符串表示

java - 如何使用 Jackson 有条件地反序列化为 POJO 字段?

mysql - 优化mysql多重左连接

mysql - MySQL 中带有 Order By 子句的 Rank 函数