whereArgs SQLite数据库删除

8
3个回答

14

3
将 "=?" 放在第二个参数(whereClause)的末尾,如下所示:
delete(CONTENT_URI, TEXT + "=?", new String [] { text } );

number of ? 是指参数的数量。


2
占位符不起作用(有缺陷)- 因此您需要构建whereClause(选择条件),并发送空参数(selectionArgs)。

e.g. To load a dynamic list from using user search text:

    mCustomerMenuList = (ListView)findViewById(R.id.customer_menu_list);
    mSearchText = (EditText)findViewById(R.id.autoCompleteTextView1);
    mSearchText.addTextChangedListener(new TextWatcher() {          

        public void afterTextChanged(Editable t) {
               //Reload the query using the search text
               ManageMyCustomerMenuList();         
               mCustomerMenuList.setAdapter(mAdapter);          
        }
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // Auto-generated method stub

        }
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            //  Auto-generated method stub

        }
        });

and in your ManageMyCustomerMenuList() query code place something like:

String s = mSearchText.getText().toString().toLowerCase();

String whereClause = Browser.BookmarkColumns.TITLE+" LIKE ?";
String whereArgs [] = new String[] {"%" +s+"%"};

mCustomerCursor = managedQuery(android.provider.Browser.BOOKMARKS_URI, 
    new String[] {
        Browser.BookmarkColumns._ID,
        Browser.BookmarkColumns.TITLE, 
        Browser.BookmarkColumns.URL
    }, whereClause, whereArgs, mSqlLimit
);

mAdapter = new SimpleCursorAdapter(this, R.layout.row_layout_test, 
    mCustomerCursor, new String[] {
        Browser.BookmarkColumns.TITLE,
        Browser.BookmarkColumns.URL
    }, new int[] { 
        R.id.test_layout_view1, 
        R.id.test_layout_view2 
    }
);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接