einfügen von Werten in die SQL-Datenbank mit servlet
Immer wenn ich diesen code ausführen, ich bin immer ein not enough values
. Was könnte schief gehen?
Hier ist mein code:
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;
public class Base extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)throws
IOException,ServletException
{
String eid=req.getParameter("t1");
String name=req.getParameter("t2");
int sal=Integer.parseInt(req.getParameter("t3"));
Connection con=null;
Statement stmt=null;
PrintWriter out=res.getWriter();
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe","system","intelinside" );
stmt=con.createStatement();
int i = stmt.executeUpdate("insert into emp values('"+eid+"''"+name+"''"+sal+"')");
if(i>0)
out.println("Inserted Successfully");
else
out.println("Insert Unsuccessful");
}
catch(Exception e)
{
out.println(e);
}
}
}
- was ist Ihre Frage ?
- nicht genügend Werte Fehler auftauchen.
- so würden wir magisch wissen, was der Fehler ist ?? aktualisieren Sie Ihre Frage mit dem Fehler
- Sie verwenden sollten, PreparedStatement... Und delegieren Sie Ihre Datenbank-Logik auf eine DAO-Klasse. Es ist besser prüfbar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre sql falsch ist:
wo ist die
,
zwischen den Spalten?ändern Sie diese:
btw. verwenden
PreparedStatement
Ihr Weg ist ein ziemlich gutes Beispiel für SQL-Injektion.
Verpasste setzen Kommas zwischen Ihre Spalte Werte.
Aber, ich schlage vor, mit einem PreparedStatement statt. Dein code ist weit offen für SQL-injection-Angriffe anders. Speziell, weil Sie das abrufen der Benutzer-Eingaben über das web als request-Parameter ohne jegliche Prüfung.
Ihnen fehlen die Kommas in deine Werte () - Klausel. Komm, vorsichtiger sein.
Ihnen fehlt das Komma zwischen die Spaltenwerte. Ein besserer Ansatz, den Sie verwenden sollten, Spaltennamen und entsprechend die Werte in der Spalte. In Zukunft, wenn die Struktur einer Tabelle ändert - wie wird eine neue Spalte Hinzugefügt, wird die Tabelle, die Abfrage beginnen zu Versagen.
Hier geben Sie enge Zuordnung zwischen Spaltennamen und zugehörigen Werten.
Nur versuchen, diese Linie für update.
int i=stmt.executeUpdate("insert into Mitarbeiter values('"+eid+"','"+name+"',"+sal+")");
Hoffe, es wird für Sie arbeiten.