Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法在请求的上下文中使用函数匹配_Android_Sql_Search - Fatal编程技术网

Android 无法在请求的上下文中使用函数匹配

Android 无法在请求的上下文中使用函数匹配,android,sql,search,Android,Sql,Search,在方法getContactMatches()中,sql语句出错 字符串选择=列名称+“匹配?”;我不太熟悉sql,所以我不知道该怎么办 数据库类和getContactMatches()方法: 12-27 22:00:25.622:E/SQLiteLog(642):(1)语句在7处中止:[从contactsTable中选择*WHERE(名称匹配?)]无法在请求的上下文中使用函数匹配12-27 22:00:25.622:E/SQLiteQuery(642):异常:无法在请求的上下文中使用函数匹配(代

在方法getContactMatches()中,sql语句出错 字符串选择=列名称+“匹配?”;我不太熟悉sql,所以我不知道该怎么办

数据库类和getContactMatches()方法:


12-27 22:00:25.622:E/SQLiteLog(642):(1)语句在7处中止:[从contactsTable中选择*WHERE(名称匹配?)]无法在请求的上下文中使用函数匹配12-27 22:00:25.622:E/SQLiteQuery(642):异常:无法在请求的上下文中使用函数匹配(代码1);查询:从contactsTable中选择*(姓名匹配?)哦,我的错。我想我的身份证号码每次问问题都会重置。我会确保下次添加。这种类型的查询过去是有效的,但看起来如果匹配发生在一个连接中,那么它只能发生在一个连接中
public class DatabaseTable {
private static final String TAG = "ContactsDatabase";

//The columns we'll include in the contacts table
public static final String COL_ID = "_id";
public static final String COL_NAME = "NAME";
public static final String COL_EMAIL = "EMAIL";

private static final String DATABASE_NAME = "CONTACT";
private static final String DATABASE_TABLE = "contactsTable";
private static final int DATABASE_VERSION = 2;
private Context ourContext;
private DbHelper DBHelper;
private SQLiteDatabase db;
private static final String DATABASE_CREATE = 
        "CREATE TABLE " + DATABASE_TABLE + " (" +
         COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
         COL_NAME + " TEXT NOT NULL, " + 
         COL_EMAIL + " TEXT NOT NULL);";

    private static class DbHelper extends SQLiteOpenHelper {

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

        public void onCreate(SQLiteDatabase db) {
            try {
                db.execSQL(DATABASE_CREATE);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

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

        public DatabaseTable(Context context) {
            ourContext = context;
        }

        public DatabaseTable open() throws SQLException {
            DBHelper = new DbHelper(ourContext);
            db = DBHelper.getWritableDatabase();
            return this;
        }

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

        public long insertContact(String name, String email) {
            ContentValues initialValues = new ContentValues();
            initialValues.put(COL_NAME, name);
            initialValues.put(COL_EMAIL, email);
            return db.insert(DATABASE_TABLE, null, initialValues);
        }

        public String getData()
        {
            String[] columns = new String[]{COL_ID, COL_NAME, COL_EMAIL};
            Cursor c = db.query(DATABASE_TABLE, columns, null, null, null, null, null);
            String data = "";
            int id = c.getColumnIndex(COL_ID);
            int colname = c.getColumnIndex(COL_NAME);
            int colemail = c.getColumnIndex(COL_EMAIL);
            for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
                data = data + c.getString(id) + " " + c.getString(colname) + " " + c.getString(colemail) + "\n";
            }
            return data;
        }

        public Cursor getContactMatches(String query, String[] columns) {
            String selection = COL_NAME + " MATCH ?";
            String[] selectionArgs = new String[] {query+"*"};

            return query(selection, selectionArgs, columns);
        }

        private Cursor query(String selection, String[] selectionArgs, String[] columns) {
            DBHelper = new DbHelper(ourContext);
            SQLiteQueryBuilder build = new SQLiteQueryBuilder();
            build.setTables(DATABASE_TABLE);

            Cursor cursor = build.query(DBHelper.getReadableDatabase(),
                    columns, selection, selectionArgs, null, null, null);

            if (cursor == null) {
                return null;
            }

            return cursor;
        }

        public int cursorLength(Cursor cursor) {
            int x = 0;
            for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
                x = x + 1;
            return x;
        }