将函数参数传递给SQLiteDatabase查询(特别是whereArgs)

时间:2016-04-03 15:12:26

标签: java android sql android-sqlite

尝试将String值传递给SQLiteDatabase.query()方法中的whereArgs参数时,我遇到了一个特殊问题。 我正在尝试根据数据库中存储的SSID列表检查连接的Wi-Fi SSID。

SSID名称的值(字符串)是从WifiManager.getConnectionInfo().getSSID()方法获得的,如下所示:

String ssid = info.getSSID();

然后将此字符串传递给数据库帮助程序,该数据库帮助程序尝试获取具有SSID名称的行。 (该行还包含与应用程序相关的其他Wi-Fi网络保存数据。)

问题是我似乎无法通过query()函数中的whereArgs []参数接受ssid参数。

如下所示,连接到名为_The Cloud的网络导致第一个Log.d读取D/ssidGiven: "_The Cloud",第二个读取D/Cursor Count: 0,尽管有一个条目数据库中的名称。

public String getSSIDStatus(String ssid) {
    Log.d("test",ssid);
    SQLiteDatabase db = this.getReadableDatabase();
    String status = null;

    try {
        Log.d("ssidGiven",ssid);
        String[] matchWith = new String[] {ssid};
        Cursor cursor = db.query(SSID_TABLE_NAME, SSID_COLUMN_NAMES, SSID_COLUMN_NAMES[0]+"=?", matchWith, null, null, null);
        Log.d("Cursor Count", String.valueOf(cursor.getCount()));
        ...

如果我换出matchWith变量以包含硬编码字符串

String[] matchWith = new String[] {"_The Cloud"};

它完美运行并显示Cursor计数为1。

为什么我不能传递变量,尽管它是(据我所知),与硬编码字符串相同?

0 个答案:

没有答案