亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何在android中的數據庫表的特定行中搜索字符串匹配

如何在android中的數據庫表的特定行中搜索字符串匹配

不負相思意 2023-07-19 17:10:03
我正在構建一個應用程序并第一次處理數據庫,我試圖獲取數據文本作為輸入并在特定行中搜索其匹配項。我沒能做到這一點。我已經選擇了特定行。我有六列,并且根據 id 獲得了特定行,但比較其他五列中的輸入文本給出了有問題的輸出。根據下面代碼中給出的方法,它在與第一列或最后一列條目(但不是全部)進行比較后給出結果。    public Cursor finddata(String name,int ida, int guess){        String Query = "SELECT  NAME1 FROM Capital_Names where ID = '" + ida + "' and NAME1='" +name+ "'";                    cursor=db.rawQuery(Query,null);                    check=1;                    if(cursor==null){                        String Query2 = "SELECT  NAME1 FROM Capital_Names where ID = '" + ida + "' and NAME2='" +name+ "'";                        cursor=db.rawQuery(Query2,null);                        check=2;                    }                    if(cursor==null){                        String Query3 = "SELECT  NAME1 FROM Capital_Names where ID = '" + ida + "' and NAME3='" +name+ "'";                        cursor=db.rawQuery(Query3,null);                        check=3;                    }                    if(cursor==null){                        String Query4 = "SELECT  NAME1 FROM Capital_Names where ID = '" + ida + "' and NAME4='" +name+ "'";                        cursor=db.rawQuery(Query4,null);                        check=4;                    }                    if(cursor==null){                        String Query5 = "SELECT  NAME1 FROM Capital_Names where ID = '" + ida + "' and NAME5='" +name+ "'";                        cursor=db.rawQuery(Query5,null);                        check=5;                    }                    if(cursor==null){                        String Query6 = "SELECT  NAME1 FROM Capital_Names where ID = '" + ida + "' and NAME6='" +name+ "'";                        cursor=db.rawQuery(Query6,null);                    }                    return cursor;                    }我認為我在游標上應用的 if 條件存在一些錯誤“if(cursor==null)”,因為它只是通過比較第一個語句而不是 if 來給出答案,即使它在第一個語句中匹配或不。如果有一些直接查詢語句可以做到這一點???我在互聯網上搜索了很多但找不到解決方案。如果可以的話,請不要引導我回答已經回答的問題并回答這個問題。問候
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

你做錯的是你檢查Cursor返回的對象是否rawQuery()是null.

rawQuery()返回 a Cursor,它可能為空(沒有任何行),但它永遠不可能是null。您可以通過檢查其方法

來檢查是否有任何行。 也不要使用 sql 語句的參數串聯。這是不安全的。 使用占位符和第二個參數來傳遞參數。 所以改成這樣:CursormoveToFirst()


?rawQuery()


public Cursor finddata(String name, int ida, int guess){

    String sql = "SELECT NAME1 FROM Capital_Names " + 

        "WHERE ID = ? AND ? IN (NAME1, NAME2, NAME3, NAME4, NAME5)";

    return db.rawQuery(sql, new String[] {ida, name});

您的代碼中似乎沒有使用guess的參數finddata(),因此您可以將其刪除。

另外您確定只想返回該列NAME1嗎?您可以將其替換為"SELECT * FROM..."以返回所有列。


查看完整回答
反對 回復 2023-07-19
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

public Cursor finddata(String name,int ida, int guess){

    String Query = "SELECT  NAME1 FROM Capital_Names 

                    WHERE ID = '" + ida + "'

                    AND

                   ( 

                   NAME1='" +name+ "' OR NAME2='" +name+ "' OR NAME3='" +name+ "' OR 

                   NAME4='" +name+ "' OR NAME5='" +name+ "')"

                   ;

return db.rawQuery(Query,null);

}

試試這個...


查看完整回答
反對 回復 2023-07-19
  • 2 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號