java - 将输入字符串与数据库中的字符串进行比较

标签 java android android-sqlite

我正在学习 Android Studio,这周开始学习数据库。我想为这个应用程序提供一些帮助。很简单。用户在第一个 Activity 中输入一个字符串并按下一个按钮。然后这个字符串被发送到第二个 Activity ,在那里它与数据库中的值进行比较并显示相似的值:

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) {

    }

最佳答案

如果您希望检索在开始、中间或结尾包含您的 messageText 的任何行,请尝试使用此查询 -

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

关于java - 将输入字符串与数据库中的字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36730944/

相关文章:

Java 日期比较差一天

java - 有没有办法测试何时从弱集中删除元素?

java - 如何在 jPanel 中像正方形一样移动文本

android - bundle ArrayList <ArrayList<Integer>>

java - 如何在 Android 中使用 SQLite 从微调器中根据选定的月份和年份从列中获取值?

java - 在 Java 中使用流的 byte[] 到 byte[] 的 ArrayList

java - 从扩展 RTP 数据包头解码 unix 时间戳以计算延迟

android - Kotlin正则表达式不适用于我在运行时得到的波兰char (“ł”)

android - 用 Room 实现搜索

android - 删除 ListView 和sqlite的行