【问题标题】:Passing a parameter in Raw SQL Ormlite在 Raw SQL Ormlite 中传递参数
【发布时间】:2014-11-02 08:51:33
【问题描述】:

我有这个 SQL。

select sum(distance) AS distance FROM RoadTravelTableFile where checkBoxBusiness ='1' and plate_Number = 'AAA567'"

我在 Ormlite 文档中看到了这个对原始 sql 的简单查询。

long maxUnits = orderDao.queryRawValue("select max(units) from orders");

在这个例子中,我像这样编写了我的 sql 并且它可以工作。

distance = (int) getHelper().getRoadTravelTableFileIntegerDao().queryRawValue("SELECT SUM(distance) FROM RoadTravelTableFile where checkBoxBusiness = '1' and plate_Number ='AAA567' ");

但是我有一个问题,如何将checkBoxBusiness和plate_Number的值作为参数?

【问题讨论】:

    标签: android sql parameter-passing ormlite


    【解决方案1】:

    ? 替换当前值,并向queryRawValue 方法添加参数。

    Integer checkBoxBusiness = 1;
    String plateNumber = "AAA567";
    distance = (int) getHelper()
            .getRoadTravelTableFileIntegerDao()
            .queryRawValue("SELECT SUM(distance) FROM RoadTravelTableFile where checkBoxBusiness = ? and plate_Number = ?", checkBoxBusiness, plateNumber);
    

    【讨论】:

    • 这行得通!但我已经阅读了关于 sql injection 的内容。这安全吗? @WojciechKo
    • 我想这根本不安全。
    • 通常参数化(“使用?”)被认为更安全,因为您告诉数据库/驱动程序的内容?严格来说是文字值,而不是命令/表达式。
    • @nsandersen 感谢您的评论! 4年后,现在我明白了sql注入是什么意思,我可以说它似乎对sql注入无懈可击。
    猜你喜欢
    • 2011-10-17
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多