如何在Android中的SQLite中使用LIKE?

时间:2013-12-14 06:11:29

标签: java android android-sqlite

我想检索我的数据库中状态为open的所有数据,以便在我的Android应用程序中使用LIKE命令和SQLite数据库。

但是当我运行应用程序时,我在searchList . setAdapter (new_Lead_List_Adapter)行获得了NullPointerException。

这是我的数据库适配器类

public class DataBase_Adapter 
{

        //Database NAme
        static final String DATABASE_NAME = "lead_management.db";

        //Database Version
        static final int DATABASE_VERSION = 4;


        // Variable to hold the database instance
        public  SQLiteDatabase db;

        // Context of the application using the database.
        private final Context context;

        // Database open/upgrade helper
        private DataBaseHelper dbHelper;

        public  DataBase_Adapter(Context _context) 
        {
            context = _context;
            dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        public  DataBase_Adapter open() throws SQLException 
        {
            db = dbHelper.getWritableDatabase();
            return this;
        }

        public void close() 
        {
            db.close();
        }

        public  SQLiteDatabase getDatabaseInstance()
        {
            return db;
        }


//Table name
        public static  String TABLE_NEW_LEAD="new_lead";

        //Creating New Lead Table Columns
        public static final String KEY_NEW_LEAD_ID ="id"; 
        public static final String KEY_NEW_LEAD_NAME ="name"; 
        public static final String KEY_NEW_LEAD_EMAIL ="email";
        public static final String KEY_NEW_LEAD_MOBILE="mobile";
        public static final String KEY_NEW_LEAD_Product="define_products";
        public static final String KEY_NEW_LEAD_BUDGET="budget";
        public static final String KEY_NEW_LEAD_PRIORITY="priority";
        public static final String KEY_NEW_LEAD_STATUS="status";
        public static final String KEY_NEW_LEAD_NOTES="notes";
        public static final String KEY_NEW_LEAD_REMINDER_DATE="reminder_date";
        public static final String KEY_NEW_LEAD_REMINDER_TIME="reminder_time";
        public static final String KEY_NEW_LEAD_ADDtoCONTACTS="add_to_contacts";


        //// SQL Statement to create a New Lead Database.

       static final String  CREATE_NEW_LEAD_TABLE = "CREATE TABLE "+ TABLE_NEW_LEAD + "("
                                        + KEY_NEW_LEAD_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
                                        + KEY_NEW_LEAD_NAME + " TEXT,"
                                        + KEY_NEW_LEAD_EMAIL + " TEXT,"
                                        + KEY_NEW_LEAD_MOBILE+ " TEXT,"
                                        + KEY_NEW_LEAD_Product + " TEXT,"
                                        + KEY_NEW_LEAD_BUDGET + " TEXT,"
                                        + KEY_NEW_LEAD_PRIORITY +" TEXT,"
                                        + KEY_NEW_LEAD_STATUS + " TEXT,"
                                        + KEY_NEW_LEAD_NOTES + " TEXT,"
                                        + KEY_NEW_LEAD_REMINDER_DATE + " TEXT,"
                                        + KEY_NEW_LEAD_REMINDER_TIME + " TEXT,"
                                        + KEY_NEW_LEAD_ADDtoCONTACTS + " TEXT"+");"; 
     //");";
        //Insert New Record In New Lead Table

      public void insert_NewLead_Entry(New_Lead_BeanClass newLead_BeanClass)
      {
          SQLiteDatabase sdb = dbHelper.getWritableDatabase();

          ContentValues contentNewLead_Val=new ContentValues();
          contentNewLead_Val.put(KEY_NEW_LEAD_NAME, newLead_BeanClass.get_Name());
          contentNewLead_Val.put(KEY_NEW_LEAD_EMAIL, newLead_BeanClass.get_Email());
          contentNewLead_Val.put(KEY_NEW_LEAD_MOBILE, newLead_BeanClass.get_MobileNo());
          contentNewLead_Val.put(KEY_NEW_LEAD_Product, newLead_BeanClass.get_Product());
          contentNewLead_Val.put(KEY_NEW_LEAD_BUDGET, newLead_BeanClass.get_Budget());
          contentNewLead_Val.put(KEY_NEW_LEAD_PRIORITY, newLead_BeanClass.get_Priority());
          contentNewLead_Val.put(KEY_NEW_LEAD_STATUS, newLead_BeanClass.get_Status());
          contentNewLead_Val.put(KEY_NEW_LEAD_NOTES, newLead_BeanClass.get_Notes());
          contentNewLead_Val.put(KEY_NEW_LEAD_REMINDER_DATE, newLead_BeanClass.get_Reminder_Date());
          contentNewLead_Val.put(KEY_NEW_LEAD_REMINDER_TIME, newLead_BeanClass.get_Reminder_Time());
          contentNewLead_Val.put(KEY_NEW_LEAD_ADDtoCONTACTS, newLead_BeanClass.get_AddtoContact());

          sdb.insert(TABLE_NEW_LEAD , null , contentNewLead_Val );

          //Close The Database Connection
          sdb.close();

      }


      public ArrayList<HashMap<String,String>> getAllUserData()
      {
          ArrayList<HashMap<String,String>> newLeadDat_Listl;
          newLeadDat_Listl = new ArrayList<HashMap<String,String>>();
          SQLiteDatabase sdatabase = dbHelper.getWritableDatabase();
          String selectQuery= "SELECT  * FROM" +  TABLE_NEW_LEAD ;

          Cursor cursor = sdatabase.rawQuery(selectQuery, null);

          if (cursor.moveToFirst()) 
          {
                do 
                {

                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put(KEY_NEW_LEAD_ID, cursor.getString(0));
                    map.put(KEY_NEW_LEAD_NAME, cursor.getString(1));
                    map.put(KEY_NEW_LEAD_EMAIL, cursor.getString(2));
                    map.put(KEY_NEW_LEAD_MOBILE, cursor.getString(3));
                    map.put(KEY_NEW_LEAD_Product, cursor.getString(4));
                    map.put(KEY_NEW_LEAD_BUDGET, cursor.getString(5));
                    map.put(KEY_NEW_LEAD_PRIORITY, cursor.getString(6));
                    map.put(KEY_NEW_LEAD_STATUS, cursor.getString(7));
                    map.put(KEY_NEW_LEAD_NOTES, cursor.getString(8));
                    map.put(KEY_NEW_LEAD_REMINDER_DATE, cursor.getString(9));
                    map.put(KEY_NEW_LEAD_REMINDER_TIME, cursor.getString(10));
                    map.put(KEY_NEW_LEAD_ADDtoCONTACTS, cursor.getString(11));

                    newLeadDat_Listl.add(map);
                } 
                while (cursor.moveToNext());
            }

        return newLeadDat_Listl;
        }
 }

这是我的活动代码

public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search_data);

        searchSpinner=(Spinner)findViewById(R.id.searchSpinner);
        searchBtn=(ImageButton)findViewById(R.id.searchButton);

        searchSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
        {
            @Override
            public void onItemSelected(AdapterView<?> parent, View v,
                    int position, long id) {
                // TODO Auto-generated method stub
                selectedSearchItem=parent.getItemAtPosition(position).toString().trim();
                System.out.println("selectedProductItem =" + selectedSearchItem);

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }

        });

        searchBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0)
            {
                displayNewLeadData();
            }
        });
    }

    public void displayNewLeadData() 
    {
        dbAdapter=new DataBase_Adapter(Serach_Data.this).open();
        dataBase = dbAdapter.getDatabaseInstance();

        //Cursor mCursor = dataBase.rawQuery("SELECT name FROM " + DataBase_Adapter.TABLE_NEW_LEAD, null);

        cursor = dataBase.rawQuery("SELECT id, name, priority, status FROM new_lead WHERE status LIKE ?", 
                new String[]{ selectedSearchItem + "%"});


        cursor.moveToFirst();

            arrayList_newLead_Id.clear(); 
            arrayList_newLead_Name.clear(); 
            arrayList_newLead_Priority.clear(); 
            arrayList_newLead_Status.clear(); 



        {
            do 
            {
                arrayList_newLead_Id.add(cursor.getString(cursor.getColumnIndex(DataBase_Adapter.KEY_NEW_LEAD_ID)));
                arrayList_newLead_Name.add(cursor.getString(cursor.getColumnIndex(DataBase_Adapter.KEY_NEW_LEAD_NAME)));
                arrayList_newLead_Priority.add(cursor.getString(cursor.getColumnIndex(DataBase_Adapter.KEY_NEW_LEAD_PRIORITY)));
                arrayList_newLead_Status.add(cursor.getString(cursor.getColumnIndex(DataBase_Adapter.KEY_NEW_LEAD_STATUS)));


            } while (cursor.moveToNext());
        }

        new_Lead_List_Adapter = new New_Lead_List_Adapter(Serach_Data.this  ,
                                                        arrayList_newLead_Id,
                                                        arrayList_newLead_Name ,
                                                        arrayList_newLead_Priority,
                                                        arrayList_newLead_Status);
        searchList.setAdapter(new_Lead_List_Adapter);
        new_Lead_List_Adapter.notifyDataSetChanged();
        cursor.close();
        System.out.printf("Data will Be Display." , new_Lead_List_Adapter);

    }


}

这是我的适配器类

public class New_Lead_List_Adapter extends BaseAdapter 
{
    Context mContext;
    protected New_Lead_List_Adapter(Context mContext,
            ArrayList<String> newLead_ArrayList_ID,
            ArrayList<String> newLead_ArrayList_Name,
            ArrayList<String> newLead_ArrayList_Pririty,
            ArrayList<String> newLead_ArrayList_Status)
    {
        this.mContext = mContext;
        this.newLead_ArrayList_ID = newLead_ArrayList_ID;
        this.newLead_ArrayList_Name = newLead_ArrayList_Name;
        this.newLead_ArrayList_Pririty = newLead_ArrayList_Pririty;
        this.newLead_ArrayList_Status = newLead_ArrayList_Status;
    }

         ArrayList<String> newLead_ArrayList_ID;
     ArrayList<String> newLead_ArrayList_Name;
     ArrayList<String> newLead_ArrayList_Pririty;
     ArrayList<String> newLead_ArrayList_Status;


    protected New_Lead_List_Adapter() {
        super();
        // TODO Auto-generated constructor stub
    }


    //@Override
    public int getCount() {
        // TODO Auto-generated method stub
        return newLead_ArrayList_Name.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View child, ViewGroup parent) {
        // TODO Auto-generated method stub

        Holder mHolder;
        LayoutInflater layoutInflater;

        if(child == null)
        {
            layoutInflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            child = layoutInflater .inflate(R.layout.search_data_item_listview, null);
            mHolder = new Holder();

            mHolder.txt_newLead_ID=(TextView)child.findViewById(R.id.txtId);
            mHolder.txt_newLead_Name=(TextView)child.findViewById(R.id.textView2_Name);
            mHolder.txt_newLead_Priority=(TextView)child.findViewById(R.id.textView7Priority);
            mHolder.txt_newLead_Status=(TextView)child.findViewById(R.id.textView8_Status);

            child.setTag(mHolder);
        }

        else

        {
            mHolder = (Holder) child.getTag();
        }

        mHolder.txt_newLead_ID.setText(newLead_ArrayList_ID.get(position));
        mHolder.txt_newLead_Name.setText(newLead_ArrayList_Name.get(position));
        mHolder.txt_newLead_Priority.setText(newLead_ArrayList_Pririty.get(position));
        mHolder.txt_newLead_Status.setText(newLead_ArrayList_Status.get(position));


        return child;
    }

    public class Holder 
    {

        TextView txt_newLead_ID;
        TextView txt_newLead_Name;
        TextView txt_newLead_Priority;
        TextView txt_newLead_Status;

    }

}

Log Cat Stack Trace信息。

12-14 11:22:30.184: E/AndroidRuntime(7872): FATAL EXCEPTION: main
    12-14 11:22:30.184: E/AndroidRuntime(7872): java.lang.NullPointerException
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at com.lead_management_project.Serach_Data.displayNewLeadData(Serach_Data.java:142)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at com.lead_management_project.Serach_Data$2.onClick(Serach_Data.java:84)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at android.view.View.performClick(View.java:2485)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at android.view.View$PerformClick.run(View.java:9080)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at android.os.Handler.handleCallback(Handler.java:587)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at android.os.Handler.dispatchMessage(Handler.java:92)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at android.os.Looper.loop(Looper.java:123)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at android.app.ActivityThread.main(ActivityThread.java:3683)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at java.lang.reflect.Method.invokeNative(Native Method)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at java.lang.reflect.Method.invoke(Method.java:507)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    12-14 11:22:30.184: E/AndroidRuntime(7872):     at dalvik.system.NativeStart.main(Native Method)

0 个答案:

没有答案