Java 插入件工作不正常
我的应用程序中有以下代码Java 插入件工作不正常,java,mysql,jdbc,Java,Mysql,Jdbc,我的应用程序中有以下代码 public int insert_dependente(Dependente dependente) { ResultSet r; int result = 0; if (!(dependente == null)) { try { Connection conn = new Conexao().getConnection(); String sql = "insert i
public int insert_dependente(Dependente dependente) {
ResultSet r;
int result = 0;
if (!(dependente == null)) {
try {
Connection conn = new Conexao().getConnection();
String sql = "insert into Dependente "
+ "(IdAssoc,"
+ "NomeDep,"
+ "SobrenomeDep,"
+ "RgDep,"
+ "CpfDep,"
+ " DtNascDep,"
+ " emailDep,"
+ " tipoDep,"
+ " DtCriacaoDep)"
+ " VALUES (" + dependente.getAssociado() + ","
+ "'" + dependente.getNome() + "',"
+ "'" + dependente.getSobrenome() + "',"
+ "'" + dependente.getRg() + "',"
+ "'" + dependente.getCpf() + "',"
//+ new java.sql.Date(dependente.getNascimento().getTime()).toString() + ","
+ "'" + dependente.getEmail() + "',"
+ "'" + dependente.getTipoDep() + "'";
//+ new java.sql.Date(new java.util.Date().getTime()).toString() + ")";
Statement state;
state = conn.createStatement();
state.execute(sql);
state.close();
String sql2 = "SELECT IdDep FROM Dependente WHERE CpfDep = " + dependente.getCpf();
state = conn.createStatement();
r = state.executeQuery(sql2);
while (r.next()) {
result = r.getInt("idAssoc");
}
r.close();
state.close();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(DependenteDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
return result;
}
问题是这些值从未插入到我的数据库中。
当系统到达生产线时
state.execute(sql);
系统忽略了一切,直接跳到了终点
return result;
我什么都试过了,但找不到我的错误。
有人能帮我吗?您在INSERT语句的末尾注释掉了括号:
String sql = "insert into Dependente "
+ "(IdAssoc,"
+ "NomeDep,"
...
//+ new java.sql.Date(new java.util.Date().getTime()).toString() + ")";
这就是为什么会出现SQLException
并且代码执行被中断的原因。您甚至可以将异常传递给日志记录器,您应该能够在日志中找到它:
Logger.getLogger(DependenteDAO.class.getName()).log(Level.SEVERE, null, ex);
请改用此代码:
String sql = "insert into Dependente "
+ "(IdAssoc,"
+ "NomeDep,"
+ "SobrenomeDep,"
+ "RgDep,"
+ "CpfDep,"
+ " DtNascDep,"
+ " emailDep,"
+ " tipoDep,"
+ " DtCriacaoDep)"
+ " VALUES (" + dependente.getAssociado() + ","
+ "'" + dependente.getNome() + "',"
+ "'" + dependente.getSobrenome() + "',"
+ "'" + dependente.getRg() + "',"
+ "'" + dependente.getCpf() + "',"
+ "'" + dependente.getEmail() + "',"
+ "'" + dependente.getTipoDep() + "')";
您注释掉了INSERT语句末尾的括号:
String sql = "insert into Dependente "
+ "(IdAssoc,"
+ "NomeDep,"
...
//+ new java.sql.Date(new java.util.Date().getTime()).toString() + ")";
这就是为什么会出现SQLException
并且代码执行被中断的原因。您甚至可以将异常传递给日志记录器,您应该能够在日志中找到它:
Logger.getLogger(DependenteDAO.class.getName()).log(Level.SEVERE, null, ex);
请改用此代码:
String sql = "insert into Dependente "
+ "(IdAssoc,"
+ "NomeDep,"
+ "SobrenomeDep,"
+ "RgDep,"
+ "CpfDep,"
+ " DtNascDep,"
+ " emailDep,"
+ " tipoDep,"
+ " DtCriacaoDep)"
+ " VALUES (" + dependente.getAssociado() + ","
+ "'" + dependente.getNome() + "',"
+ "'" + dependente.getSobrenome() + "',"
+ "'" + dependente.getRg() + "',"
+ "'" + dependente.getCpf() + "',"
+ "'" + dependente.getEmail() + "',"
+ "'" + dependente.getTipoDep() + "')";
我假设,执行SQL语句会引发异常。它应该在日志中的某个地方,因为您捕获它并记录它
原因:SQL insert语句缺少右括号:) 除此之外,使用
PreparedStatement
更容易、更安全,而不是通过编程将几个变量中的最终SQL语句连接起来(原因请参见):
我假设,执行SQL语句会引发异常。它应该在日志中的某个地方,因为您捕获它并记录它
原因:SQL insert语句缺少右括号:) 除此之外,使用
PreparedStatement
更容易、更安全,而不是通过编程将几个变量中的最终SQL语句连接起来(原因请参见):
您的SQL insert语句缺少右括号!您的SQL insert语句缺少右括号!