我创建了一个外部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());
}
您可以尝试使用第三方驱动程序,多年前我使用其中一个与MSSQL连接:
http://www.sqlitetutorial.net/sqlite-java/sqlite-jdbc-driver/
https://bitbucket.org/xerial/sqlite-jdbc/src/default/
你可以尝试这些,或搜索其他人。
我没有使用任何这些存储在资产中的sqlite数据库,你试着玩。
希望能帮助到你。
我想通了,它完美无缺。 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;
}