我可以在INSERT PreparedStatement中使用命名参数吗?

时间:2016-09-20 15:08:39

标签: java sql jdbc prepared-statement

我想要一个建议,然后通常我会以这种方式在数据库上加载数据:

PreparedStatement prep = con.prepareStatement ("INSERT INTO TABLE (NAME, LAST NAME) VALUES (?,?)");
             prep.setString (1, name);
             prep.setString (2, last name);
             prep.executeUpdate ();

我想要一种避免指示数据引用索引的方法,也就是说,我想将数据不整齐地发送到PreparedStatement 没有索引,我想发送数据,然后它将是API来设置正确的字段,它可以使用这样的东西(注意我用名称颠倒姓氏,首先发送姓氏,API应该将其添加到第二个字段)

PreparedStatement prep = con.prepareStatement ("INSERT INTO TABLE (NAME, LAST NAME) VALUES (?,?)");
             prep.setString (surname, name);
             prep.setString (NAME, name);
             prep.executeUpdate ();

3 个答案:

答案 0 :(得分:1)

JDBC标准不支持PreparedStatement中的命名参数标记,但是,JDBC驱动程序的某些供应商实现确实支持它们 - 这是DB2 JDBC extension的示例。检查特定数据库供应商的驱动程序实现的文档。

答案 1 :(得分:0)

jdbc本身不支持预准备语句中的命名参数。我发现this answer可能会回答您的问题。

根据您使用的数据库(Oracle,MySQL等),您可能需要稍微不同的工具。

答案 2 :(得分:0)

查看ORACLE中的JAVA PreparedStatement文档。没有这样的方法。

可用的方法通常如下所示:

set...(int parameterIndex, SomeObject variableName)