我有一个包含多个电话号码的数据库。我需要检查数据库是否包含特定数字。如何在if语句中获取数据库值?我应该使用Array List吗?
这就是我到目前为止所做的事情。
@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
}
答案 0 :(得分: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 +&#34; =&#34;游标查询中的+ mPhoneNumber 正在查找与您从活动传入的数字匹配的任何记录。光标只返回带有该编号的记录。
最后,回到你的活动中,在上面显示的第一行代码之后你可以放一个if语句来检查返回的值。
mReturnedNumber = numberCursor.getLong(3);
if (mReturnedNumber != null){
// You may now use the number here since it is not null
}
For more information on Sqlite queries, follow this link.
以下是其中一条评论的代码示例。
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语句。