我有一个删除专辑DAO,一个删除专辑类和一个删除servlet都连接到数据库,但它仍然不运行查询,即它不起作用。我的删除Servlet不会从数据库中删除
下面的代码是删除的servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
DeleteAlbum Album = new DeleteAlbum(name) ;
AlbumDAO.INSTANCE.delete(Album);
request.getRequestDispatcher("home.jsp").forward(request, response);
}
这是删除相册类
public class DeleteAlbum {
String name ;
public DeleteAlbum(String name){
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
而且这部分代码连接到数据库
public enum DeleteAlbumDAO {
INSTANCE;
public Connection getConnection() {
Connection con = null ;
try {
Class.forName("org.hsqldb.jdbcDriver");
con = DriverManager.getConnection(
"jdbc:hsqldb:hsql://localhost/oneDB", "sa", "");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con ;
}
public void delete(Album name) {
try {
Connection con = getConnection() ;
Statement stmt = con.createStatement();
stmt.executeUpdate("Delete from ALBUM WHERE name="+name+"");
System.out.println("Connection Succesful");
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
这是原始ALBUM DAO的代码,我试图通过名称删除专辑,我添加albumDAO以测试ti是否是连接,但它仍然不能正常工作
import model.Album;
import model.DeleteAlbum;
public enum AlbumDAO {
INSTANCE;
public Connection getConnection() {
Connection con = null ;
try {
Class.forName("org.hsqldb.jdbcDriver");
con = DriverManager.getConnection(
"jdbc:hsqldb:hsql://localhost/oneDB", "sa", "");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con ;
}
public void save(Album album) {
try {
Connection con = getConnection() ;
Statement stmt = con.createStatement();
stmt.executeUpdate("INSERT INTO ALBUM (name, artist , genre)"
+ "VALUES ('" + album.getName() + "','"+ album.getArtist() + "','"+ album.getGenre() + "')");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void delete(DeleteAlbum name) {
try {
Connection con = getConnection() ;
Statement stmt = con.createStatement();
stmt.executeUpdate("Delete from ALBUM WHERE name="+name+"");
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
它不会从我的数据库中删除 – deecobbk
'stmt.executeUpdate(“从ALBUM WHERE name =”+ name +“”删除);''这里的'name'是'Album'对象。您可能需要接受'DeleteAlbum'并调用album.getName()'。 –
你确实需要了解准备好的陈述和参数:你忘了名字周围的引号,即使你没有忘记它们,如果专辑名称包含引号,陈述仍然会失败。 http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html –