在片段中访问sqlite

时间:2014-11-06 16:10:14

标签: java android database sqlite fragment

我创建了一个搜索框,我希望它是从dbase搜索。但每当我点击搜索时,都没有任何反应。

CommandList.java

public class CommandList extends Fragment {

public CommandList() {}

    protected EditText searchText;
    protected SQLiteDatabase db;
    protected Cursor cursor;
    protected ListAdapter adapter;
    protected ListView employeeList;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    db = new DatabaseHelper(super.getActivity()).getWritableDatabase();
    searchText = (EditText) super.getActivity().findViewById (R.id.searchText);
    employeeList = (ListView) super.getActivity().findViewById (R.id.list);
}

@SuppressWarnings("deprecation")
public void search(View view) {
    // || is the concatenation operation in SQLite

            cursor = db.rawQuery("SELECT _id, firstName, lastName, title FROM employee WHERE firstName || ' ' || lastName LIKE ?",
                                            new String[]{"%" + searchText.getText().toString() + "%"});
            adapter = new SimpleCursorAdapter(
                    super.getActivity(),
                            R.layout.command_list_item,
                            cursor,
                            new String[] {"firstName", "lastName", "title"},
                            new int[] {R.id.firstName, R.id.lastName, R.id.title});
            employeeList.setAdapter(adapter);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    // Layout
    View rootView = inflater.inflate(R.layout.fragment_search, container, false);

    return rootView;
}
}

这是我的DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "employee_directory";

    public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
            /*
             * Create the employee table and populate it with sample data.
             * In step 6, we will move these hardcoded statements to an XML document.
             */
            String sql = "CREATE TABLE IF NOT EXISTS employee (" +
                                            "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                                            "firstName TEXT, " +
                                            "lastName TEXT, " +
                                            "title TEXT, " +
                                            "officePhone TEXT, " +
                                            "cellPhone TEXT, " +
                                            "email TEXT, " +
                                            "managerId INTEGER)";
            db.execSQL(sql);

            ContentValues values = new ContentValues();

            values.put("firstName", "John");
            values.put("lastName", "Smith");
            values.put("title", "CEO");
            values.put("officePhone", "617-219-2001");
            values.put("cellPhone", "617-456-7890");
            values.put("email", "jsmith@email.com");
            db.insert("employee", "lastName", values);

            values.put("firstName", "Robert");
            values.put("lastName", "Jackson")   ;
            values.put("title", "VP Engineering");
            values.put("officePhone", "617-219-3333");
            values.put("cellPhone", "781-444-2222");
            values.put("email", "rjackson@email.com");
            values.put("managerId", "1");
            db.insert("employee", "lastName", values);

            values.put("firstName", "Marie");
            values.put("lastName", "Potter");
            values.put("title", "VP Sales");
            values.put("officePhone", "617-219-2002");
            values.put("cellPhone", "987-654-3210");
            values.put("email", "mpotter@email.com");
            values.put("managerId", "1");
            db.insert("employee", "lastName", values);

            values.put("firstName", "Lisa");
            values.put("lastName", "Jordan");
            values.put("title", "VP Marketing");
            values.put("officePhone", "617-219-2003");
            values.put("cellPhone", "987-654-7777");
            values.put("email", "ljordan@email.com");
            values.put("managerId", "2");
            db.insert("employee", "lastName", values);

            values.put("firstName", "Christophe");
            values.put("lastName", "Coenraets");
            values.put("title", "Evangelist");
            values.put("officePhone", "617-219-0000");
            values.put("cellPhone", "617-666-7777");
            values.put("email", "ccoenrae@adobe.com");
            values.put("managerId", "2");
            db.insert("employee", "lastName", values);

            values.put("firstName", "Paula");
            values.put("lastName", "Brown");
            values.put("title", "Director Engineering");
            values.put("officePhone", "617-612-0987");
            values.put("cellPhone", "617-123-9876");
            values.put("email", "pbrown@email.com");
            values.put("managerId", "2");
            db.insert("employee", "lastName", values);

            values.put("firstName", "Mark");
            values.put("lastName", "Taylor");
            values.put("title", "Lead Architect");
            values.put("officePhone", "617-444-1122");
            values.put("cellPhone", "617-555-3344");
            values.put("email", "mtaylor@email.com");
            values.put("managerId", "2");
            db.insert("employee", "lastName", values);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS employees");
            onCreate(db);
    }

}

0 个答案:

没有答案