【问题标题】:Getting database values in if statement在 if 语句中获取数据库值
【发布时间】:2015-11-28 17:31:30
【问题描述】:

我有一个包含多个电话号码的数据库。我需要检查数据库是否包含特定数字。如何在 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
}

【问题讨论】:

  • 您想使用 SQL 在您的数据库上执行querydeveloper.android.com/training/basics/data-storage/… 。您需要根据具体数字创建selection
  • 我想做的是用户在应用程序开始时输入一些电话号码,当收到短信时,我想检查短信是否来自用户输入的任何号码更早并在此基础上做一些任务。我该怎么做??
  • 你可以通过阅读我上面链接的网址来做到这一点。那么你的下一个问题大概是这样的:stackoverflow.com/questions/1243199/…

标签: android arrays string if-statement android-database


【解决方案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
}

For more information on Sqlite queries, follow this link.

下面是其中一个 cmets 的代码示例。

 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 语句。

【讨论】:

  • 感谢您的回答。我会试试看它是否有效
  • @Shinil - 我使用查询语句的方式,只会返回一个匹配的值。无需编写代码来筛选所有记录以找到匹配项。研究一下我在回答中的链接中的信息,我想你会发现 Sqlite 框架会让你的生活更轻松。
  • 但是我可以用这个检查多个数字吗?喜欢多个电话号码?
  • @shinil - 你能给我举个例子吗?您是指一个查询中有多个数字吗?
  • 假设用户在应用开始时添加了 4 个不同的电话号码。当收到短信时,我需要检查短信是否来自用户之前添加的任何号码。也就是说,如果短信的始发地址与我在数据库中的任何号码匹配,那么我需要执行一些操作。否则什么都不做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
相关资源
最近更新 更多