Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以使用String.format生成Sql查询字符串吗_Java_Mysql - Fatal编程技术网

Java 我可以使用String.format生成Sql查询字符串吗

Java 我可以使用String.format生成Sql查询字符串吗,java,mysql,Java,Mysql,我是Java编程新手。我想使用string.format构建一个SQL查询字符串。我已经在C#中使用了String.format,它工作正常,但在java中没有 String Query = String.format("insert into authentication(Id,Name,Email,Password,DOB,Gender,Phone,SQ,SA) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')", s

我是Java编程新手。我想使用
string.format
构建一个SQL查询字符串。我已经在C#中使用了
String.format
,它工作正常,但在java中没有

String Query = String.format("insert into authentication(Id,Name,Email,Password,DOB,Gender,Phone,SQ,SA) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')", signup.getId(), signup.getName(), signup.getEmail(), signup.getPassword(), signup.getDate_Of_Birth(), signup.getGender(), signup.getPhone(), signup.getSQ(), signup.getSA());

try {
    ps = con.prepareStatement(Query);
    int i = ps.executeUpdate();
} catch (SQLException e) {
    e.printStackTrace();
}

return i;
这里注册是bean类对象。但是这个方法不起作用,它只保存{0},{1}。。。在数据库中

我使用的另一种方法工作得很好,但与string.format相比,它的代码更多

try {
    ps = con.prepareStatement("insert into authentication Id=?,Name=?,Email=?,Password=?,DOB=?,Gender=?,Phone=?,SQ=?,SA=?,IsVerified=?,IsPay=? ");
    ps.setString(1, signup.getId());
    ps.setString(2, signup.getName());
    ps.setString(3, signup.getEmail());
    ps.setString(4, signup.getPassword());
    ps.setString(5, signup.getDate_Of_Birth());
    ps.setString(6, signup.getGender());
    ps.setString(7, signup.getPhone());
    ps.setString(8, signup.getSQ());
    ps.setString(9, signup.getSA());

    int i = ps.executeUpdate();
} catch (SQLException e) {
    e.printStackTrace();
}

是否可以使用java中的
string.format
构建SQL查询字符串?

字符串格式用于格式化java字符串。例如,当我们需要将浮点数的2个小数点表示为字符串时,可以使用它们。请参阅以下关于字符串格式的文章。但是,无论如何,您都可以使用字符串格式化技术。但是,您必须注意如何使用它。与使用数字不同,您可能必须使用C类型,即使用带s的百分号,例如,对于要放置在查询中的每个字符串使用%s。如果要将每个字符串插入到SQL语句中,则必须指明位置,如链接中所示


使用PreparedStatement是用于执行JDBC SQL语句的Java约定,因此应该使用它。

谢谢@blackpanther我理解字符串格式化的概念使用PreparedStatement不仅仅是一种约定。它效率更高,可以防止SQL注入。