方法1:
Connection connection=Connector.getConnection();
PreparedStatement ps1=connection.prepareStatement("insert into tbl_invtry(part_id,part_name)
values(?,?,)");
ps1.setString(1,action.getPart_id());
ps1.setString(2,action.getPart_name());
方法2 :
DAO dao = new DAOImpl(); //DB connection
String query="insert into tbl_entrp_proj(ASPECT_SRC_ID,PRNT_PROJ_ID)values('" +
project.getASPECT_SRC_ID() + "','" +
project.getPRNT_PROJ_ID() + "')";
boolean b = dao.insertQuery(query);
请建议哪个是最好的,为什么。 提前致谢。
答案 0 :(得分:2)
我会选择第一种方法,因为:
但是,我会考虑采用第三种方法 - 使用像Hibernate这样的ORM框架。
答案 1 :(得分:2)
正如Ashwin和dasblinkenlight所说,SQL注入是关注的问题。
在方法1中,您使用参数化查询来转义任何用户输入以防止SQL注入,在方法2中,您已经信任用户提供直接插入数据库的值。
请记住,SQL注入的语句在插入时可能不是问题,但是在select(或其他查询)上可能会破坏您的数据和数据库。
不使用方法一充其量是不负责任的,而且由于这些原因,最坏的情况是灾难性的。
有关为什么方法1最佳的次要原因,请查看this question,其中讨论了预准备语句的性能优势,并强调了防止SQL注入的重要性。