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

Posted

技术标签:

【中文标题】在 java 中使用 JTextfields 将数据更新到 oracle 数据库中的问题【英文标题】:Issue in updating data into oracle database using JTextfields in java 【发布时间】:2016-10-07 23:27:46 【问题描述】:

按下更新按钮时,需要执行以下代码 sn-p: 注意:t1,t2,。 . .,t8 是 JTextfields。另请注意,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。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

我在使用 Statement 时发现,日期输入是个问题。存在一些格式问题。不过现在已经解决了。

以上是关于在 java 中使用 JTextfields 将数据更新到 oracle 数据库中的问题的主要内容,如果未能解决你的问题,请参考以下文章

从 JTextFields 发布到数组中

JTextFields 在 JPanel 上的活动绘图之上,线程问题

保持 jButton 灰色直到 jTextFields != null

如何将特定数据字段从 ArrayList 加载到某些 JTextFields?

如何将文档侦听器添加到面板内的 JTextFields?

JTextFields 没有出现,但它们仍然存在。 (第一个是“bugily”可见的)