2016-04-19 115 views
1

我正在学习Android Studio,并在本周开始使用数据库。我想对这个应用程序有一点帮助。很简单。用户输入一个字符串并在第一个活动中按下一个按钮。此字符串,然后被发送到它与数据库中的值进行比较,并显示类似的那些第二个活动:将输入字符串与数据库中的字符串进行比较

public class DrinkCategoryActivity extends ListActivity { 
public static final String EXTRA_MESSAGE = "message"; 
private SQLiteDatabase db; 
private Cursor cursor; 
private Cursor newcursor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Intent intent = getIntent(); 
    String messageText = intent.getStringExtra(EXTRA_MESSAGE); 
    //setContentView(R.layout.activity_drink_category); 
    ListView listDrinks = getListView(); 
    try{ 
     SQLiteOpenHelper starbucksDatabaseHelper = new StarbucksDatabaseHelper(this); 
     db = starbucksDatabaseHelper.getReadableDatabase(); 
     /* 
      SELECT _id, NAME FROM DRINKS; 
     */ 
     cursor = db.query("DRINK", 
        new String[]{"_id", "NAME"}, 
        null, null, null, null, null); 
     newcursor = cursor.equals(messageText); 
     CursorAdapter listAdapter = new SimpleCursorAdapter(this, 
       android.R.layout.simple_list_item_1, 
       cursor, 
       new String[]{"NAME"}, 
       new int[]{android.R.id.text1}, 
       0); 

     listDrinks.setAdapter(listAdapter); 

    }catch (SQLiteException ex){ 
     Toast toast = Toast.makeText(this, "Database unavailable", 
       Toast.LENGTH_LONG); 
     toast.show(); 
    } 

我一直在寻找所有网站上,但我不能找到一个很好的解释。 数据库

这是数据库中是饮料

public class StarbucksDatabaseHelper extends SQLiteOpenHelper{ 
    add a varaible for the db name 
    private static final String DB_NAME = "starbucks"; 

    version of the database 
    private static final int DB_VERSION = 1; 

    StarbucksDatabaseHelper (Context context){ 
     super(context, DB_NAME, null, DB_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("CREATE TABLE DRINK (" 
       + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " 
       + "NAME TEXT, " 
       + "DESCRIPTION TEXT, " 
       + "IMAGE_RESOURCE_ID INTEGER);"); 
    insert data 
     insertDrink(db, "Soy Latte", "Esspresso and steamed soy milk", R.drawable.latte); 
     insertDrink(db, "Mocaccino", "Esspresso, hot milk, steamed milk foam, and cocoa", R.drawable.cappuccino); 
     insertDrink(db, "American", "Drip coffee", R.drawable.filter); 
    } 

    private static void insertDrink (SQLiteDatabase db, 
            String name, 
            String description, 
            int resourceId){ 
     ContentValues drinkValues = new ContentValues(); 
     drinkValues.put("NAME", name); 
     drinkValues.put("DESCRIPTION", description); 
     drinkValues.put("IMAGE_RESOURCE_ID", resourceId); 


     db.insert("DRINK", null, drinkValues); 
    } 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    } 
+0

为什么添加newcursor = cursor.equals(messageText);?另外,你的问题的答案取决于你想如何匹配字符串与你的数据库 - 完全相同或包含该字符串,从它开始,以它结束,.....? –

+0

我忘了删除它。我会喜欢它是否可以通过世界检查世界,因为数据库中的字符串可以有更多的两个世界,而且我希望它显示所有类似于用户输入的字符串的字符串 – djant

+0

您可以通过给出解释一个例子 ? –

回答

1

试试这个查询,而不是如果你想要的是包含在开始你的messageText任何行,中间或结尾应被检索 -

cursor = db.query("DRINK", new String[]{"_id", "NAME"}, "NAME like %?%", new String[]{messageText}, null, null, null); 
+0

不,它显示没有datafound祝酒 – djant

+0

然后我猜没有与你的价值匹配数据库记录。 –

+0

使用sqlite manager,一个Firefox插件检查你的数据库。 –

相关问题