在数据库

时间:2016-12-18 17:28:43

标签: java mysql

我只想知道在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

3 个答案:

答案 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();