当前位置: 首页 > 知识库问答 >
问题:

解释如何使用Rawquery传递参数

拓拔德馨
2023-03-14

我在onCreate中创建的SQLite数据库中有三个表。我没有数据记录,只需要查询表进行计算并显示在屏幕上。这是我需要做的sql来获取我需要的3个变量。sql只返回一条记录不是列表。

 SELECT
        table1.nome,
        table1.valorinicial,
        table2.valorkm
    FROM
        table3
    INNER JOIN bandeira ON table1. ID = table3.bandeira_id
    INNER JOIN tarifacorrida ON table2. ID = table1.tarifacorrida_id
    WHERE
        ? BETWEEN table3.datainicio
    AND table3.datafim
    OR table3.datainicio <= ?
    AND table3.datafim IS NULL
    AND ? BETWEEN table3.horainicio
    AND table3.horafim
    AND ? = TRUE;

Rawquery研究并认为这是最好的解决方案,但不知道如何运行sql,当我将这些参数传递给sql并获得我需要的三个变量时,是否有人能向我详细解释一下,以便我能够理解并应用到这里?

  public ExampleVO getExample(){
        SQLiteDatabase db = new DB(ctx).getReadableDatabase();
        Cursor rs = db.rawQuery(sql, null);

        ExampleVO vo = null;

        if (rs.moveToFirst()){
            vo = new ExampleVO();
            vo.setValor(rs.getString(rs.getColumnIndex("ColumnName")));


        }

        return vo;
    }

共有1个答案

薛弘阔
2023-03-14

我认为您可以使用字符串用参数填充sql。格式,然后您不需要rawQuery的参数(第二个参数将为null,与当前一样)

如果要使用参数(带有?符号的sql),则args参数需要是String数组,例如:

Cursor cc = db.rawQuery("select col1 from table where col2=? and col3=?",new String[] { "value for col2", "value for col3" });

带字符串。格式(编辑:这是不正确的方式,请参阅下面的注释。因此,第一种情况是正确的):

String sql = String.format("select col1 from table where col2=%s and col3=%s","value for col2", "value for col3");
Cursor cc = db.rawQuery(sql, null);
 类似资料:
  • 我正在使用Spring 3.1.2。带有cglib加载时编织的RELEASE,我试图获得使用具有自定义注释和注释参数的方法的建议。 建议: 这是我正在测试的课程: 问题是我无法得到执行建议。如果我删除切入点中的@args和args条件,则会发出通知,但随后我必须深入到过程连接点(ProceedingJoinPoint)以获取所需的参数。 为什么这个建议没有生效?我做错什么了吗? 编辑:以下切入点可

  • 我需要向TestNG数据提供程序传递10多个参数,代码如下所示。。。 有谁能告诉我,如果我们需要使用DataProvider传递10个以上的参数,我们应该采取什么方法?是否有其他方法来声明测试方法的参数?

  • 问题内容: 以传统方式添加事件侦听器: 但是我想适应addEventListener的方式: 它不起作用,因为我无法将getSelection()中的任何参数作为addEventListener方法中的第二个参数传递?据我所知,我只能使用没有括号的函数名。 任何的想法? 问题答案: 无需传递任何内容。用于的函数将自动绑定到当前元素。只需在您的函数中使用: 如果要将任意数据传递给函数,请将其包装在您

  • 问题内容: 一个非常菜鸟般的问题: 我正在尝试使用工厂方法构建资源对象: 这种方法很容易,因为所有参数都是预定义的,organEntity和organCommpassword是在tag中定义的。 现在,对于另一个资源对象,我需要在调用工厂时传递参数。 我想象该资源对象的调用代码应如下所示: 我知道query()方法可以添加参数: 我想知道是否只是传递参数,可以在工厂获得参数吗?如何在工厂方法中指定

  • 问题内容: 这是一个简单程序的概述 我只是不断获取“未定义全局名称foo” .....有人可以帮我吗?谢谢! 问题答案: 代码段必须是独立的-它们不能进行外部引用。您必须在statement-string或setup-string中定义值: 更好的是,重写代码以不使用全局值。

  • 我想从'get codepage'传递2个参数到'mainpage',然后我出现了这个错误。这是我的getCodePage我传递参数的部分: 当我想将参数作为对象时,这是我的主页: 那么这里有一个错误:没有为类型“object”flutter error定义运算符“[]”