Java 使用Android检查数据库中是否已经存在名称
这是我的DBhelper.java代码。。。帮助我在存储数据时检查数据库Java 使用Android检查数据库中是否已经存在名称,java,android,sqlite,Java,Android,Sqlite,这是我的DBhelper.java代码。。。帮助我在存储数据时检查数据库 package com.example.sebastian.dblist; import java.util.ArrayList; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteOpenH
package com.example.sebastian.dblist;
import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
public class DBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "MyDBName.db";
public static final String CONTACTS_COLUMN_NAME = "name";
public static final String CONTACTS_COLUMN_EMAIL = "email";
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(
"create table contacts " +
"(id integer primary key, name text,email text)"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS contacts");
onCreate(db);
}
public boolean insertContact(String name, String email) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("email", email);
db.insert("contacts", null, contentValues);
return true;
}
public Cursor getData(int id) {
SQLiteDatabase db = this.getReadableDatabase();
return db.rawQuery("select * from contacts where id=" + id + "", null);
}
public boolean updateContact(Integer id, String name, String email) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("email", email);
db.update("contacts", contentValues, "id = ? ", new String[]{Integer.toString(id)});
return true;
}
public Integer deleteContact(Integer id) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete("contacts",
"id = ? ",
new String[]{Integer.toString(id)});
}
public ArrayList<String> getAllCotacts()
{
ArrayList<String> array_list = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from contacts", null );
res.moveToFirst();
while(!res.isAfterLast()){
array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)) +"\n"+res.getString(res.getColumnIndex(CONTACTS_COLUMN_EMAIL)));
res.moveToNext();
}
return array_list;
}
}
package com.example.sebastian.dblist;
导入java.util.ArrayList;
导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteOpenHelper;
导入android.database.sqlite.SQLiteDatabase;
公共类DBHelper扩展了SQLiteOpenHelper{
公共静态最终字符串数据库\u NAME=“MyDBName.db”;
公共静态最终字符串CONTACTS\u COLUMN\u NAME=“NAME”;
public static final String CONTACTS\u COLUMN\u EMAIL=“EMAIL”;
公共DBHelper(上下文){
super(上下文,数据库名称,null,1);
}
@凌驾
public void onCreate(SQLiteDatabase db){
//TODO自动生成的方法存根
db.execSQL(
“创建表联系人”+
(id整数主键、名称文本、电子邮件文本)
);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
//TODO自动生成的方法存根
db.execSQL(“如果存在联系人,则删除表”);
onCreate(db);
}
公共布尔值insertContact(字符串名称、字符串电子邮件){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues ContentValues=新ContentValues();
contentValues.put(“name”,name);
contentValues.put(“电子邮件”,email);
db.insert(“contacts”,null,contentValues);
返回true;
}
公共游标getData(int-id){
SQLiteDatabase db=this.getReadableDatabase();
返回db.rawQuery(“从联系人中选择*,其中id=“+id+”,null);
}
public boolean updateContact(整数id、字符串名称、字符串电子邮件){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues ContentValues=新ContentValues();
contentValues.put(“name”,name);
contentValues.put(“电子邮件”,email);
update(“contacts”,contentValues,“id=?”,新字符串[]{Integer.toString(id)});
返回true;
}
公共整数删除联系人(整数id){
SQLiteDatabase db=this.getWritableDatabase();
返回db.delete(“联系人”,
“id=?”,
新字符串[]{Integer.toString(id)});
}
公共阵列列表getAllCotacts()
{
ArrayList数组_list=新建ArrayList();
SQLiteDatabase db=this.getReadableDatabase();
Cursor res=db.rawQuery(“从联系人中选择*”,null);
res.moveToFirst();
而(!res.isAfterLast()){
array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME))+“\n”+res.getString(res.getColumnIndex(CONTACTS_COLUMN_EMAIL));
res.moveToNext();
}
返回数组_列表;
}
}
在从文本字段插入值时,如何检查数据库中是否已存在名称?只需先运行一条语句检查名称是否存在,如:
SELECT * FROM CONTACTS WHERE NAME = ?
如果结果为空,则可以添加联系人并返回true。
如果结果>0,则返回false
编辑:
您可以扩展insertContact
-方法,如:
public boolean insertContact(String name, String email) {
SQLiteDatabase db = this.getWritableDatabase();
// Check if name exists
Cursor res = db.rawQuery( "SELECT * FROM CONTACTS WHERE NAME = ? ", new String[]{ name } );
// If name doesn't exist -> add
if (res.getCount() == 0) {
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("email", email);
db.insert("contacts", null, contentValues);
return true;
}
// else -> return false and print a Toast e.g.
return false;
}
只需先运行一条语句,检查名称是否存在,如:
SELECT * FROM CONTACTS WHERE NAME = ?
如果结果为空,则可以添加联系人并返回true。
如果结果>0,则返回false
编辑:
您可以扩展insertContact
-方法,如:
public boolean insertContact(String name, String email) {
SQLiteDatabase db = this.getWritableDatabase();
// Check if name exists
Cursor res = db.rawQuery( "SELECT * FROM CONTACTS WHERE NAME = ? ", new String[]{ name } );
// If name doesn't exist -> add
if (res.getCount() == 0) {
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("email", email);
db.insert("contacts", null, contentValues);
return true;
}
// else -> return false and print a Toast e.g.
return false;
}
您可以尝试以下代码
SQLiteDatabase db = this.getReadableDatabase();
Cursor cur= db.rawQuery( "select name from contacts where NAME = ?", new String[]{ "abc" } );
或
这将在联系人中搜索“abc”
if(cur.getCount() > 0){
//name is present
}
您可以尝试以下代码
SQLiteDatabase db = this.getReadableDatabase();
Cursor cur= db.rawQuery( "select name from contacts where NAME = ?", new String[]{ "abc" } );
或
这将在联系人中搜索“abc”
if(cur.getCount() > 0){
//name is present
}
一个建议,你应该多加一点解释和代码,会给你的答案加上更多的选票,并且很快被你接受。什么是错误的条件。。?如何显示。?我们需要查看代码中称为“insertContact”-方法的部分建议,您应该添加更多的解释和代码,将更多的投票添加到您的答案中,并快速接受您的解释。?错误条件是什么。。?如何显示。?我们需要查看代码中称为“insertContact”-methodNo success哪个有答案?No success哪个有答案?如果数据不存在,则插入数据,如果数据存在,则忽略插入,这就是您想要实现的吗?您应该尝试插入,并处理违反密钥完整性约束所导致的失败。分两步进行操作既浪费资源又容易出错。如果数据不存在,则插入数据,如果数据存在,则忽略插入,这就是您要实现的目标吗?您应该尝试插入,并处理违反密钥完整性约束而导致的失败。分两步进行是浪费和容易出错的。