我必须开发一个参数化的sql语句,如下所示
select * from tablename where cid = cid
下面是调用方法的其余服务,以便用户传递输入参数,例如表名和 cid 并以此为基础 将转到数据库和该特定表,并将检索 coulmn 值,因此下面是现在在下面的代码中的代码,请告知 我如何更改要参数化的sql语句,以便它将根据用户输入的cid从表中检索值
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。准备好的语句适用于列值而不是表名称。
来源:How to use a tablename variable for a java prepared statement insert
How to pass table name to a Prepared Statement in a SELECT COUNT query?
关于java - 如何通过jdbc java添加sql参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49726948/