Java 与数据库的Servlet连接
我试图从servlet连接到jdbc数据库。我有单独的类dbconnect用于连接和向数据库插入数据 这是我的dbconnect类: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{
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。你能得到的罐子