如何检查数据库与Android中的一个字段 [英] How to check database with one field in Android
问题描述
我想要创建应用程序,在此应用程序中用户可以插入数据。
用户可以插入此数据:名称 - fName 电子邮件 - 地址。
此应用程序脱机,我使用 SQLite数据库
用于本地数据库。
我想在用户插入数据时,首先我检入数据库,如果在名称列中存在此名称或否?!
如果存在此名称转换为名称列,显示 Toast
:此名称存在于名称列中,并且不保存此数据( Name - fName - 电子邮件地址 - 地址)。
但 strong>此名称转换为名称列,显示 Toast
:保存到数据库和保存数据(名称 - fName - 电子邮件 - 地址)。
I want create application, in this application users can insert data.
Users can insert this data : Name - fName - Email - Address .
This application is offline and i use SQLite Database
for local database.
I want when user inserted data, first of all i check in database, if exist this name in names column or no?!
If exist this name into names columns, show Toast
: this name is exist in names columns, and not save this data (Name - fName - Email - Address) into table.
But if not exist this name into names columns, show Toast
: save into database, and save data (Name - fName - Email - Address) into table.
如何在我的 DataBaseHelper 类中编写此查询?
How can i write this query in my DataBaseHelper class?
推荐答案
您的问题,您可以对表模式设置唯一
约束,具体取决于您是要一个字段是唯一的还是字段的组合是唯一的,如下所示。
As much as I understood your question, you can put make a unique
constraint on the table schema depending on whether you want one field to be unique or a combination of field to be unique like below.
在关闭create table语句之前,使用 UNIQUE('Email')
c $ c>)。
对于唯一值的组合, UNIQUE('Name','fName','Email','Address')
For one unique value of Email column put UNIQUE('Email')
before closing create table statement with )
.
For combinations of unique values do UNIQUE('Name', 'fName' , 'Email','Address')
当在此表中插入一些重复的值时,它会引发一个异常
,您可以在其中显示 Toast
消息。
When you insert some repeated value in this table it will throw an Exception
on which you can show Toast
message.
编辑:
b
final String CREATE_SOME_TABLE = "CREATE TABLE " + DBContractor.SOMETABLE.TABLE_NAME + " (" +
DBContractor.SOMETABLE.EMAIL + " TEXT , " +
DBContractor.SOMETABLE.FNAME + " TEXT, " +
DBContractor.SOMETABLE.NAME+" TEXT, "+
DBContractor.SOMETABLE.ADDRESS+" TEXT "+
"UNIQUE ("+DBContractor.SOMETABLE.NAME+") ON CONFLICT IGNORE"+
")";
现在,当您尝试在此插入值
Now when you try to insert values in this like this
ContentValues values = new ContentValues();
values.put("Email","Someemail");
values.put("Name","SomeName");
values.put("FName","Some Fname");
values.put("Address","Some Address");
try {
mywritabledb.insert(DBContractor.SOMETABLE.TABLE_NAME,null,values);
}catch (SQLiteException e){
// show toast here
}
$ b b
编辑2
对于来自 http://stackoverflow.com的不区分大小写的唯一约束/ a / 20914992/3758972
表架构为
final String CREATE_SOME_TABLE = "CREATE TABLE " + DBContractor.SOMETABLE.TABLE_NAME + " (" +
DBContractor.SOMETABLE.EMAIL + " TEXT , " +
DBContractor.SOMETABLE.FNAME + " TEXT, " +
DBContractor.SOMETABLE.NAME+" TEXT, "+
DBContractor.SOMETABLE.ADDRESS+" TEXT "+
"UNIQUE ("+DBContractor.SOMETABLE.NAME COLLATE NOCASE+") ON CONFLICT IGNORE"+
")";
这篇关于如何检查数据库与Android中的一个字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!