如何搜索而不写所有的词我想当用户输入类型如果他写像两个字母来显示建议的结果我的项目是一个应用程序的药房你可以inseart药物然后显示它在另一个活动也可以删除药物从列表和数据库这是我的数据库代码
data class MedicineModel (val id:Int , val name:String , val quantity :Int , val price:Double , val type:String )
class DataBase(context: Context):SQLiteOpenHelper(context , DataBase_Name , null , DataBase_Version) {
var dataBase :SQLiteDatabase
companion object{
var DataBase_Name = "Pharmacy.db"
var DataBase_Version = 1
var Table_Name = "Medicine"
var Col_ID = "id"
var Col_NAME = "name"
var Col_QUANTITY = "quantity"
var Col_PRICE = "price"
var Col_TYPE = "type"
}
init {
dataBase = this.writableDatabase
}
override fun onCreate(db: SQLiteDatabase?) {
db!!.execSQL("Create Table $Table_Name ($Col_ID INTEGER primary key Autoincrement, $Col_NAME Text Not Null ," +
" $Col_QUANTITY Integer Not Null , $Col_PRICE Double Not Null ,$Col_TYPE Text Not Null )")
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db!!.execSQL("Drop Table if exists $Table_Name")
onCreate(db)
}
fun AddMedicine(name: String , quantity: Int , price: Double ,type: String ):Boolean{
var cv = ContentValues()
cv.put(Col_NAME , name)
cv.put(Col_QUANTITY , quantity)
cv.put(Col_PRICE , price)
cv.put(Col_TYPE, type)
return dataBase.insert("$Table_Name" , null , cv) >0
}
fun ShowAllMedicines():ArrayList<MedicineModel>{
var medicines = ArrayList<MedicineModel>()
var c = dataBase.rawQuery("Select * From $Table_Name" , null)
c.moveToFirst()
while (!c.isAfterLast){
var s = MedicineModel(c.getInt(0) , c.getString(1) ,c.getInt(2)
, c.getDouble(3) , c.getString(4))
medicines.add(s)
c.moveToNext()
}
c.close()
return medicines
}
fun SearchMedicines(type: String):ArrayList<MedicineModel>{
dataBase = this.readableDatabase
var medicines = ArrayList<MedicineModel>()
var c = dataBase.rawQuery("Select * From $Table_Name where $Col_TYPE = '$type' ", null)
c.moveToFirst()
while (!c.isAfterLast){
var s = MedicineModel(c.getInt(0) , c.getString(1) ,c.getInt(2)
, c.getDouble(3) , c.getString(4))
medicines.add(s)
c.moveToNext()
}
c.close()
return medicines
}
fun deleteMedicine (id: Int):Boolean{
return dataBase.delete( Table_Name , "$Col_ID = $id" ,null ) >0
}
}
1条答案
按热度按时间5kgi1eie1#
您可以将
LIKE
与%
野生字符沿着使用,例如:因此,如果传递的type值是a,那么将返回sabcdef cdeafg这样的行。
请注意,建议将参数(即使用?作为占位符,并通过rawQuery函数的第二个参数传递值)以防止SQL注入。
例如
||
运算符连接野生字符。