public List<set> setQuery(String bookId){ List<set>list=new ArrayList<>(); Cursor cursor=DB.query("my_set",null,"book_id=?",new String[]{String.valueOf(bookId)},null,null,null,null); while (cursor.moveToNext()){ set set=new set(); set.setId(String.valueOf(cursor.getInt(0))); set.setBookId(cursor.getString(1)); set.setTitle(cursor.getString(2)); set.setContent(cursor.getString(3)); list.add(set); } cursor.close(); return list; }报错java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mywriteproject/com.example.mywriteproject.setActivity}: android.database.sqlite.SQLiteException: no such table: my_set (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM my_set WHERE book_id=?
时间: 2023-06-19 20:10:41 浏览: 205
这个错误提示是说数据库中没有名为“my_set”的表,导致查询语句执行失败。你可以检查一下以下几点:
1. 确认数据库中是否存在名为“my_set”的表,可以在数据库管理工具中查看。
2. 确认在建立数据库连接时是否正确指定了数据库名称和版本号,以及是否正确创建了“my_set”表。
3. 如果你在应用程序中使用了多个数据库,需要确认使用的是正确的数据库连接。
如果以上几点都没有问题,可以尝试重新安装应用程序或者清空应用程序数据,再次运行看看是否能够解决问题。
相关问题
public ArrayList<Borrow> AllBorrow(DBHelper dbHelper){ SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.rawQuery("select * from borrow order by boid desc",null); ArrayList<Borrow> list = new ArrayList<>(); if (cursor != null && cursor.getCount() > 0){ while (cursor.moveToNext()){ String boid = cursor.getString(cursor.getColumnIndex("boid")); String bookid = cursor.getString(cursor.getColumnIndex("bookid")); String botime = cursor.getString(cursor.getColumnIndex("botime")); String userid = cursor.getString(cursor.getColumnIndex("userid")); int bostate = cursor.getInt(cursor.getColumnIndex("bostate")); String backtime = cursor.getString(cursor.getColumnIndex("backtime")); String reviewer = cursor.getString(cursor.getColumnIndex("reviewer")); Borrow borrow = new Borrow(boid,botime,bookid,userid,bostate,backtime,reviewer); list.add(borrow); } } db.close(); return list; } //还书 public void ReturnBook(DBHelper dbHelper,String boid,String backtime,String reviewer){ SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("bostate",1); values.put("backtime",backtime); values.put("reviewer",reviewer); db.update("borrow",values,"boid=?",new String[]{boid}); db.close(); } }解释每一行代码
这段代码是一个 Android 应用程序中的数据库访问类 DBHelper 中的两个方法。第一个方法 AllBorrow 用于查询 borrow 数据表中的所有记录,并返回一个 ArrayList<Borrow> 对象。该方法接收一个 DBHelper 对象作为参数,以便获取数据库实例。代码的第一行通过 dbHelper.getWritableDatabase() 获取可写的数据库实例。接下来的一行通过执行 SQL 语句 "select * from borrow order by boid desc" 查询 borrow 表中的所有记录,并将结果保存在一个 Cursor 对象中。然后,代码通过遍历 Cursor ,提取每一行记录中的字段值,将其封装为一个 Borrow 对象,并将 Borrow 对象添加到 ArrayList<Borrow> 对象中。最后一行关闭数据库连接并返回 ArrayList<Borrow> 对象。
第二个方法 ReturnBook 用于更新 borrow 表中的一条记录,以标记该书已经归还。该方法接收一个 DBHelper 对象,一个 boid 字符串、一个 backtime 字符串和一个 reviewer 字符串作为参数。代码的第一行通过 dbHelper.getWritableDatabase() 获取可写的数据库实例。接下来的一行创建一个 ContentValues 对象,将需要更新的字段和值存入其中。然后,代码通过执行 db.update() 方法,更新 borrow 表中 boid 字段等于传入的 boid 字符串的记录。最后一行关闭数据库连接。
public class BorrowTableHelper { //新增借阅信息 public boolean AddBorrow(DBHelper dbHelper, Borrow borrow){ SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("botime",borrow.getBotime()); values.put("bookid",borrow.getBookid()); values.put("userid",borrow.getUserid()); values.put("bostate",borrow.getBostate()); long id = db.insert("borrow",null,values); db.close(); boolean flag; if (id != -1){ flag = true; }else { flag = false; } return flag; } //查询借阅记录 public ArrayList<Borrow> ShowBorrow(DBHelper dbHelper,String uid){ SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.rawQuery("select * from borrow where userid = ? order by boid desc",new String[]{uid}); ArrayList<Borrow> list = new ArrayList<>(); if (cursor != null && cursor.getCount() > 0){ while (cursor.moveToNext()){ String bookid = cursor.getString(cursor.getColumnIndex("bookid")); String botime = cursor.getString(cursor.getColumnIndex("botime")); int bostate = cursor.getInt(cursor.getColumnIndex("bostate")); String backtime = cursor.getString(cursor.getColumnIndex("backtime")); String reviewer = cursor.getString(cursor.getColumnIndex("reviewer")); Borrow borrow = new Borrow(botime,bookid,bostate,backtime,reviewer); list.add(borrow); } } db.close(); return list; }解释每一行代码
这是一个名为 BorrowTableHelper 的 Java 类,其中包含了两个方法:AddBorrow 和 ShowBorrow,用于向 SQLite 数据库中增加借阅信息和查询借阅记录。
AddBorrow 方法的作用是向数据库中插入一条借阅信息,其参数为 DBHelper 对象和 Borrow 对象。该方法首先获取可写的 SQLiteDatabase 对象,然后将 Borrow 对象中的属性值存储到 ContentValues 对象中,再通过调用 insert 方法将数据插入到 borrow 表中。最后,关闭数据库连接,根据插入结果返回一个 boolean 类型的值。
ShowBorrow 方法的作用是查询指定用户的借阅记录,其参数为 DBHelper 对象和用户 ID。该方法首先获取可写的 SQLiteDatabase 对象,然后执行一条 SQL 查询语句,筛选出符合条件的数据,按照 boid 属性进行降序排列。接着,将查询结果逐行解析,将每一行数据封装成 Borrow 对象,并添加到 ArrayList 对象中。最后,关闭数据库连接并返回 Borrow 对象的 ArrayList。
阅读全文