簡體   English   中英

如何通過jdbc java添加sql參數化查詢

[英]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。 准備的語句用於列值,而不用於表名。

來源: 如何將表名變量用於Java預准備語句插入

如何在SELECT COUNT查詢中將表名傳遞給Prepared Statement?

我不確定為什么要參數化表名。 但是通過使用如下所示的准備好的語句,可以對cid進行參數設置。

statement="SELECT * FROM " + tablename + " where cid = ?";

preparedStatement.setInt(1, cid);

如果您想通過使用cid過濾從特定表中檢索值,我猜這就是答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM