[英]how to add sql parametrized queries through jdbc java
我必须在下面开发类似这样的参数化sql配置
select * from tablename where cid = cid
所以下面是其余的服务,它调用一个方法,以便用户传递输入参数,如表名和cid,并在此基础上将其传递到数据库和该特定表并检索库伦值,因此下面是现在的代码下面的代码请告知我如何更改要参数化的sql语句,以便它将根据用户输入的cid从表onm检索值
public String retriveData(@QueryParam("tablename") String tablename,@QueryParam("cid") String cid ) throws SQLException
{
Connection con=null;
PreparedStatement ps=null;
String statement="";
String retString="";
try {
//Class.forName("com.mysql.jdbc.Driver");
//put sql jdbc jar in tomcat lib
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con=DriverManager.getConnection("jdbc:sqlserver://xxx:1111; databaseName=aaa", "rr","vvv");
con.setAutoCommit(false);
System.out.println("FROM TABLE NAME : "+tablename);// ***** need to be parametrized query basis on the cid ******
statement="SELECT * FROM "+tablename+";";// ***** need to be parametrized query basis on the cid ********
System.out.println("STATEMENT : "+statement);
ps=con.prepareStatement(statement);
// Turn use of the cursor on.
//ps.setFetchSize(50);
ps.setMaxRows(10);
ResultSet rs=ps.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
String name=rsmd.getColumnName(5);
while(rs.next())
{
retString=retString+name+" : "+rs.getString(name)+"<br>";
System.out.println(retString);
}
你不能 您需要使用String.format使用字符串连接/占位符构造sql。 准备的语句用于列值,而不用于表名。
我不确定为什么要参数化表名。 但是通过使用如下所示的准备好的语句,可以对cid进行参数设置。
statement="SELECT * FROM " + tablename + " where cid = ?";
preparedStatement.setInt(1, cid);
如果您想通过使用cid过滤从特定表中检索值,我猜这就是答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.