android sqlite查询搜索错误

android sqlite查询搜索错误,android,android-intent,android-listview,android-fragments,android-sqlite,Android,Android Intent,Android Listview,Android Fragments,Android Sqlite,在过去的几个小时里,我一直在关注这个问题(很遗憾) 我正在用SQLite构建一个应用程序,该应用程序可以执行所有灵活的SQL命令。我目前一直在研究如何从ID以外的列中搜索查询 SQLiteDb: public class SqliteDbTab extends SQLiteOpenHelper { public static String DATABASENAME = "androidadvancesqlite"; public static String TABTABLE = "TABT

在过去的几个小时里,我一直在关注这个问题(很遗憾)

我正在用SQLite构建一个应用程序,该应用程序可以执行所有灵活的SQL命令。我目前一直在研究如何从ID以外的列中搜索查询

SQLiteDb:

public class SqliteDbTab extends SQLiteOpenHelper 
  {
public static String DATABASENAME = "androidadvancesqlite";
public static String TABTABLE = "TABTABLE";

public static String ID = "ID";
public static String NAME = "name";
public static String PHONE = "PhOnE";
public static String MAIL = "mail";
public static String ADDRESS = "address";
public static String IMAGE = "image";

private ArrayList<Helperdb> cartList = new ArrayList<Helperdb>();
Context c;

public SqliteDbTab(Context context)
{
    super(context, DATABASENAME, null, 33);
    c = context;
}

@Override
public void onCreate(SQLiteDatabase db) 
{
    // TODO Auto-generated method stub

    db.execSQL("CREATE TABLE if not exists TABTABLE(ID INTEGER PRIMARY KEY AUTOINCREMENT,"
            + NAME+ " text, " 
            + IMAGE + " BLOB , " 
            + PHONE + " text , "
            + MAIL + " text , "
            + ADDRESS + " TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) 
{
    // TODO Auto-generated method stub
    db.execSQL("DROP TABLE IF EXISTS" + TABTABLE);
    onCreate(db);
}

public void addContact(Helperdb productitem) 
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put("NAME", productitem.name);
    contentValues.put("PHONE", productitem.phone);
    contentValues.put("MAIL", productitem.mail);
    contentValues.put("ADDRESS", productitem.address);
    contentValues.put("IMAGE", productitem.image);
    db.insert(TABTABLE, null, contentValues);
    db.close();
}

// update
public void updateContact(Helperdb productList)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put("NAME", productList.name);
    contentValues.put("PHONE", productList.phone);
    contentValues.put("MAIL", productList.mail);
    contentValues.put("ADDRESS", productList.address);
    contentValues.put("IMAGE", productList.image);
    db.update(TABTABLE, contentValues, "ID="+ productList.id, null);
    db.close(); 
}

public void emptyProduct() 
{
    try {
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL(TABTABLE);
        db.close();
        } catch (Exception e) 
        {
          e.printStackTrace();
        }
}

public void removeProduct(String id,String name, String phone, String mail,String address,byte[] blob)
{
    try {
        String[] args = { id };
        getWritableDatabase().delete(TABTABLE, "ID=?", args);
    } catch (Exception e) 
    {
        e.printStackTrace();
    }
}

public ArrayList<Helperdb> getProudcts() 
{
    cartList.clear();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("select * from TABTABLE", null);
    if (cursor.getCount() != 0) 
    {
        if (cursor.moveToFirst()) 
        {
            do 
            {
                Helperdb item = new Helperdb();
                item.id = cursor.getString(cursor.getColumnIndex("ID"));
                item.name = cursor.getString(cursor.getColumnIndex("name"));                    
                item.phone = cursor.getString(cursor.getColumnIndex("PhOnE"));
                item.mail = cursor.getString(cursor.getColumnIndex("mail"));                    
                item.address = cursor.getString(cursor.getColumnIndex("address"));                  
                item.image = cursor.getBlob(cursor.getColumnIndex("image"));

                cartList.add(item);
            }
            while (cursor.moveToNext());
        }
    }
    cursor.close();
    db.close();
    return cartList;

}

public ArrayList<Helperdb> getProudcts(String record) 
{
    cartList.clear();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor=db.query(true,TABTABLE,new String[]{"ID","name","PhOnE","mail","address","image"},"name"+"=?",new String[]{record},null,null,null,null);
    if (cursor.getCount() != 0)
    {
        if (cursor.moveToFirst())
        {
            do {
                Helperdb item = new Helperdb();
                item.id = cursor.getString(cursor.getColumnIndex("ID"));
                item.name = cursor.getString(cursor.getColumnIndex("name"));
                item.phone = cursor.getString(cursor.getColumnIndex("PhOnE"));
                item.mail = cursor.getString(cursor.getColumnIndex("mail"));                    
                item.address = cursor.getString(cursor.getColumnIndex("address"));                  
                item.image = cursor.getBlob(cursor.getColumnIndex("image"));
                cartList.add(item);
            } while (cursor.moveToNext());
        }
    }
    cursor.close();
    db.close();
    return cartList;
}   
 }
请帮助我:我正在做搜索检索全名..没有在我输入的第一个字母

!![搜索界面]

我想你应该试试“name”+“='”+record+“%” 您可以尝试这样的查询

String SEARCH_QUERY = "SELECT * FROM TABTABLE WHERE name like '"+record+"%'";

Cursor cursor = db.rawQuery(SEARCH_QUERY, null);
cursor.moveToFirst();
if (cursor.getCount() > 0)
{
  do {
                Helperdb item = new Helperdb();
                item.id = cursor.getString(cursor.getColumnIndex("ID"));
                item.name = cursor.getString(cursor.getColumnIndex("name"));
                item.phone = cursor.getString(cursor.getColumnIndex("PhOnE"));
                item.mail = cursor.getString(cursor.getColumnIndex("mail"));                    
                item.address = cursor.getString(cursor.getColumnIndex("address"));                  
                item.image = cursor.getBlob(cursor.getColumnIndex("image"));
                cartList.add(item);
     } while (cursor.moveToNext());
}
cursor.close();

到底是什么问题?你有错误吗??如果是,请发布logcat。当我输入全名时进行搜索时没有错误,然后进行搜索。它不使用第一个字母。请您举例说明,因为它在我这边工作。如果我在字符串中传递“a”,那么它将显示以“a”开头的所有单词,@Vaibhav Agarwal…k.我可以发送我的完整代码吗…给我你的邮箱地址@Vaibhav Agarwal谢谢..我知道了//
 12-13 10:47:50.269: I/---onTextChanged ----(2307): ---------onTextChanged ----
 12-13 10:47:50.489: I/---onTextChanged ----(2307): ---------onTextChanged ----
 12-13 10:47:50.729: I/---onTextChanged ----(2307): ---------onTextChanged ----
   12-13 10:47:51.569: I/---onTextChanged ----(2307): ---------onTextChanged ----
  12-13 10:47:51.769: I/---onTextChanged ----(2307): ---------onTextChanged ----
  12-13 10:47:51.909: I/---onTextChanged ----(2307): ---------onTextChanged ----
    12-13 10:47:52.649: I/---onTextChanged ----(2307): ---------onTextChanged ----
  12-13 10:47:53.749: I/---onTextChanged ----(2307): ---------onTextChanged ----
    12-13 10:47:53.808: I/---onTextChanged ----(2307): ---------onTextChanged ----
  12-13 10:47:55.478: I/---onTextChanged ----(2307): ---------onTextChanged ----
    12-13 10:47:55.598: I/System.out(2307): tidno>>>>>5
String SEARCH_QUERY = "SELECT * FROM TABTABLE WHERE name like '"+record+"%'";

Cursor cursor = db.rawQuery(SEARCH_QUERY, null);
cursor.moveToFirst();
if (cursor.getCount() > 0)
{
  do {
                Helperdb item = new Helperdb();
                item.id = cursor.getString(cursor.getColumnIndex("ID"));
                item.name = cursor.getString(cursor.getColumnIndex("name"));
                item.phone = cursor.getString(cursor.getColumnIndex("PhOnE"));
                item.mail = cursor.getString(cursor.getColumnIndex("mail"));                    
                item.address = cursor.getString(cursor.getColumnIndex("address"));                  
                item.image = cursor.getBlob(cursor.getColumnIndex("image"));
                cartList.add(item);
     } while (cursor.moveToNext());
}
cursor.close();