我正在尝试创建一个简单的收藏夹应用程序,您可以在其中保留您的收藏页面(例如,来自网络).
假设我的数据库中包含以下数据
Title | URL | TAG |
-------------------------------
Hey Ho.com Site
Jo Jo.com Image
Jo Mo.com Image
Run Code Online (Sandbox Code Playgroud)
现在我想确保用户不会将同一页面添加两次,因此我将检查该值是否已存在.但我需要用户不会将站点添加到已添加的表中.
所以我想说我会尝试添加:
Title | URL | TAG |
-------------------------------
Jo Mo.com Image
Run Code Online (Sandbox Code Playgroud)
这将返回true("检查行是否存在",因为已经存在相同的行).
但如果我想尝试添加:
Title | URL | TAG |
-------------------------------
Jo Go.com Image
Run Code Online (Sandbox Code Playgroud)
它会返回false(虽然标题已存在),因为没有相同的行.
这是我将数据添加到数据库的代码:
public long createNote(String title, String url, String rn) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_URL, url);
initialValues.put(KEY_RN, rn);
return mDb.insert(DATABASE_TABLE, null, initialValues);
Run Code Online (Sandbox Code Playgroud)
如何检查数据库中是否已存在行?
小智 7
您可以使用光标检查:
public boolean checkEvent(String title, String URL, String tag)
{
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLES,
new String[] { KEY_TITLE,KEY_URL,KEY_TAG },
KEY_TITLE + " = ? and "+ KEY_URL + " = ? and " + KEY_TAG + " = ?" ,
new String[] {title,url,tag},
null, null, null, null);
if(cursor.moveToFirst())
return true; //row exists
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
编辑:代码现在复制并粘贴就绪
在数据库级别有一种非常优雅(imho)的方法.在创建数据库时将其添加到create table sql:
UNIQUE(TITLE, URL) ON CONFLICT REPLACE
Run Code Online (Sandbox Code Playgroud)
然后你可以插入你想要的所有而无需检查,如果行已经存在,它将被添加或更新.