如何比较与其他值数据库插入值 [英] how to compare database insert values with other values

查看:164
本文介绍了如何比较与其他值数据库插入值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是我的codeI请点击此链接如何与值进行比较数据库值并定制我的codeI只想数据库,用户接入数据库中只显示多数民众赞成的名字,但我的表现在辅助类错误getAllApps方法类型的方法的getString(INT)光标不适用于参数(字符串)

 进口android.database.sqlite.SQLiteOpenHelper;
  公共类数据库处理器扩展SQLiteOpenHelper {//所有静态变量
//数据库版本
私有静态最终诠释DATABASE_VERSION = 1;//数据库名称
私有静态最后弦乐DATABASE_NAME =contactsManager;//联系人表名
私有静态最后弦乐TABLE_CONTACTS =接触;//联系方式表列名
私有静态最后弦乐KEY_ID =ID;
私有静态最后弦乐KEY_NAME =名;
//私有静态最后弦乐KEY_PH_NO =PHONE_NUMBER;公共数据库处理器(上下文的背景下){
    超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
}//创建表
@覆盖
公共无效的onCreate(SQLiteDatabase DB){
//字符串CREATE_CONTACTS_TABLE =CREATE TABLE+ TABLE_CONTACTS +(+
   KEY_ID +INTEGER PRIMARY KEY,+ KEY_NAME +TEXT+ KEY_PH_NO +TEXT+);    字符串CREATE_CONTACTS_TABLE =CREATE TABLE+ TABLE_CONTACTS +(+
   KEY_ID +INTEGER PRIMARY KEY,+ KEY_NAME +TEXT+独特的+);    db.execSQL(CREATE_CONTACTS_TABLE);
}//数据库升级
@覆盖
公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
    如果存在//删除旧的表
    db.execSQL(DROP TABLE IF EXISTS+ TABLE_CONTACTS);    //再次创建表
    的onCreate(DB);
}/ **
 *所有CRUD(创建,读取,更新,删除)操作
 * ///添加新联系人
无效的addContact(联系方式联系我们){
    SQLiteDatabase分贝= this.getWritableDatabase();    ContentValues​​值=新ContentValues​​();
    values​​.put(KEY_NAME,contact.getName()); // 联系人姓名
// values​​.put(KEY_PH_NO,contact.getPhoneNumber()); // 联系电话    //插入行
    db.insert(TABLE_CONTACTS,空,价值);
    db.close(); //关闭数据库连接
}//获取单触点
联系getContact(INT ID){
    SQLiteDatabase分贝= this.getReadableDatabase();    光标光标= db.query(TABLE_CONTACTS,新的String [] {KEY_ID,
            KEY_NAME},KEY_ID +=?,
            新的String [] {将String.valueOf(ID)},NULL,NULL,NULL,
       空值);
    如果(指针!= NULL)
        cursor.moveToFirst();    联系方式联系我们=新的联系人(的Integer.parseInt(cursor.getString(0)),
            cursor.getString(1));
    //返回接触
    返回接触;
}//获取所有联系人
公开名单<联系与GT; getAllContacts(){
    清单<联系与GT; contactList =新的ArrayList<联系与GT;();
    //选择所有查询
    字符串selectQuery =SELECT * FROM+ TABLE_CONTACTS;    SQLiteDatabase分贝= this.getWritableDatabase();
    光标光标= db.rawQuery(selectQuery,NULL);    //通过所有行循环,并增加列表
    如果(cursor.moveToFirst()){
        做{
            联系方式联系我们=新的联系人();
            contact.setID(的Integer.parseInt(cursor.getString(0)));
            contact.setName(cursor.getString(1));
            //contact.setPhoneNumber(cursor.getString(2));
            //添加联系人名单
            contactList.add(接触);
        }而(cursor.moveToNext());
    }    //返回联系人列表
    返回contactList;
}
//更新单触点
公众诠释updateContact(联系方式联系我们){
    SQLiteDatabase分贝= this.getWritableDatabase();    ContentValues​​值=新ContentValues​​();
    values​​.put(KEY_NAME,contact.getName());
// values​​.put(KEY_PH_NO,contact.getPhoneNumber());    //更新行
    返回db.update(TABLE_CONTACTS,价值观,KEY_ID +=?,
            新的String [] {将String.valueOf(contact.getID())});
}//删除单个联系人
公共无效deleteContact(联系方式联系我们){
    SQLiteDatabase分贝= this.getWritableDatabase();
    db.delete(TABLE_CONTACTS,KEY_ID +=?,
            新的String [] {将String.valueOf(contact.getID())});
    db.close();
}
公众诠释deleteContact(){
    尝试{
       SQLiteDatabase分贝= this.getWritableDatabase();
        返回db.delete(TABLE_CONTACTS,NULL,NULL);
    }赶上(例外五){
        e.printStackTrace();
    }
    返回0;
}//获取联系人计数
公众诠释getContactsCount(){
    字符串countQuery =SELECT * FROM+ TABLE_CONTACTS;
    SQLiteDatabase分贝= this.getReadableDatabase();
    光标光标= db.rawQuery(countQuery,NULL);
    cursor.close();    //返回计数
    返回cursor.getCount();
}公众的ArrayList<串GT; getAllApps(){    字符串selectQuery =SELECT * FROM表;
     ArrayList的<串GT;应用=新的ArrayList<串GT;();
    SQLiteDatabase分贝= this.getWritableDatabase();
    光标光标= db.rawQuery(selectQuery,NULL);    //通过所有行循环,并增加列表
    如果(cursor.moveToFirst()){
        做{
            apps.add(cursor.getString(KEY_NAME));
        }而(cursor.moveToNext());
    }    //返回列表
    返回应用程序;
}  }

和我的活动类

 公共类PlayStoreApps扩展活动器具
        OnItemClickListener {
/ *是否要包括系统应用* /
私有静态最终布尔INCLUDE_SYSTEM_APPS = FALSE;
数据库处理器分贝;
私人的ListView mAppsList;
私人AppListAdapter mAdapter;
私人列表<应用> MAPPS;
字符串APKFilePath =MNT / SD卡/ FOLDERNAME /;/ **当第一次创建活动调用。 * /
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.games);
    DB =新数据库处理器(本);
    按钮AddMore =(按钮)findViewById(R.id.AddMore);
    AddMore.setOnClickListener(新OnClickListener(){
        公共无效的onClick(查看视图){            //意向意图=新意图(FunActivity.this,
            // SdcardAPkMgr.class);
            // startActivity(意向);
        }
    });    mAppsList =(ListView控件)findViewById(R.id.appslist);
    mAppsList.setOnItemClickListener(本);    MAPPS = loadInstalledApps(INCLUDE_SYSTEM_APPS);    mAdapter =新AppListAdapter(getApplicationContext());
    mAdapter.setListItems(MAPPS);
    mAppsList.setAdapter(mAdapter);    新LoadIconsTask()执行(mApps.toArray(新的App [] {}));
}公共无效onItemClick(适配器视图<>母公司,观景,INT位置,
        长ID){    最终的应用程序=(APP)parent.getItemAtPosition(位置);    AlertDialog.Builder建设者=新AlertDialog.Builder(本);    弦乐味精= app.getTitle()
            +\\ n \\ n
            +版本
            + app.getVersionName()
            +(
            + app.getVersion code()
            +)
            +(app.getDescription()!= NULL?(\\ n \\ n+应用程序
                    .getDescription()):);    builder.setMessage(MSG)
            .setCancelable(真)
            .setTitle(app.getTitle())
            .setIcon(mAdapter.getIcons()获得(app.getPackageName()))
            .setPositiveButton(启动
                    新DialogInterface.OnClickListener(){
                        公共无效
      的onClick(DialogInterface对话,诠释的id){
                            //将启动应用程序    调用它的推出意图
                            意向I =
      getPackageManager()        .getLaunchIntentForPackage(
                                            app.getPackageName());
                            尝试{
                                如果(我!= NULL){     startActivity(ⅰ);
                                }其他{
                                    我=新
    意图(app.getPackageName());     startActivity(ⅰ);
                                }
                            }赶上
       (ActivityNotFoundException错误){  Toast.makeText(PlayStoreApps.this,     错误启动程序,         Toast.LENGTH_SHORT).show();
                            }
                        }
                    })
            .setNegativeButton(取消,
                    新DialogInterface.OnClickListener(){
                        公共无效
         的onClick(DialogInterface对话,诠释的id){
                            dialog.cancel();
                        }
                    });
    AlertDialog对话框= builder.create();
    dialog.show();
}私人列表<应用> loadInstalledApps(布尔includeSysApps){
    清单<应用>应用=新的ArrayList<应用>();    //包管理器包含所有安装的应用程序的信息
    软件包管理系统软件包管理系统= getPackageManager();    清单< PackageInfo>包= packageManager.getInstalledPackages(0); //
           PackageManager.GET_META_DATA    的for(int i = 0; I< packs.size();我++){
        PackageInfo p值= packs.get(ⅰ);
        ApplicationInfo applicationInfo = p.applicationInfo;
        字符串名称= packageManager.getApplicationLabel(applicationInfo)
                的ToString();        名单的ArrayList = db.getAllApps();        如果(arraylist.contains(p.packageName))        {
            应用程序=新的App();
            app.setTitle(p.applicationInfo.loadLabel(软件包管理系统)
                    的ToString());
            app.setPackageName(p.packageName);
            app.setVersionName(p.versionName);
            app.setVersion code(p.version code);
            CharSequence的描述= p.applicationInfo
                    .loadDescription(软件包管理系统);
            app.setDescription(说明​​!= NULL?
     description.toString()
                    :);
            apps.add(应用);
            //}
        }
    }
    返回应用程序;
}/ **
 *异步任务加载安装的应用程序的图标。
 * /
私有类LoadIconsTask扩展的AsyncTask<应用程序,太虚,太虚> {
    @覆盖
    保护无效doInBackground(应用程序...应用){        地图<弦乐,可绘制>图标=新的HashMap<弦乐,可绘制>();
        软件包管理系统经理= getApplicationContext()
                .getPackageManager();        对于程序(App应用:应用){
            字符串PKGNAME = app.getPackageName();
            可绘制ICO = NULL;
            尝试{
                意向I =
       manager.getLaunchIntentForPackage(PKGNAME);
                如果(我!= NULL){
                    ICO = manager.getActivityIcon(ⅰ);
                }
            }赶上(ē的NameNotFoundException){
                Log.e(ERROR,无法找到图标包'
                        + PKGNAME +:+
         e.getMessage());
            }
            icons.put(app.getPackageName(),ICO);
        }
        mAdapter.setIcons(图标);        返回null;
    }    @覆盖
    保护无效onPostExecute(虚空结果){
        mAdapter.notifyDataSetChanged();
    }
}
         }


解决方案

更改方法getAllApps()来

 公开的ArrayList<串GT; getAllApps(){    字符串selectQuery =SELECT * FROM+ TABLE_CONTACTS;
     ArrayList的<串GT;应用=新的ArrayList<串GT;();
    SQLiteDatabase分贝= this.getWritableDatabase();
    光标光标= db.rawQuery(selectQuery,NULL);    //通过所有行循环,并增加列表
    如果(cursor.moveToFirst()){
        做{
            apps.add(cursor.getString(cursor.getColumnIndex(KEY_NAME)));
        }而(cursor.moveToNext());
    }    //返回列表
    返回应用程序;
}

和把你的结果
列表的ArrayList = db.getAllApps(); 结果
 之前的循环

below is my code i follow this link how to compare values with database values and customize my code i just want to display only thats name in database which user insert in database but is show my error in helper class in getAllApps method The method getString(int) in the type Cursor is not applicable for the arguments (String)

  import android.database.sqlite.SQLiteOpenHelper;


  public class DatabaseHandler extends SQLiteOpenHelper {

// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "contactsManager";

// Contacts table name
private static final String TABLE_CONTACTS = "contacts";

// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
//private static final String KEY_PH_NO = "phone_number";

public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
//  String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("+ 
   KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"+ KEY_PH_NO + " TEXT" + ")";

    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("+ 
   KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT" +  " UNIQUE " + ")";

    db.execSQL(CREATE_CONTACTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

    // Create tables again
    onCreate(db);
}

/**
 * All CRUD(Create, Read, Update, Delete) Operations
 */

// Adding new contact
void addContact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_NAME, contact.getName()); // Contact Name
//  values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone

    // Inserting Row
    db.insert(TABLE_CONTACTS, null, values);
    db.close(); // Closing database connection
}

// Getting single contact
Contact getContact(int id) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
            KEY_NAME }, KEY_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, 
       null);
    if (cursor != null)
        cursor.moveToFirst();

    Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
            cursor.getString(1));
    // return contact
    return contact;
}

// Getting All Contacts
public List<Contact> getAllContacts() {
    List<Contact> contactList = new ArrayList<Contact>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Contact contact = new Contact();
            contact.setID(Integer.parseInt(cursor.getString(0)));
            contact.setName(cursor.getString(1));
            //contact.setPhoneNumber(cursor.getString(2));
            // Adding contact to list
            contactList.add(contact);
        } while (cursor.moveToNext());
    }

    // return contact list
    return contactList;
}




// Updating single contact
public int updateContact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_NAME, contact.getName());
//  values.put(KEY_PH_NO, contact.getPhoneNumber());

    // updating row
    return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
            new String[] { String.valueOf(contact.getID()) });
}

// Deleting single contact
public void deleteContact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
            new String[] { String.valueOf(contact.getID()) });
    db.close();
}




public int deleteContact() {
    try {
       SQLiteDatabase db = this.getWritableDatabase();
        return db.delete(TABLE_CONTACTS, null, null);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return 0;
}

// Getting contacts Count
public int getContactsCount() {
    String countQuery = "SELECT  * FROM " + TABLE_CONTACTS;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(countQuery, null);
    cursor.close();

    // return count
    return cursor.getCount();
}



public ArrayList<String> getAllApps() {

    String selectQuery = "SELECT  * FROM table";
     ArrayList<String> apps = new ArrayList<String>();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            apps.add(cursor.getString( KEY_NAME));
        } while (cursor.moveToNext());
    }

    // return list
    return apps;
}







  }

And My activity Class

public class PlayStoreApps extends Activity implements 
        OnItemClickListener {
/* whether or not to include system apps */
private static final boolean INCLUDE_SYSTEM_APPS = false;
DatabaseHandler db;
private ListView mAppsList;
private AppListAdapter mAdapter;
private List<App> mApps;
String APKFilePath = "mnt/sdcard/foldername/";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.games);
    db = new DatabaseHandler(this);
    Button AddMore = (Button) findViewById(R.id.AddMore);
    AddMore.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {

            // Intent intent = new Intent(FunActivity.this,
            // SdcardAPkMgr.class);
            // startActivity(intent);
        }
    });

    mAppsList = (ListView) findViewById(R.id.appslist);
    mAppsList.setOnItemClickListener(this);

    mApps = loadInstalledApps(INCLUDE_SYSTEM_APPS);

    mAdapter = new AppListAdapter(getApplicationContext());
    mAdapter.setListItems(mApps);
    mAppsList.setAdapter(mAdapter);

    new LoadIconsTask().execute(mApps.toArray(new App[] {}));
}

public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {

    final App app = (App) parent.getItemAtPosition(position);

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    String msg = app.getTitle()
            + "\n\n"
            + "Version "
            + app.getVersionName()
            + " ("
            + app.getVersionCode()
            + ")"
            + (app.getDescription() != null ? ("\n\n" + app
                    .getDescription()) : "");

    builder.setMessage(msg)
            .setCancelable(true)
            .setTitle(app.getTitle())
            .setIcon(mAdapter.getIcons().get(app.getPackageName()))
            .setPositiveButton("Launch",
                    new DialogInterface.OnClickListener() {
                        public void 
      onClick(DialogInterface dialog, int id) {
                            // start the app by 

    invoking its launch intent
                            Intent i = 
      getPackageManager()

        .getLaunchIntentForPackage(
                                            app.getPackageName());
                            try {
                                if (i != null) {

     startActivity(i);
                                } else {
                                    i = new 
    Intent(app.getPackageName());

     startActivity(i);
                                }
                            } catch 
       (ActivityNotFoundException err) {

  Toast.makeText(PlayStoreApps.this,

     "Error launching app",

         Toast.LENGTH_SHORT).show();
                            }
                        }
                    })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void 
         onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });
    AlertDialog dialog = builder.create();
    dialog.show();
}

private List<App> loadInstalledApps(boolean includeSysApps) {
    List<App> apps = new ArrayList<App>();

    // the package manager contains the information about all installed apps
    PackageManager packageManager = getPackageManager();

    List<PackageInfo> packs = packageManager.getInstalledPackages(0); // 
           PackageManager.GET_META_DATA

    for (int i = 0; i < packs.size(); i++) {
        PackageInfo p = packs.get(i);
        ApplicationInfo applicationInfo = p.applicationInfo;
        String name = packageManager.getApplicationLabel(applicationInfo)
                .toString();

        List arraylist = db.getAllApps();

        if (arraylist.contains(p.packageName))

        {
            App app = new App();
            app.setTitle(p.applicationInfo.loadLabel(packageManager)
                    .toString());
            app.setPackageName(p.packageName);
            app.setVersionName(p.versionName);
            app.setVersionCode(p.versionCode);
            CharSequence description = p.applicationInfo
                    .loadDescription(packageManager);
            app.setDescription(description != null ? 
     description.toString()
                    : "");
            apps.add(app);
            // }
        }
    }
    return apps;
}

/**
 * An asynchronous task to load the icons of the installed applications.
 */
private class LoadIconsTask extends AsyncTask<App, Void, Void> {
    @Override
    protected Void doInBackground(App... apps) {

        Map<String, Drawable> icons = new HashMap<String, Drawable>();
        PackageManager manager = getApplicationContext()
                .getPackageManager();

        for (App app : apps) {
            String pkgName = app.getPackageName();
            Drawable ico = null;
            try {
                Intent i = 
       manager.getLaunchIntentForPackage(pkgName);
                if (i != null) {
                    ico = manager.getActivityIcon(i);
                }
            } catch (NameNotFoundException e) {
                Log.e("ERROR", "Unable to find icon for package '"
                        + pkgName + "': " + 
         e.getMessage());
            }
            icons.put(app.getPackageName(), ico);
        }
        mAdapter.setIcons(icons);

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        mAdapter.notifyDataSetChanged();
    }
}


         }

解决方案

change method getAllApps() to

public ArrayList<String> getAllApps() {

    String selectQuery = "SELECT  * FROM "+TABLE_CONTACTS;
     ArrayList<String> apps = new ArrayList<String>();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            apps.add(cursor.getString(cursor.getColumnIndex(KEY_NAME)));
        } while (cursor.moveToNext());
    }

    // return list
    return apps;
}

and put your
List arraylist = db.getAllApps();
before the for loop

这篇关于如何比较与其他值数据库插入值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆