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

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

SQLite rawQuery + String.format = “該語句有 0 個(gè)參數(shù)。”?

SQLite rawQuery + String.format = “該語句有 0 個(gè)參數(shù)。”?

一只斗牛犬 2023-06-04 16:59:53
我正在嘗試在 android 中執(zhí)行 sqlite rawquery。我從我的設(shè)備上下載了數(shù)據(jù)庫,并使用“sqlite 查詢?yōu)g覽器”Windows 程序試錯(cuò),直到我得到我想要的?,F(xiàn)在的問題是我有我需要的字符串,我似乎無法將參數(shù)輸入其中,我懷疑它只是某種字符串轉(zhuǎn)義缺陷。我要執(zhí)行的查詢是SELECT lis.name from listItemSuggestion lis LEFT JOIN listItem li ON lis.name = li.name WHERE li.name is NULL AND lis.name LIKE '%a%'其中 '%a%' 中的 a 需要是可變參數(shù)。我在代碼中所做的是這樣的:getReadableDatabase().rawQuery(        String.format("SELECT lis.%s from %s lis LEFT JOIN %s li ON lis.%s = li.%s WHERE li.%s is NULL AND lis.%s LIKE '%%?%%';",            ListItemSuggestion.COLUMN_NAME,            ListItemSuggestion.TABLE_NAME,            ListItem.TABLE_NAME,            ListItemSuggestion.COLUMN_NAME,            ListItem.COLUMN_NAME,            ListItem.COLUMN_NAME,            ListItemSuggestion.COLUMN_NAME        ),        new String[]{filter}    );合同類是:import android.provider.BaseColumns;public final class ListItem {private ListItem(){}public static class ListItemEntry implements BaseColumns{    public static final String TABLE_NAME   = "listItem";    public static final String COLUMN_DONE  = "done";    public static final String COLUMN_NAME  = "name";    public static final String COLUMN_COUNT = "count";    public static final String COLUMN_TIMESTAMP = "timestamp";}}import android.provider.BaseColumns;public final class ListItemSuggestion {private ListItemSuggestion(){}public static class ListItemSuggestionEntry implements BaseColumns{    public static final String TABLE_NAME   = "listItemSuggestion";    public static final String COLUMN_NAME  = "name";}}我得到的錯(cuò)誤是:無法在索引 1 處綁定參數(shù),因?yàn)樗饕龇秶?。該語句有 0 個(gè)參數(shù)。(這意味著它沒有在查詢中找到“?”,對吧?雖然有一個(gè)......,順便說一句,“過濾器”是一個(gè)方法參數(shù))順便說一句:該查詢的目的是為輸入提供建議,其中列表項(xiàng)是動態(tài)的(= 在列表/表上,它們可以隨時(shí)從中刪除),而每個(gè)項(xiàng)目也會靜默創(chuàng)建一個(gè)建議項(xiàng)(在另一個(gè)表中)實(shí)際項(xiàng)目被刪除時(shí)不會被刪除。where 子句應(yīng)獲取與當(dāng)前文本輸入狀態(tài)匹配的建議,并排除列表中已存在的項(xiàng)目。
查看完整描述

3 回答

?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊

無法在索引 1 處綁定參數(shù),因?yàn)樗饕龇秶T撜Z句有 0 個(gè)參數(shù)。(這意味著它沒有在查詢中找到“?”,對嗎?


不完全是。


雖然有一個(gè)......,順便說一句,“過濾器”是一個(gè)方法參數(shù))


問題是問號在帶引號的字符串內(nèi)。這使它成為純文本,而不是參數(shù)占位符。這種變化似乎是你要找的:


getReadableDatabase().rawQuery(

        String.format("SELECT lis.%s from %s lis LEFT JOIN %s li ON lis.%s = li.%s WHERE li.%s is NULL AND lis.%s LIKE ?;",

            ListItemSuggestion.COLUMN_NAME,

            ListItemSuggestion.TABLE_NAME,

            ListItem.TABLE_NAME,

            ListItemSuggestion.COLUMN_NAME,

            ListItem.COLUMN_NAME,

            ListItem.COLUMN_NAME,

            ListItemSuggestion.COLUMN_NAME

        ),

        new String[]{ "%" + filter + "%" }

    );


查看完整回答
反對 回復(fù) 2023-06-04
?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊

完全不相關(guān),但如果使用字符串連接,SQL 將更容易閱讀:


getReadableDatabase().rawQuery(

        "SELECT lis." + ListItemSuggestion.COLUMN_NAME +

         " FROM " + ListItemSuggestion.TABLE_NAME + " lis" +

         " LEFT JOIN " + ListItem.TABLE_NAME + " li" +

           " ON li." + ListItem.COLUMN_NAME + " = lis." + ListItemSuggestion.COLUMN_NAME +

        " WHERE li." + ListItem.COLUMN_NAME + " IS NULL" +

          " AND lis." + ListItemSuggestion.COLUMN_NAME + " LIKE ?",

        new String[] { "%" + filter + "%" }

    );

實(shí)際上,您只用于li存在性檢查,所以這樣寫:


getReadableDatabase().rawQuery(

        "SELECT " + ListItemSuggestion.COLUMN_NAME +

         " FROM " + ListItemSuggestion.TABLE_NAME +

        " WHERE " + ListItemSuggestion.COLUMN_NAME + " LIKE ?" +

          " AND " + ListItemSuggestion.COLUMN_NAME + " NOT IN (" +

                 " SELECT li." + ListItem.COLUMN_NAME +

                   " FROM " + ListItem.TABLE_NAME + " li )",

        new String[] { "%" + filter + "%" }

    );


查看完整回答
反對 回復(fù) 2023-06-04
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

我不知道你怎么看這個(gè):


'%%?%%'

可以,但是您必須將其更改為串聯(lián)'%' || ? || '%':


getReadableDatabase().rawQuery(

        String.format("SELECT lis.%s from %s lis LEFT JOIN %s li ON lis.%s = li.%s WHERE li.%s is NULL AND lis.%s LIKE '%' || ? || '%';",

            ListItemSuggestion.COLUMN_NAME,

            ListItemSuggestion.TABLE_NAME,

            ListItem.TABLE_NAME,

            ListItemSuggestion.COLUMN_NAME,

            ListItem.COLUMN_NAME,

            ListItem.COLUMN_NAME,

            ListItemSuggestion.COLUMN_NAME

        ),

        new String[]{filter}

    );


查看完整回答
反對 回復(fù) 2023-06-04
  • 3 回答
  • 0 關(guān)注
  • 204 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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