insérer des valeurs dans la base de données SQL à l'aide de servlet
Chaque fois que j'exécute ce code, j'obtiens un not enough values
. Ce qui pourrait mal se passer?
Voici mon 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);
}
}
}
- quelle est votre question ?
- pas assez de valeurs d'erreur s'affiche.
- ainsi serions-nous comme par magie savoir quelle est l'erreur ?? mise à jour de votre question avec l'erreur
- vous devez utiliser PreparedStatement... Et délégué de votre base de données logique pour une classe DAO. Il est préférable testable.
Vous devez vous connecter pour publier un commentaire.
votre sql est faux:
où est le
,
entre les colonnes?changer à cela:
btw. utilisation
PreparedStatement
votre chemin est un très bon exemple pour Injection SQL.
Vous avez manqué de mettre des virgules entre vos valeurs de colonne.
Mais, je vous suggère d'utiliser un PreparedStatement à la place. Votre code est grande ouverte à des attaques par injection SQL autrement. Spécialement, parce que vous êtes aller chercher de l'entrée de l'utilisateur sur le web comme les paramètres de la demande sans aucune validation.
Il vous manque des virgules dans vos valeurs() de la clause. Allez, être plus prudent.
Il vous manque des virgules entre les valeurs de la colonne. Une meilleure approche vous devriez utiliser des noms de colonne et en conséquence les valeurs de la colonne. Dans l'avenir, si le tableau des modifications de la structure - comme une nouvelle colonne est ajoutée dans le tableau, votre requête ne fonctionnera plus.
Ici vous donner serré mappage entre les noms de colonnes et les valeurs correspondantes.
Juste essayer cette ligne pour la mise à jour.
int i=stmt.executeUpdate("insert into employé values('"+eid+"','"+nom+"',"+sal+")");
Espère qu'il va travailler pour vous.