java - 如何通过jdbc java添加sql参数化查询

标签 java jdbc

我必须开发一个参数化的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/

相关文章:

java - 如何使用 Java 测试与 Oracle 数据库的连接

mysql - 从 clojure 连接到 mysql 服务器

mysql - 重新部署后,Tomcat webapp 无法使用 MySQL 驱动程序

javafx 如何设置文本或标签的中心位置?

java - 如何读取zip文件的内容并保存文件

java - Primefaces 数据表中的日期显示不正确

Eclipse 中未检测到 Java MySQL 连接器

java - 无法读取蓝牙接收到的数据

java - Spring Boot,JaxB 的 ClassNotDef 错误,包 -Info.java

java - 有没有一种简单的方法可以将包含秒和毫秒的时间戳值更改为包含小时和分钟的时间戳值?