我创建了一个外部sqlite数据库,其中存储了图书信息。其存储在资产文件夹中。我已经创建了一个book对象,但是现在我不确定如何在其中存储数据库中的值。我已经使用列表函数使用sqliteaccesshelper库从数据库中检索值,并在主活动中将其调用。如果有人建议我如何将值存储在我的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());
}
答案 0 :(得分:0)
您可以尝试使用第三方驱动程序,几年前,我通过以下一种方式与MSSQL连接:
http://www.sqlitetutorial.net/sqlite-java/sqlite-jdbc-driver/
https://bitbucket.org/xerial/sqlite-jdbc/src/default/
您可以尝试这些,或搜索其他人。
对于存储在资产中的sqlite db,我没有使用任何这些方法,您可以尝试一下。
希望有帮助。
答案 1 :(得分:-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;
}