2016-03-24 10 views
-2

Unten Code zeigt wir java.sql.SQLException. Kann mir jemand helfen, diesejava.sql.SQLException: ORA-00911: ungültiges Zeichen

Class.forName("oracle.jdbc.driver.OracleDriver"); 

String lname=request.getParameter("lastname"); 
String uname=request.getParameter("username"); 
String fname=request.getParameter("firstname"); 
String cemail=request.getParameter("email"); 
String pswd=request.getParameter("password"); 
String cpswd=request.getParameter("conformpassword"); 
String sex=request.getParameter("gender"); 
long phon=Long.parseLong(request.getParameter("mobile")); 

Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "system", "admin"); 
Statement st = con.createStatement(); 
ResultSet rs = st.executeQuery("insert into users values('" + uname + "','" + fname + "','" + lname + "','" + cpswd + "',"+ phon + ",'" + cemail + "','" + sex + "');"); 
+0

Wie lauten die Werte der übergebenen Variablen? – Ocracoke

+2

Sollen wir raten, was die Ausnahme ist? Außerdem ist Ihr Code anfällig für SQL-Injection. –

+0

Der ORA-00911 stammt vom Semikolon am Ende der Anweisung, die nicht dort sein sollte. Aber Sie sollten eine vorbereitete Anweisung verwenden und Variablen binden. –

Antwort

0

Statt bei der Festsetzung:

Statement st = con.createStatement(); 
ResultSet rs = st.executeQuery("insert into users values('" + uname + "','" + fname + "','" + lname + "','" + cpswd + "',"+ phon + ",'" + cemail + "','" + sex + "')"); 

Ich würde vorschlagen, dass Sie folgendermaßen vorgehen:

PreparedStatement st = con.prepareeStatement("insert into users values(?,?,?,?,?,?,?);"); 
st.setString(1, uname); 
st.setString(2, fname); 
st.setString(3, lname); 
st.setString(4, cpswd); 
st.setLong(5, phon); 
st.setString(6, cemail); 
st.setString(7, sex); 
ResultSet rs = st.executeQuery(); 

Ihr Problem durch Ihre Frage nicht offensichtlich ist, aber unter Verwendung von PreparedStatement, wie ich es habe, wird zukünftigen Problemen vorbeugen. Ich hoffe das hilft.

+0

Sie müssen noch das Semikolon am Ende der SQL-Anweisung loswerden. –

Verwandte Themen