public List<NotepadBean> query(){ List<NotepadBean> list=new ArrayList<NotepadBean>(); Cursor cursor=sqLiteDatabase.query(DBUtils.DATABASE_TABLE,null,null,null, null,null,DBUtils.NOTEPAD_ID+" desc"); if(cursor!=null) { while (cursor.moveToNext()) { NotepadBean noteInfo = new NotepadBean(); String id = String.valueOf(cursor.getInt (cursor.getColumnIndex(DBUtils.NOTEPAD_ID))); String content = cursor.getString(cursor.getColumnIndex (DBUtils.NOTEPAD_CONTENT)); String time = cursor.getString(cursor.getColumnIndex (DBUtils.NOTEPAD_TIME)); noteInfo.setId(id); noteInfo.setNotepadContent(content); noteInfo.setNotepadTime(time); list.add(noteInfo); } cursor.close(); } return list; } 以上代码出现这些问题Value must be ≥ 0怎么修改代码
时间: 2024-03-07 22:50:14 浏览: 70
可以在调用 `cursor.getInt()` 之前先调用 `cursor.getColumnIndex()` 确保该列存在,例如:
```
while (cursor.moveToNext()) {
NotepadBean noteInfo = new NotepadBean();
int idIndex = cursor.getColumnIndex(DBUtils.NOTEPAD_ID);
if (idIndex >= 0) {
String id = String.valueOf(cursor.getInt(idIndex));
noteInfo.setId(id);
}
// 同理,需要检查其他列是否存在
// ...
list.add(noteInfo);
}
```
此外,还需要检查数据库表中相关列的值是否符合预期,例如该列是否设置为非负数等。
相关问题
public ArrayList<Book> BookList(DBHelper dbHelper){ SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("book",new String[]{"id","bookname","author","category"}, null,null,null,null,"id desc"); ArrayList<Book> list = new ArrayList<>(); if (cursor != null && cursor.getCount() > 0){ while (cursor.moveToNext()){ String id = cursor.getString(cursor.getColumnIndex("id")); String bookname = cursor.getString(cursor.getColumnIndex("bookname")); String author = cursor.getString(cursor.getColumnIndex("author")); String category = cursor.getString(cursor.getColumnIndex("category")); Book book = new Book(id,bookname,author,category); list.add(book); } } db.close(); return list;解释每一行代码
这段代码是一个方法,用于查询数据库中的书籍信息并返回一个包含Book对象的ArrayList。
1. `public ArrayList<Book> BookList(DBHelper dbHelper){`:定义了一个公共方法,返回类型为ArrayList<Book>,方法名为BookList, 参数为一个DBHelper对象。
2. `SQLiteDatabase db = dbHelper.getWritableDatabase();`:获取可写的数据库对象。
3. `Cursor cursor = db.query("book",new String[]{"id","bookname","author","category"},null,null,null,null,"id desc");`:执行查询,返回一个Cursor对象。查询的表名为“book”,查询的字段为"id"、"bookname"、"author"和"category",查询条件为null,分组条件为null,排序方式为"id desc"。
4. `ArrayList<Book> list = new ArrayList<>();`:创建一个空的ArrayList对象,用于存储查询结果。
5. `if (cursor != null && cursor.getCount() > 0){`:判断Cursor对象是否为空且是否有数据。
6. `while (cursor.moveToNext()){`:循环遍历Cursor对象中的数据。
7. `String id = cursor.getString(cursor.getColumnIndex("id"));`:通过Cursor对象获取"id"字段的值。
8. `String bookname = cursor.getString(cursor.getColumnIndex("bookname"));`:通过Cursor对象获取"bookname"字段的值。
9. `String author = cursor.getString(cursor.getColumnIndex("author"));`:通过Cursor对象获取"author"字段的值。
10. `String category = cursor.getString(cursor.getColumnIndex("category"));`:通过Cursor对象获取"category"字段的值。
11. `Book book = new Book(id,bookname,author,category);`:根据获取到的书籍信息创建一个Book对象。
12. `list.add(book);`:将Book对象添加到ArrayList中。
13. `db.close();`:关闭数据库连接。
14. `return list;`:返回包含Book对象的ArrayList。
public ArrayList<User> UserList(DBHelper dbHelper){ SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("user",new String[]{"id","username","role"}, null,null,null,null,"id desc"); ArrayList<User> list = new ArrayList<>(); if (cursor != null && cursor.getCount() > 0){ while (cursor.moveToNext()){ String id = cursor.getString(cursor.getColumnIndex("id")); String username = cursor.getString(cursor.getColumnIndex("username")); String role = cursor.getString(cursor.getColumnIndex("role")); User user = new User(id,username,role); list.add(user); } } db.close(); return list; } //用户管理详情页 public ArrayList<User> UserDetails(DBHelper dbHelper,String uid){ SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("user",new String[]{"id","username","passlock","passkey","role"}, "id = ?",new String[]{uid + ""},null,null,null); ArrayList<User> list = new ArrayList<>(); if (cursor != null && cursor.getCount() > 0){ while (cursor.moveToNext()){ String id = cursor.getString(cursor.getColumnIndex("id")); String username = cursor.getString(cursor.getColumnIndex("username")); String passlock = cursor.getString(cursor.getColumnIndex("passlock")); String passkey = cursor.getString(cursor.getColumnIndex("passkey")); String role = cursor.getString(cursor.getColumnIndex("role")); User user = new User(id,username,passlock,passkey,role); list.add(user); } } db.close(); return list; } //修改用户密码 public boolean UpdatePassword(DBHelper dbHelper,String new_password,String uid){ SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("password",new_password); int flag = db.update("user",values,"id=?",new String[]{uid}); boolean result; if (flag == -1){ result = false;解释每一行代码
这段代码是一个 Android 应用程序中与用户管理相关的数据库操作代码。主要包括三个函数:
1. UserList: 从数据库中查询所有用户信息,返回一个 User 对象列表。
2. UserDetails: 根据用户id查询某个用户的详细信息,返回一个 User 对象列表。
3. UpdatePassword: 修改用户密码,返回一个布尔值表示操作是否成功。
具体解释如下:
1. UserList:
- dbHelper: DBHelper 对象,用于获取 SQLiteDatabase 对象。
- db: 获取可写的 SQLiteDatabase 对象。
- cursor: 从 user 表中查询所有记录,返回一个 Cursor 对象。
- list: 存储 User 对象的 ArrayList。
- while 循环: 遍历 Cursor 对象,将每一条记录转为 User 对象并添加到 list 中。
- db.close(): 关闭 SQLiteDatabase 对象。
- return list: 返回存储 User 对象的 ArrayList。
2. UserDetails:
- dbHelper: DBHelper 对象,用于获取 SQLiteDatabase 对象。
- db: 获取可写的 SQLiteDatabase 对象。
- cursor: 根据传入的 uid 查询 user 表中对应的记录,返回一个 Cursor 对象。
- list: 存储 User 对象的 ArrayList。
- while 循环: 遍历 Cursor 对象,将每一条记录转为 User 对象并添加到 list 中。
- db.close(): 关闭 SQLiteDatabase 对象。
- return list: 返回存储 User 对象的 ArrayList。
3. UpdatePassword:
- dbHelper: DBHelper 对象,用于获取 SQLiteDatabase 对象。
- db: 获取可写的 SQLiteDatabase 对象。
- values: ContentValues 对象,用于存储修改后的密码。
- flag: 根据传入的 uid 修改 user 表中对应的记录,并返回修改的记录数。
- result: 根据 flag 的值判断操作是否成功,返回一个布尔值。
- return result: 返回一个布尔值表示操作是否成功。
阅读全文
相关推荐

















