我只想知道在java中连续插入值的最佳方法是什么,比如java程序员在插入值时会做什么,并告诉我为什么?
是这样的吗?
String query = "insert into table (table1) values (1)";
PreparedStatement stmt = connection.preparedStatement(query );
stmt.execute();
还是喜欢这个?
String query = "insert into table (table1) values (?)";
PreparedStatement stmt = connection.preparedStatement(query );
stmt.setInt(1,"1");
stmt.execute();
或者有更好的方法吗?
只是要求提高我的编码知识:D
答案 0 :(得分:1)
第二个选项允许在查询中输入变量。如果您可以对值进行硬编码,那么第一个选项会更快。
当您允许用户输入(用户可以决定哪些值进入查询)时,第二个选项允许您将值安全地放入查询中。另一方面,这是一个非常大的禁忌:
String userInput = askUserForSomeValue();
String query = "insert into table (table1) values ("+userInput+")";
PreparedStatement stmt = connection.preparedStatement(query );
stmt.execute();
因为它允许用户发送SQL injection字符串。
答案 1 :(得分:0)
通常Prepared
语句被认为是正常的Statement
,因为它是预编译和语句的DB端缓存,理想情况下会导致整体执行速度更快,并且能够重用批量生成相同的SQL语句。在预防SQL Injects
方面也非常安全。
此thread也可能很方便。
答案 2 :(得分:0)
PreparedStatements是可行的方法,因为它们使SQL注入变得不可能。 这是一个将用户输入作为参数的简单示例:
PreparedStatement stmt = conn.prepareStatement("INSERT INTO person (value) values (?)");
stmt.setInt(1,userinput);
stmt.executeUpdate();