如何将数据存储到外部sqlite数据库并在RecyclerView中显示

问题描述 投票:-1回答:2

我创建了一个外部sqlite数据库,其中存储有书籍信息。它存储在资产文件夹中。我已经创建了一个book对象,但现在我不确定如何在数据库中存储值。我使用了一个list函数,使用sqliteaccesshelper库从数据库中检索值,并在main活动中调用它。如果有人建议我如何将值存储在我的book对象中,那将会非常有用。 This是我遵循的教程。

我的书对象是book(),有四个参数。

public book(String title, String author, byte[] image, String issue) {
        Title = title;
        Author = author;
        Image = image;
        Issue = issue;

    }

这是数据库功能。请注意,它不正确,我不知道如何使它存储我的Book对象中的值。

public List<String> getdetails() {
        List<String> lstBook = new ArrayList<>();
        Cursor cursor = database.rawQuery("SELECT Book_name, Author, Book_cover, Issue_status FROM books", null);
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
//This line is showing an error.
            lstBook.add(cursor.getString(cursor.getColumnIndex("Book_name")), cursor.getString(cursor.getColumnIndex("Author")), cursor.getBlob(cursor.getColumnIndex("Book_cover")), cursor.getString(cursor.getColumnIndex("Issue_Status")));

            book Book = new book(); //this is the book object
            Book.setTitle(cursor.getString(0));
            Book.setAuthor(cursor.getString(1));
            Book.setImage(cursor.getBlob(2));
            Book.setIssue(cursor.getString(3));
            cursor.moveToNext();
        }
        cursor.close();
        return lstBook; 
    }

这是我的MainActivity

// Open the database
        databaseAccess.open();

        List<String> lstBook = databaseAccess.getdetails();



        RecyclerView myrv = (RecyclerView) findViewById(R.id.recyclerview_id);
        RecyclerViewAdapter myAdapter = new RecyclerViewAdapter(this, lstBook);
        myrv.setLayoutManager(new GridLayoutManager(this, 2));
        myrv.setAdapter(myAdapter;

        // Close the database
        databaseAccess.close();
    }

这是我的RecyclerView适配器。(我不确定设置的图像部分)

@Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        holder.bookname.setText(mData.get(position).getTitle());
        holder.bookauthor.setText(mData.get(position).getAuthor());
        byte[] data = mData.get(position).getImage(); Bitmap image = toBitmap(data);
        holder.bookimg.setImageBitmap(image);
        holder.issuestatus.setText(mData.get(position).getIssue());

    }
android android-recyclerview android-sqlite sqliteopenhelper
2个回答
0
投票

您可以尝试使用第三方驱动程序,多年前我使用其中一个与MSSQL连接:

http://www.sqlitetutorial.net/sqlite-java/sqlite-jdbc-driver/

https://bitbucket.org/xerial/sqlite-jdbc/src/default/

你可以尝试这些,或搜索其他人。

我没有使用任何这些存储在资产中的sqlite数据库,你试着玩。

希望能帮助到你。


-2
投票

我想通了,它完美无缺。 This视频帮助了我。我只是按照他的方式将书籍添加到列表中。我在DatabaseAccess类中创建了一个函数,只是在Required Activity中访问它。这是功能。

public ArrayList<book> getdetails(String query, String category) {
        ArrayList<book> list = new ArrayList<book>();
        String[] where= new String[]{category};
        Cursor cursor = database.rawQuery(query, where);
        if (cursor!=null) {
            if (cursor.moveToFirst()) {
                do {
                    book Book = new book();
                    Book.setTitle(cursor.getString(1));
                    Book.setAuthor(cursor.getString(6));
                    Book.setImage(cursor.getBlob(2));
                    Book.setPublisher(cursor.getString(3));
                    Book.setPublish_date(cursor.getString(4));
                    Book.setISBN(cursor.getString(5));
                    Book.setDescription(cursor.getString(9));
                    Book.setIssue(cursor.getString(10));
                    list.add(Book);
                }while (cursor.moveToNext());
            }
        }cursor.close();
        return list;
    }

© www.soinside.com 2019 - 2024. All rights reserved.