尝试将新数据添加到我的一个表时出错
Error when trying to add new data to one of my tables
从事一个项目,我必须向不同的表添加新数据(我是新手)。我正在使用连接到 mysql 数据库的 Netbeans。数据库工作正常,当我直接执行查询时,我的查询也能正常工作。但是当我尝试通过我的 javacode 用新数据更新表时,它失败了。
代码:
ConnectionClass db = new ConnectionClass();
try {
db.ConnectToDb();
} catch (SQLException ex) {
Logger.getLogger(AddUser.class.getName()).log(Level.SEVERE, null, ex);
}
String sql = "insert into users values (3, 'Nicklas', 'niklas@alskart.se', 'nisun', 'heej', '1')";
/* String laggTill = "insert into agent values ("+idb.getAutoIncrement("agent", "aid")+
", '"+tfNamn.getText()+"', '"+tfNr.getText()+"', '"+tfMail.getText()+"')";
*/
try {
db.myStmt.executeUpdate(sql);
} catch (SQLException ex) {
Logger.getLogger(AddUser.class.getName()).log(Level.SEVERE, null, ex);
}
}
异常生成:
apr 10, 2015 1:17:47 EM Project.AddUser btn_saveNewUserActionPerformed
ALLVARLIG: null
java.sql.SQLException: No operations allowed after statement closed.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
at com.mysql.jdbc.StatementImpl.checkClosed(StatementImpl.java:445)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1554)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1549)
at Project.AddUser.btn_saveNewUserActionPerformed(AddUser.java:159)
将数据记录插入数据库的基本步骤是:
Connection connection //connect to db
PreparedStatement statement;
String query = "INSERT INTO...";
statement = connection.prepareStatement(query); //prepareStement (or createStatement()) based on query
statement.executeUpdate();
我认为您错过了 prepareStatement() 或 createStatement() 步骤。
所以(我不知道你的ConnectionClass是什么样的,请发布):
try {
db.myStmt.createStatement();
db.myStmt.executeUpdate(sql);
} catch (SQLException ex) {
Logger.getLogger(AddUser.class.getName()).log(Level.SEVERE, null, ex);
}
最后必须关闭连接和语句。
工作示例:http://www.mkyong.com/jdbc/jdbc-statement-example-insert-a-record/
您好,您的堆栈跟踪是这样说的
java.sql.SQLException: 语句关闭后不允许进行任何操作。
表示 Statement 对象不存在。
您可以通过以下方式完成:
Statement myStmt;
try {
myStmt = db.createStatement();
myStmt.executeUpdate(sql);
} catch (SQLException ex) {
Logger.getLogger(AddUser.class.getName()).log(Level.SEVERE, null, ex);
}
我假设引用变量 db 是 Connection 类型。
从事一个项目,我必须向不同的表添加新数据(我是新手)。我正在使用连接到 mysql 数据库的 Netbeans。数据库工作正常,当我直接执行查询时,我的查询也能正常工作。但是当我尝试通过我的 javacode 用新数据更新表时,它失败了。
代码:
ConnectionClass db = new ConnectionClass();
try {
db.ConnectToDb();
} catch (SQLException ex) {
Logger.getLogger(AddUser.class.getName()).log(Level.SEVERE, null, ex);
}
String sql = "insert into users values (3, 'Nicklas', 'niklas@alskart.se', 'nisun', 'heej', '1')";
/* String laggTill = "insert into agent values ("+idb.getAutoIncrement("agent", "aid")+
", '"+tfNamn.getText()+"', '"+tfNr.getText()+"', '"+tfMail.getText()+"')";
*/
try {
db.myStmt.executeUpdate(sql);
} catch (SQLException ex) {
Logger.getLogger(AddUser.class.getName()).log(Level.SEVERE, null, ex);
}
}
异常生成:
apr 10, 2015 1:17:47 EM Project.AddUser btn_saveNewUserActionPerformed
ALLVARLIG: null
java.sql.SQLException: No operations allowed after statement closed.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
at com.mysql.jdbc.StatementImpl.checkClosed(StatementImpl.java:445)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1554)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1549)
at Project.AddUser.btn_saveNewUserActionPerformed(AddUser.java:159)
将数据记录插入数据库的基本步骤是:
Connection connection //connect to db
PreparedStatement statement;
String query = "INSERT INTO...";
statement = connection.prepareStatement(query); //prepareStement (or createStatement()) based on query
statement.executeUpdate();
我认为您错过了 prepareStatement() 或 createStatement() 步骤。
所以(我不知道你的ConnectionClass是什么样的,请发布):
try {
db.myStmt.createStatement();
db.myStmt.executeUpdate(sql);
} catch (SQLException ex) {
Logger.getLogger(AddUser.class.getName()).log(Level.SEVERE, null, ex);
}
最后必须关闭连接和语句。
工作示例:http://www.mkyong.com/jdbc/jdbc-statement-example-insert-a-record/
您好,您的堆栈跟踪是这样说的 java.sql.SQLException: 语句关闭后不允许进行任何操作。 表示 Statement 对象不存在。 您可以通过以下方式完成:
Statement myStmt;
try {
myStmt = db.createStatement();
myStmt.executeUpdate(sql);
} catch (SQLException ex) {
Logger.getLogger(AddUser.class.getName()).log(Level.SEVERE, null, ex);
}
我假设引用变量 db 是 Connection 类型。