小弟做了个选课系统,前台JSP页面有“删除”按钮,点一下就相应的把课程信息从数据库中删除,后台用java写的逻辑,debug没错误,能走到sql语句,但是就是删除不了。我感觉是我的sql语句写的不对。希望大侠帮我改一下 谢谢啦~~~~~~~~~~~~~数据库里的课程表:
CREATE TABLE COURSE (
COURSE_ID CHAR(6) NOT NULL,
COURSE_NAME VARCHAR(40) NOT NULL,
TEACHER VARCHAR(40) NOT NULL,
POINT INT NOT NULL,
TIME_1 CHAR(10) NOT NULL,
TIME_2 CHAR(10) NOT NULL,
LIMITED INT NOT NULL,
ROOM VARCHAR(20) NOT NULL,
PRIMARY KEY (COURSE_ID) );选课表:
CREATE TABLE ELECTIVE (
USERNAME VARCHAR(20) NOT NULL,
COURSE_ID CHAR(6) NOT NULL,
PRIMARY KEY (USERNAME, COURSE_ID) );我的java逻辑如下:
//为用户进行删除选课
private synchronized boolean delCourse( String sUsername, String sCourseId ){
//获得数据库连接
Connection conn = this.getDBConnection();
if ( conn == null ){
return false;
}
Statement stmt = null;
ResultSet rs = null;
try{
stmt = conn.createStatement();
//尝试进行删除选课
String sUpdateQuery = "delete from elective where course_id='" + sCourseId+ "' ";
stmt.executeUpdate( sUpdateQuery );
return true;
}
catch(Exception e){
e.printStackTrace();
return false;
}
finally{
try{
rs.close();
stmt.close();
conn.close();
}
catch(Exception ex){
}
}
}
CREATE TABLE COURSE (
COURSE_ID CHAR(6) NOT NULL,
COURSE_NAME VARCHAR(40) NOT NULL,
TEACHER VARCHAR(40) NOT NULL,
POINT INT NOT NULL,
TIME_1 CHAR(10) NOT NULL,
TIME_2 CHAR(10) NOT NULL,
LIMITED INT NOT NULL,
ROOM VARCHAR(20) NOT NULL,
PRIMARY KEY (COURSE_ID) );选课表:
CREATE TABLE ELECTIVE (
USERNAME VARCHAR(20) NOT NULL,
COURSE_ID CHAR(6) NOT NULL,
PRIMARY KEY (USERNAME, COURSE_ID) );我的java逻辑如下:
//为用户进行删除选课
private synchronized boolean delCourse( String sUsername, String sCourseId ){
//获得数据库连接
Connection conn = this.getDBConnection();
if ( conn == null ){
return false;
}
Statement stmt = null;
ResultSet rs = null;
try{
stmt = conn.createStatement();
//尝试进行删除选课
String sUpdateQuery = "delete from elective where course_id='" + sCourseId+ "' ";
stmt.executeUpdate( sUpdateQuery );
return true;
}
catch(Exception e){
e.printStackTrace();
return false;
}
finally{
try{
rs.close();
stmt.close();
conn.close();
}
catch(Exception ex){
}
}
}
sUpdateQuery的实际内容是什么。
这之后,可能需要commit
conn.commit()
我在后面加了conn.commit();但是出现如下错误代码,求指教。。
java.sql.SQLException: Can't call commit when autocommit=true
at com.mysql.jdbc.Connection.commit(Connection.java:2159)
at cs.servlet.deleCourse.delCourse(deleCourse.java:75)
at cs.servlet.deleCourse.doGet(deleCourse.java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)