我正在尝试为此按钮编写一个函数。我希望能够传递一个文本域的值,并能够进入我的数据库检索一些信息.....Oracle Java SQL异常错误:ORA-0094
有人可以向我解释发生了什么,并为我提供了一个解决这个疯狂?
谢谢大家的xD
我一直运行到这个愚蠢的问题:
ACTION1 [email protected]
Exception:java.sql.SQLSyntaxErrorException: ORA-00904: "ART": invalid identifier
代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//CLASS TYPE
//LIST ALL OFFERED CLASSES AND REVENUE
try{
String classtype = jTextField1.getText().trim();
if(classtype.equals("")){
JOptionPane.showMessageDialog(this, "Sorry Wrong input.... Please try again....");
}
else if(classtype != ""){
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(
"jdbc:oracle:thin:@fourier.cs.iit.edu:1521:orcl",
"usr","pwd");
Statement stmt = conn.createStatement();
System.out.println("ACTION1 created"+conn+"\n\n");
String ct = jTextField1.getText().trim();
//String aa = "SELECT * FROM CLASS WHERE TYPE="+classtype;
//System.out.println(aa);
ResultSet rset = stmt.executeQuery("SELECT * FROM CLASS WHERE TYPE="+ct);
while (rset.next()) {
System.out.println(rset.getString("TITLE") + " ");
}
JOptionPane.showMessageDialog(this, "Class Type: "+classtype);
stmt.close();
conn.close();
System.out.println("Connection Closed");
}
catch(Exception sqle){
System.out.println("\nException:"+sqle);
}
}
}
catch(Exception e){
JOptionPane.showMessageDialog(this, "Please Retry input....", "Error", JOptionPane.ERROR_MESSAGE);
}
}
您的文本框的内容添加到您的SQL字符串(绝对NOGO SQL注入漏洞!),那么什么是'ct'的内容时,会抛出异常? – 2012-03-01 09:04:56
as @Andreas_D表示您没有使用准备好的语句。但无论如何,如果你连接一个字符串,它需要在两个'''内,'''SELECT * FROM CLASS WHERE TYPE ='“+ ct +”'“'(但更好的解决方案是将params添加到准备好的语句 – 2012-03-01 09:14:12