Ich versuche, einen JAVA-Code zu erstellen, in dem der Code die Datenbank auf vorhandene Daten überprüft und wenn keine gefunden werden, werden die vom Benutzer eingegebenen Daten in die Datenbank eingefügt.
try {
username1=request.getParameter("txt1");
password1=request.getParameter("p1");
nickname1=request.getParameter("nick_name1");
email1=request.getParameter("email_1");
phone_no1=request.getParameter("phone_no_1");
date1=request.getParameter("date");
month1=request.getParameter("month");
year1=request.getParameter("year");
school1=request.getParameter("school_1");
class1=request.getParameter("class_1");
section1=request.getParameter("section_1");
// Benutzername1, Passwort1, Spitzname1, E-Mail1, Telefonnummer1 - sollten eindeutig sein //
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:harshan_web");
if (con != null)
{
st=con.createStatement();
ResultSet rs=st.executeQuery("select * from account_registration where username='"+username1+"' or password='"+password1+"' or nickname='"+nickname1+"' or email='"+email1+"' or phone='"+phone_no1+"'");
if (rs.next())
{
u1 = rs.getString("username");
p1 = rs.getString("password");
n1 = rs.getString("nickname");
e1 = rs.getString("email");
ph1 = rs.getString("phone");
invalid_data = "";
if (username1.equals(u1))
{ u2="Benutzername "; }
else
{ u2=""; }
if (password1.equals(p1))
{ p2="Passwort "; }
else
{ p2=""; }
if (nickname1.equals(n1))
{ n2="Spitzname "; }
else
{ n2=""; }
if (email1.equals(e1))
{ e2="E-Mail-ID "; }
else
{ e2=""; }
if (phone_no1.equals(ph1))
{ ph2="Telefonnummer "; }
else
{ ph2=""; }
invalid_data=""+u2+""+p2+""+n2+""+e2+""+ph2+" wurden bereits verwendet! Versuchen Sie es erneut.";
response.sendRedirect("index.jsp?invalid_data="+invalid_data+"");
}
else
{
st.executeUpdate("insert into account_registration values('"+username1+"','"+password1+"','"+nickname1+"','"+date1+"','"+month1+"','"+year1+"','"+school1+"','"+class1+"','"+section1+"','"+email1+"','"+phone_no1+"')");
response.sendRedirect("reg_complete.html");
}
}
else
{
response.sendRedirect("error.html");
}
/* TODO output your page here. You may use following sample code. */
} catch (Exception e) {}
finally {
out.close();
}
Es zeigt die Ausnahme wie folgt an.
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Treiber] Anzahl der Abfragewerte und Ziel-Feldern sind nicht gleich.
Ich weiß nicht, was das bedeutet. Liegt das Problem beim SQL-Statement oder bei JAVA?
Eigentlich habe ich ein AutoNumber-Feld in meiner Datenbank hinzugefügt. Wenn ich ein zusätzliches ,''
direkt vor der ersten schließenden Klammer im insert SQL-Statement hinzufüge, gibt es eine weitere Ausnahme, die sagt Feldtypfehler in SQL-Syntax. Ich denke hauptsächlich, dass der Fehler für dieses AutoNumber-Feld ist, weil das Feld keinen Wert außer dem enthalten kann, was von der Datenbank generiert wird.