-1

我有一个包含多个电话号码的数据库。我需要检查数据库是否包含特定数字。如何在 if 语句中获取数据库值?我应该使用数组列表吗?

这就是我到目前为止一直在做的事情..

@Override
public void onReceive(Context context, Intent intent) {
Bundle bund=intent.getExtras();
String space="";

if(bund!=null) {  
Object[] smsExtra = (Object[]) bund.get(SMS_EXTRA_NAME);

for (int i = 0; i < smsExtra.length; i++) {
SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
body = sms.getMessageBody().toString();
address = sms.getOriginatingAddress();

db = openOrCreateDatabase("Admindb", MODE_PRIVATE, null);
Cursor crs = db.rawQuery("select * from adminstbl", null);
String[] str= new String[crs.getCount()];
crs.moveToFirst();
for(int k=0;k<str.length;k++)
{
str[k] = crs.getString(crs.getColumnIndex("Number"));
crs.moveToNext();
}

if (address.equals(str)){
 //do my task here
}
4

1 回答 1

1

首先,在您的活动代码中,您可以使用游标评估您的数据库。

 Cursor numberCursor = mDbHelper.fetchRecord(mPhoneNumber);

这是您的数据库处理程序中的代码示例。

public Cursor fetchRecord(long mPhoneNumber) throws SQLException {

    Cursor mCursor = mDb.query(true, ACCOUNTS_TABLE, new String[]{
                    ACCOUNTS_ROWID, ACCOUNTS_NAME, ACCOUNTS_ADDRESS,
                    ACCOUNTS_PHONENUMBER}, ACCOUNTS_PHONENUMBER+ "=" + mPhoneNumber, null, null,
            null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;

}

在游标查询中读取ACCOUNTS_PHONENUMBER+ "=" + mPhoneNumber的部分正在查找与您从活动中传入的号码匹配的任何记录。游标将只返回具有该编号的记录。

最后,回到您的活动中,在上面显示的第一行代码之后,您可以放置​​一个 if 语句来检查返回值。

  mReturnedNumber = numberCursor.getLong(3);
    if (mReturnedNumber != null){
// You may now use the number here since it is not null
}

有关 Sqlite 查询的更多信息,请点击此链接。

这是以下评论之一的代码示例。

 Cursor mCursor = mDb.query(true, ACCOUNTS_TABLE, new String[]{
                ACCOUNTS_ROWID, ACCOUNTS_NAME, ACCOUNTS_ADDRESS,
                ACCOUNTS_PHONENUMBER}, ACCOUNTS_PHONENUMBER+ "=" + mPhoneNumber + " OR " + ACCOUNTS_PHONENUMBER_2 + "=" + mPhoneNumber, null, null,
        null, null, null);

请注意,查询现在有一个 OR 语句。

于 2015-11-28T17:56:00.843 回答