Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
Android 收藏夹列表,检查项目是否已记录在SQLite中_Android_Database_Sqlite - Fatal编程技术网

Android 收藏夹列表,检查项目是否已记录在SQLite中

Android 收藏夹列表,检查项目是否已记录在SQLite中,android,database,sqlite,Android,Database,Sqlite,我是android编码新手。。。 我创建了一些活动和Sqlite。。。 我在我的活动中添加了一个按钮以将一些数据存储到数据库中,但每次单击该按钮时,它都会将相同的数据添加到数据库中。。。 如何检查数据库中是否已经存在数据 我创建了一个列表视图来显示一些数据,当我们点击每个项目时,它会引导我们进入一个新的活动,在新的活动中,我创建了一个新的按钮来将数据存储在数据库中,所以我想看看如何发现数据已经存在,这样按钮可以关闭,如果不存在,按钮应该打开 这是我的密码: 数据库: public class P

我是android编码新手。。。 我创建了一些活动和Sqlite。。。 我在我的活动中添加了一个按钮以将一些数据存储到数据库中,但每次单击该按钮时,它都会将相同的数据添加到数据库中。。。 如何检查数据库中是否已经存在数据

我创建了一个列表视图来显示一些数据,当我们点击每个项目时,它会引导我们进入一个新的活动,在新的活动中,我创建了一个新的按钮来将数据存储在数据库中,所以我想看看如何发现数据已经存在,这样按钮可以关闭,如果不存在,按钮应该打开

这是我的密码: 数据库:

public class PhraseDataBaseAdapter {

private Context context;
private SQLiteOpenHelper sqLiteOpenHelper;

public PhraseDataBaseAdapter(Context context){
    this.context = context;
    sqLiteOpenHelper = new SQLiteOpenHelper(context, "database.db", null, 1) {
        @Override
        public void onCreate(SQLiteDatabase db) {
            String sql = "create table tb1_phrases (id integer primary key, eng text, per text)";
            db.execSQL(sql);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        }
    };

}

public long savePhrase(Phrases phrases){
    String eng = phrases.getEng();
    String per = phrases.getPer();
    long id = -1;

    SQLiteDatabase database = null;

    try{
        ContentValues values = new ContentValues();
        values.put("eng", eng);
        values.put("per", per);

        database = sqLiteOpenHelper.getWritableDatabase();
        id = database.insert("tb1_phrases", null, values);
    }catch (Exception ex){
        Log.d("Database", "Exception: " + ex.getMessage());
    }finally {
        if (database!=null && database.isOpen()){
            database.close();
        }
    }
    return id;
}

public Phrases readPhrase(long id){
    Phrases phrases = null;
    String[] columns = new String[]{"id", "eng", "per"};
    String selection = "id=?";
    String[] selectionArgs = new String[]{String.valueOf(id)};
    String groupBy = null;
    String having = null;
    String orderBy = null;
    String limit = null;

    SQLiteDatabase database = null;

    try{
        database = sqLiteOpenHelper.getWritableDatabase();
        Cursor cursor = database.query("tb1_phrases", columns, selection, selectionArgs, groupBy, having, orderBy, limit);
        if (cursor !=null && cursor.moveToFirst()){
            int idIndex = 0;
            int engIndex = 1;
            int perIndex = 2;

            long phraseId = cursor.getLong(idIndex);
            String phraseEng = cursor.getString(engIndex);
            String phrasePer = cursor.getString(perIndex);

            phrases = new Phrases();
            phrases.setId(phraseId);
            phrases.setEng(phraseEng);
            phrases.setPer(phrasePer);
        }
    }catch (Exception ex){
        Log.d("Database", "Exception: " + ex.getMessage());
    }finally {
        if (database!=null && database.isOpen()){
            database.close();
        }
    }
    return phrases;
}

public int updatePhrase(Phrases phrases){
    int noOfDataUpdatedRecords = 0;
    String whereClause = "id=?";
    String[] whereArgs = new String[]{String.valueOf(phrases.getId())};

    SQLiteDatabase database = null;

    try{
        ContentValues values = new ContentValues();
        values.put("eng", phrases.getEng());
        values.put("per", phrases.getPer());

        database = sqLiteOpenHelper.getWritableDatabase();
        noOfDataUpdatedRecords = database.update("tb1_phrases", values, whereClause, whereArgs);
    }catch (Exception ex){
        Log.d("Database", "Exeption: " + ex.getMessage());
    } finally {
        if(database!=null && database.isOpen()){
            database.close();
        }
    }
    return noOfDataUpdatedRecords;
}

public int deletePhrase(long id){
    int noOfDeletedRecords = 0;
    String whereClause = "id=&";
    String[] whereArgs = new String[]{String.valueOf(id)};

    SQLiteDatabase database = null;

    try{
        database = sqLiteOpenHelper.getWritableDatabase();
        noOfDeletedRecords = database.delete("tb1_phrases", whereClause, whereArgs);
    }catch (Exception ex){
        Log.d("Database", "Exception: " + ex.getMessage());
    } finally {
        if(database!=null && database.isOpen()){
            database.close();
        }
    }
    return noOfDeletedRecords;
}

public ArrayList<Phrases> readAllPhrases(){
    ArrayList<Phrases> phrasesArrayList = null;
    String[] columns = new String[]{"id", "eng", "per"};
    String selection = null;
    String[] selectionArgs = null;
    String groupBy = null;
    String having = null;
    String orderBy = null;
    String limit = null;

    SQLiteDatabase database = null;

    try{
        database = sqLiteOpenHelper.getWritableDatabase();
        Cursor cursor = database.query("tb1_phrases", columns, selection, selectionArgs, groupBy, having, orderBy, limit);
        if (cursor !=null && cursor.moveToFirst()){
            phrasesArrayList = new ArrayList<>();

            int idIndex = 0;
            int engIndex = 1;
            int perIndex = 2;

            do {
                long phraseId = cursor.getLong(idIndex);
                String phraseEng = cursor.getString(engIndex);
                String phrasePer = cursor.getString(perIndex);

                Phrases phrases = new Phrases();
                phrases.setId(phraseId);
                phrases.setEng(phraseEng);
                phrases.setPer(phrasePer);

                phrasesArrayList.add(phrases);
            }while (cursor.moveToNext());
        }
    }catch (Exception ex){
        Log.d("Database", "Exception: " + ex.getMessage());
    }finally {
        if (database!=null && database.isOpen()){
            database.close();
        }
    }
    return phrasesArrayList;
}

谢谢…

对于您的要求,我有一个不使用SQLite的很好的解决方案。 您应该使用这个类来存储您的单词,并且它还具有检查这些单词是否已存储的功能

import android.content.Context;
import android.content.SharedPreferences;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class WordListPref {
public static final String PREFS_NAME = "XYZ";
public static final String WORD_LIST = "WordList";


public void storeWords(Context context, List favorites) {
    // used for store arrayList in json format
    SharedPreferences settings;
    SharedPreferences.Editor editor;
    settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    editor = settings.edit();
    Gson gson = new Gson();
    String jsonFavorites = gson.toJson(favorites);
    editor.putString(WORD_LIST, jsonFavorites);
    editor.commit();
}

public ArrayList<String> loadWords(Context context) {

    // used for retrieving arraylist from json formatted string
    SharedPreferences settings;
    List favorites;
    settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    if (settings.contains(WORD_LIST)) {
        String jsonFavorites = settings.getString(WORD_LIST, null);
        Gson gson = new Gson();
        String[] favoriteItems = gson.fromJson(jsonFavorites, String[].class);
        favorites = Arrays.asList(favoriteItems);
        favorites = new ArrayList(favorites);
    } else
        return new ArrayList<>();
    return (ArrayList) favorites;
}

public void addWord(Context context, String beanSampleList) {
    List favorites = loadWords(context);
    if (favorites == null)
        favorites = new ArrayList();
    favorites.add(beanSampleList);
    storeWords(context, favorites);
}

public void removeUsers(Context context, String beanSampleList) {

    ArrayList<String> favorites = loadWords(context);
    if (favorites != null) {
        for (int i = 0; i < favorites.size(); i++) {
            String bean = favorites.get(i);
            if (bean == beanSampleList) {
                favorites.remove(i);
                storeWords(context, favorites);
            }

        }

    }

}

public boolean isWordExist(String bean, Context context) {

    ArrayList<String> data = loadWords(context);
    if (data != null) {

        for (int i = 0; i < data.size(); i++) {
            String beanSampleList = data.get(i);
            if (bean == beanSampleList) {
                return true;
            }
        }
    }
    return false;
}

public void flushWordPref(Context context) {
    SharedPreferences settings;
    SharedPreferences.Editor editor;
    settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    editor = settings.edit();
    editor.clear();
    editor.commit();
}
}
导入android.content.Context;
导入android.content.SharedReferences;
导入com.google.gson.gson;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
公共类WordListPref{
公共静态最终字符串PREFS_NAME=“XYZ”;
公共静态最终字符串WORD_LIST=“WordList”;
公共void storeWords(上下文、列表收藏夹){
//用于存储json格式的arrayList
共享引用设置;
SharedReferences.Editor;
设置=context.getSharedReferences(PREFS\u NAME,context.MODE\u PRIVATE);
editor=settings.edit();
Gson Gson=新的Gson();
字符串jsonFavorites=gson.toJson(收藏夹);
putString(单词列表,jsonFavorites);
commit();
}
公共ArrayList装入词(上下文){
//用于从json格式的字符串检索arraylist
共享引用设置;
列出收藏夹;
设置=context.getSharedReferences(PREFS\u NAME,context.MODE\u PRIVATE);
if(settings.contains(单词列表)){
String jsonFavorites=settings.getString(单词列表,null);
Gson Gson=新的Gson();
String[]favoriteItems=gson.fromJson(jsonFavorites,String[].class);
收藏夹=数组.asList(收藏夹项);
收藏夹=新的阵列列表(收藏夹);
}否则
返回新的ArrayList();
返回(ArrayList)收藏夹;
}
public void addWord(上下文、字符串beansample列表){
列表收藏夹=加载词(上下文);
如果(收藏夹==null)
收藏夹=新的ArrayList();
收藏夹。添加(beanSampleList);
storeWords(上下文、收藏夹);
}
public void removeUsers(上下文上下文、字符串beansample列表){
ArrayList favorites=loadWords(上下文);
如果(收藏夹!=null){
对于(int i=0;i
用于存储单词的使用方法

addWord(“”)

用于检查单词出口

isWordExist()

这个类将解决您的问题,您永远不会使用sqlite处理相同类型的东西。
祝你好运,别忘了投票:)

你已经知道如何从数据库中读取数据了。(或者您只是从其他地方复制并粘贴了此代码?)到底是什么问题?您可以将列声明为表中的唯一属性。如果您的word已保存,则它将无法再次保存。@CL。是的,我知道如何读取数据,但我想检查是否存在某些数据“收藏”按钮将关闭…@divyansingle我希望word只在数据库中保存一次。不是每次我们点击……然后尝试读取您要插入的数据。这是个好主意,但我想使用我的数据库,因为我正在尝试将一些大数据添加到数据库中,谢谢……)
import android.content.Context;
import android.content.SharedPreferences;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class WordListPref {
public static final String PREFS_NAME = "XYZ";
public static final String WORD_LIST = "WordList";


public void storeWords(Context context, List favorites) {
    // used for store arrayList in json format
    SharedPreferences settings;
    SharedPreferences.Editor editor;
    settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    editor = settings.edit();
    Gson gson = new Gson();
    String jsonFavorites = gson.toJson(favorites);
    editor.putString(WORD_LIST, jsonFavorites);
    editor.commit();
}

public ArrayList<String> loadWords(Context context) {

    // used for retrieving arraylist from json formatted string
    SharedPreferences settings;
    List favorites;
    settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    if (settings.contains(WORD_LIST)) {
        String jsonFavorites = settings.getString(WORD_LIST, null);
        Gson gson = new Gson();
        String[] favoriteItems = gson.fromJson(jsonFavorites, String[].class);
        favorites = Arrays.asList(favoriteItems);
        favorites = new ArrayList(favorites);
    } else
        return new ArrayList<>();
    return (ArrayList) favorites;
}

public void addWord(Context context, String beanSampleList) {
    List favorites = loadWords(context);
    if (favorites == null)
        favorites = new ArrayList();
    favorites.add(beanSampleList);
    storeWords(context, favorites);
}

public void removeUsers(Context context, String beanSampleList) {

    ArrayList<String> favorites = loadWords(context);
    if (favorites != null) {
        for (int i = 0; i < favorites.size(); i++) {
            String bean = favorites.get(i);
            if (bean == beanSampleList) {
                favorites.remove(i);
                storeWords(context, favorites);
            }

        }

    }

}

public boolean isWordExist(String bean, Context context) {

    ArrayList<String> data = loadWords(context);
    if (data != null) {

        for (int i = 0; i < data.size(); i++) {
            String beanSampleList = data.get(i);
            if (bean == beanSampleList) {
                return true;
            }
        }
    }
    return false;
}

public void flushWordPref(Context context) {
    SharedPreferences settings;
    SharedPreferences.Editor editor;
    settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    editor = settings.edit();
    editor.clear();
    editor.commit();
}
}