Java 与数据库的Servlet连接

Java 与数据库的Servlet连接,java,servlets,Java,Servlets,我试图从servlet连接到jdbc数据库。我有单独的类dbconnect用于连接和向数据库插入数据 这是我的dbconnect类: import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class dbconnect { Connection conn; Statement stm; dbconnect(){ try{

我试图从servlet连接到jdbc数据库。我有单独的类dbconnect用于连接和向数据库插入数据

这是我的dbconnect类:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class dbconnect {
    Connection conn;
    Statement stm;

    dbconnect(){
      try{
        Class.forName("org.apache.derby.jdbc.ClientDriver");  
        conn = DriverManager.getConnection
         ("jdbc:derby://localhost:1527/type","nika",
         "mypass");  
        stm = conn.createStatement();
        System.out.println("success");
        String sql = "INSERT INTO USERS " + "VALUES (\"tsogiaidze@yahoo.com\", \"nika\", \"nika\", \"kaci\")";
        stm.executeUpdate(sql);
      }  
      catch (Exception ex){
          System.out.println(ex.getMessage());
      }
    }
}
在servlet中,我创建了新的dbconnect对象,它必须将数据插入数据库,但并没有发生

有人能告诉我为什么它不起作用吗? 我想我犯了一个根本性的错误

多谢各位

关于更多细节,我有一个jsp文件,它将html表单数据发送到此servlet,然后我尝试使用dbconnect类将这些数据写入数据库

我已经像这样更改了dbconnect类,现在我使用preparedstatement来编写文件,但仍然不起作用

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;

public class dbconnect {
    Connection conn;
    Statement stm;

    dbconnect(){
      try{
        Class.forName("org.apache.derby.jdbc.ClientDriver");  
        conn = DriverManager.getConnection("jdbc:derby://localhost:1527/type","nika","nika");  
        stm = conn.createStatement();
        System.out.println("success");
        String sql = "INSERT INTO NIKA.USERS (mail, pass, gender, saxeli) VALUES (?, ?, ?, ?)";
        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setString(1, "tsogiaidze");
        statement.setString(2, "nika");
        statement.setString(2, "nika");
        statement.setString(2, "kaci");
        int rowsInserted = statement.executeUpdate();
        if (rowsInserted > 0) {
        System.out.println("A new user was inserted successfully!");
        }
      }  
      catch (Exception ex){
          System.out.println(ex.getMessage());
      }
    }

}

使用单引号将文本括起来

String sql = "INSERT INTO USERS VALUES ("
    + "'tsogiaidze@yahoo.com', 'nika', 'nika', 'kaci')";
或者更好的方法是使用准备好的声明:

    String sql = "INSERT INTO USERS VALUES (?, ?, ?, ?)");
    PreparedStatement stm = conn.prepareStatement(sql);
    System.out.println("success");
    stm.setString(1, "tsogiaidze@yahoo.com");
    stm.setString(2, "nika");
    stm.setString(3, "nika");
    stm.setString(4, "kaci");
    stm.executeUpdate();

您的insert语句可能错误,请尝试此操作

       try{
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("making connection");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "welcome");
            PreparedStatement stmt=conn.prepareStatement("INSERT INTO student(student_name,student_id,class) VALUES(?,?,?)");
            stmt.setString(1, "abc");
            stmt.setString(2, "4");
            stmt.setString(3, "ukg");
            stmt.executeUpdate();
            System.out.println("query executed");
        }
        catch (ClassNotFoundException e) {
        e.printStackTrace();
      } catch (SQLException e) {
        e.printStackTrace();
        }

请按说明更改驱动器类和连接字符串

,检查任何异常,否则,请首先检查您是否可以手动执行INSERT语句,如果可以,请附加调试会话并逐步执行。如果您关心安全性,我不会关闭连接等等,那么我还不关心它。您能确切地告诉我代码中的错误做法是什么吗?Servlet本身可以工作,但是没有向数据库添加任何值。您会得到哪个错误?我没有得到任何错误或异常。奇怪的是,您没有得到异常。也许可以通过向stdout写入更多内容来确认这一点(ex.getMessage可以为空,单独依赖消息不是一个好主意),还可以看看executeUpdate的返回值是什么。为什么是mysql?我尝试连接到jdbc.M.Sharma,从这一行Class.forName(“org.apache.derby.jdbc.ClientDriver”)抛出异常;Hi告诉您更改driverclass和连接字符串,并请在类路径中设置所需的JAR。你能得到的罐子