Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Android检查数据库中是否已经存在名称_Java_Android_Sqlite - Fatal编程技术网

Java 使用Android检查数据库中是否已经存在名称

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

这是我的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.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哪个有答案?如果数据不存在,则插入数据,如果数据存在,则忽略插入,这就是您想要实现的吗?您应该尝试插入,并处理违反密钥完整性约束所导致的失败。分两步进行操作既浪费资源又容易出错。如果数据不存在,则插入数据,如果数据存在,则忽略插入,这就是您要实现的目标吗?您应该尝试插入,并处理违反密钥完整性约束而导致的失败。分两步进行是浪费和容易出错的。