第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 SQL 語句從命令行傳遞到 Java 代碼

將 SQL 語句從命令行傳遞到 Java 代碼

紫衣仙女 2023-04-13 15:29:53
我正在編寫代碼,在其中創(chuàng)建 JDBC 連接并執(zhí)行 select 語句。我想作為一個 jar 運行并從命令行為 eg 的 where 條件提供輸入java -jar abc.jar "abc"。如何才能做到這一點?try {    strExecuteQuery = "select b.FIUSB_REQUEST_MESSAGE,b.FIUSB_RESPONSE_MESSAGE,a.fiusb_tran_id,a.FIUSB_SRV_REQ_TYPE"        + " from fimaster.fiusb_transaction_tablehist a ,fimaster.FIUSB_TRANDETAILS_TABLE_HIST b"        + " where a.fiusb_tran_id = b.fiusb_tran_id and a.FIUSB_SRV_REQ_TYPE in('XferTrnRev','XferTrnAdd','PmtAdd') and a.fe_req_ref_num='args1'";    //PreparedStatement stmt=con.prepareStatement(strExecuteQuery);    //strExecuteQuery.getClass();    ddlStatement.execute(strExecuteQuery);    ddlStatement.closeConnection();我想把上面代碼中的args1作為命令行中的輸入
查看完整描述

2 回答

?
茅侃侃

TA貢獻1842條經(jīng)驗 獲得超21個贊

簡單(而且不安全?。┑姆椒ㄊ沁@樣的:


// package declaration

// imports 

public class Main {

    public static void main(String[] args) {

        if (args.length >= 1) {

            String query = "select FOO from BLAH a where a.BAZ = '" 

                + args[0] + "'";

            Connection connection = ...

            Statement statement = connection.createStatement();

            ResultSet rs = statement.execute(query);

            // etcetera

        } else {

            // report missing command line argument.

        }

    }

}

問題是通過字符串連接組裝 SQL 查詢?nèi)菀资艿絊QL 注入攻擊。特別是當(dāng)某些“參數(shù)”可能來自不可信的來源時。


因此,更好(更安全)的方法是使用PreparedStatement, 及其語法安全的參數(shù)替換機制:


// package declaration

// imports 

public class Main {

    public static void main(String[] args) {

        if (args.length >= 1) {

            String query = "select FOO from BLAH a where a.BAZ = ?";

            Connection connection = ...

            PreparedStatement statement = connection.createPreparedStatement(query);

            statement.setString(1, args[0]);

            ResultSet rs = statement.execute();

            // etcetera

        } else {

            // report missing command line argument.

        }

    }

}


查看完整回答
反對 回復(fù) 2023-04-13
?
元芳怎么了

TA貢獻1798條經(jīng)驗 獲得超7個贊

如果您從終端執(zhí)行命令,則該語句應(yīng)傳遞到 main 方法的 String[] args 參數(shù)中的代碼中,您應(yīng)該能夠從中在代碼中引用它。



查看完整回答
反對 回復(fù) 2023-04-13
  • 2 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號