我是android新手,我需要帮助:我有一个工作正常的数据库。问题是我必须在此数据库中保存相同的值。我想检查此数据库中是否已存在该名称。如果是这样,它应该显示错误:
"名称已存在"。
感谢。
//dbhelper class
public class FoodDbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "pkfood_calories.DB";
private static final int DATABASE_VERSION = 1;
private static final String CREATE_QUERY =
"CREATE TABLE "+ Food.NewDishInfo.TABLE_NAME+"("
+ Food.NewDishInfo.DISH_NAME+" TEXT NOT NULL,"
+ Food.NewDishInfo.DISH_QUANTITY+" TEXT NOT NULL,"
+ Food.NewDishInfo.DISH_CALORIE+" INTEGER,"
+ Food.NewDishInfo.DISH_FAT+" TEXT NOT NULL,"
+ Food.NewDishInfo.DISH_PROTEIN+" TEXT NOT NULL,"
+ Food.NewDishInfo.DISH_SUGAR+" TEXT NOT NULL,"
+ Food.NewDishInfo.DISH_VITAMINS+" TEXT NOT NULL);";
public FoodDbHelper(Context context)
{
super(context,DATABASE_NAME,null,DATABASE_VERSION);
Log.e("DATABASE OPERATION","Database created / opened...");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_QUERY);
Log.e("DATABASE OPERATION","Table created...");
}
public void addInformations(String name ,String quantity, Integer calorie, String fat ,
String protein,String sugar,String vitamins, SQLiteDatabase db){
ContentValues contentValues = new ContentValues();
contentValues.put(Food.NewDishInfo.DISH_NAME,name);
contentValues.put(Food.NewDishInfo.DISH_QUANTITY,quantity);
contentValues.put(Food.NewDishInfo.DISH_CALORIE,calorie);
contentValues.put(Food.NewDishInfo.DISH_FAT,fat);
contentValues.put(Food.NewDishInfo.DISH_PROTEIN,protein);
contentValues.put(Food.NewDishInfo.DISH_SUGAR,sugar);
contentValues.put(Food.NewDishInfo.DISH_VITAMINS,vitamins);
db.insert(Food.NewDishInfo.TABLE_NAME, null, contentValues);
Log.e("DATABASE OPERATION","one row inserted...");
}
//activity code
name = (EditText) findViewById(R.id.dish_name);
quantity = (EditText) findViewById(R.id.dish_quantity);
calorie = (EditText) findViewById(R.id.dish_calorie);
fat = (EditText) findViewById(R.id.dish_fat);
protein = (EditText) findViewById(R.id.dish_protein);
sugar = (EditText) findViewById(R.id.dish_sugar);
vitamins = (EditText) findViewById(R.id.dish_vitamins);
}
public void addDish(View view) {
String dish_name = name.getText().toString();
String dish_quantity = quantity.getText().toString();
// dish_calorie = Integer.parseInt(calorie.getText().toString());
String dish_fat = fat.getText().toString();
String dish_protein = protein.getText().toString();
String dish_sugar = sugar.getText().toString();
String dish_vitamins = vitamins.getText().toString();
if (name.getText().toString().matches("")) {
name.setError("please enter dish name.");
return;
}
if(quantity.getText().toString().matches("")) {
quantity.setError("please enter dish quantity.");
return;
}
if (calorie.getText().toString().matches("")) {
calorie.setError("please enter dish calories.");
return;
}
if (fat.getText().toString().matches("")) {
fat.setError("please enter dish fats.");
return;
}
if (protein.getText().toString().matches("")) {
protein.setError("please enter dish proteins.");
return;
}
if (sugar.getText().toString().matches("")) {
sugar.setError("please enter dish sugar.");
return;
}
if (vitamins.getText().toString().matches("")) {
vitamins.setError("please enter dish vitamins.");
return;
}
else {
foodDbHelper = new FoodDbHelper(context);
sqLiteDatabase = foodDbHelper.getWritableDatabase();
foodDbHelper.addInformations(dish_name, dish_quantity, Integer.parseInt(calorie.getText().toString()), dish_fat,
dish_protein, dish_sugar, dish_vitamins, sqLiteDatabase);
Toast.makeText(getBaseContext(), "Data Saved", Toast.LENGTH_SHORT).show();
foodDbHelper.close();
Intent intent = new Intent(this, AddNewDish.class);
startActivity(intent);
}
}
答案 0 :(得分:0)
让你的名字独一无二:
private static final String CREATE_QUERY =
"CREATE TABLE "+ Food.NewDishInfo.TABLE_NAME+"("
+ Food.NewDishInfo.DISH_NAME+" UNIQUE TEXT NOT NULL," //here
+ Food.NewDishInfo.DISH_QUANTITY+" TEXT NOT NULL,"
+ Food.NewDishInfo.DISH_CALORIE+" INTEGER,"
+ Food.NewDishInfo.DISH_FAT+" TEXT NOT NULL,"
+ Food.NewDishInfo.DISH_PROTEIN+" TEXT NOT NULL,"
+ Food.NewDishInfo.DISH_SUGAR+" TEXT NOT NULL,"
+ Food.NewDishInfo.DISH_VITAMINS+" TEXT NOT NULL);";
当你尝试添加已有的名字时,你会得到例外。
此外,在更改数据库后,您需要清除应用程序中的数据,让app再次创建数据库。
答案 1 :(得分:0)
您有两个选择
希望这会对你有所帮助。