在 if 语句中获取数据库值
Getting database values in if statement
我有一个包含多个 phone 号码的数据库。我需要检查数据库是否包含特定数字。如何在 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
}
首先,在您的 activity 代码中,您可以使用游标访问您的数据库。
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 的部分正在查找与您从 activity。游标只会 return 记录该数字。
最后,回到您的 activity,在上面显示的第一行代码之后,您可以放置一个 if 语句来检查 returned 值。
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 语句。
我有一个包含多个 phone 号码的数据库。我需要检查数据库是否包含特定数字。如何在 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
}
首先,在您的 activity 代码中,您可以使用游标访问您的数据库。
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 的部分正在查找与您从 activity。游标只会 return 记录该数字。
最后,回到您的 activity,在上面显示的第一行代码之后,您可以放置一个 if 语句来检查 returned 值。
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 语句。