gpt4 book ai didi

java - 从数据库崩溃中检索数据

转载 作者:行者123 更新时间:2023-12-02 04:23:34 26 4
gpt4 key购买 nike

我目前正在学习使用 SQLite 存储一些数据。当前的项目计划是一个笔记应用程序。启动应用程序时出现许多错误。一是无法插入数据,二是表注释不存在。如果我留下代码来在登录中显示数据,应用程序就会崩溃。

我尝试删除检索数据并显示数据的功能,并且应用程序停止崩溃,但是,我仍然收到有关无法将数据插入表中的错误

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

DatabaseHandler db = new DatabaseHandler(this);
db.AddNote(new Note("12313", "jkfsabk"));

List<Note> notes = db.getAllNotes();

for (Note c: notes){
String log = "NAME: " + c.getNoteName() + " DESCRIPTION: " + c.getNoteDescription() + "\n";
text = text + log;
}
System.out.println(text);
public class DatabaseHandler extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "notesDB";
private static final String TABLE_NAME = "notes";

private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_DESCRIPTION = "description";


public DatabaseHandler(Context context) {
super(context, Util.DATABASE_NAME, null, Util.DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACT_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + KEY_ID + " INTEGER PRIMARY KEY ," + KEY_NAME + " TEXT," + KEY_DESCRIPTION + " TEXT)";
db.execSQL(CREATE_CONTACT_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);

onCreate(db);
}

public void AddNote(Note note){
SQLiteDatabase db = this.getWritableDatabase();

ContentValues value = new ContentValues();
value.put(KEY_NAME, note.getNoteName());
value.put(KEY_DESCRIPTION, note.getNoteDescription());

db.insert(TABLE_NAME, null, value);
db.close();
}

Note getNote(int id) {
SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE_NAME, new String[]{KEY_ID, KEY_NAME, KEY_DESCRIPTION}, KEY_ID
+ "=?", new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null){
cursor.moveToFirst();
}

Note note = new Note(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2));

return note;
}

public List<Note> getAllNotes(){
List<Note> noteList = new ArrayList<>();

String selectQuery = "SELECT * FROM " + TABLE_NAME;

SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);

if(cursor.moveToFirst()){
do{
Note note = new Note();
note.setID(Integer.parseInt(cursor.getString(0)));
note.setNoteName(cursor.getString(1));
note.setNoteDescription(cursor.getString(2));

noteList.add(note);
} while(cursor.moveToNext());

} cursor.close();

return noteList;
}

public int updateNotes(Note note){
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_NAME, note.getNoteName());
values.put(KEY_DESCRIPTION, note.getNoteDescription());

return db.update(TABLE_NAME, values, KEY_ID + "=?", new String[]{String.valueOf(note.getID())});
}

public void deleteNote(Note note){
SQLiteDatabase db = this.getWritableDatabase();

db.delete(TABLE_NAME, KEY_ID + "=?", new String[]{String.valueOf(note.getID())});
db.close();
}

public int getNoteCount(Note note){
String countQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();


return cursor.getCount();
}
}
public class Note {
private int noteID;
private String noteName;
private String noteDescription;
public Note() {}
public Note(Integer id, String notename, String notedescription) {
this.noteID = id;
this.noteName = notename;
this.noteDescription = notedescription;
}

public Note(String notename, String notedescription){
this.noteName = notename;
this.noteDescription = notedescription;
}
public void setID(int id) {
this.noteID = id;
}
public int getID() {
return this.noteID;
}
public void setNoteName(String notename) {
this.noteName = notename;
}
public String getNoteName() {
return this.noteName;
}
public void setNoteDescription(String notedescription) {
this.noteDescription = notedescription;
}
public String getNoteDescription() {
return this.noteDescription;
}


}

我期望输出

NAME: 12313 DESCRIPTION: jkfsabk,

但我得到了错误:

2019-06-16 18:03:57.155 24382-24382/com.example.myapplication E/libc: Access denied finding property "vendor.perf.iop_v3.enable"
2019-06-16 18:03:57.155 24382-24382/com.example.myapplication E/libc: Access denied finding property "vendor.perf.iop_v3.enable.debug"
2019-06-16 18:03:57.165 24382-24382/com.example.myapplication E/libc: Access denied finding property "vendor.iop.enable_uxe"
2019-06-16 18:03:57.172 24382-24676/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.profiler"
2019-06-16 18:03:57.172 24382-24676/com.example.myapplication E/libc: Access denied finding property "vendor.debug.prerotation.disable"
2019-06-16 18:03:57.386 24382-24382/com.example.myapplication E/libc: Access denied finding property "vendor.perf.gestureflingboost.enable"
2019-06-16 18:03:57.390 24382-24382/com.example.myapplication E/libc: Access denied finding property "vendor.perf.iop_v3.enable.debug"
2019-06-16 18:03:57.440 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.prerotation.disable"
2019-06-16 18:03:57.441 24382-24439/com.example.myapplication E/libc: Access denied finding property "ro.vendor.graphics.memory"
2019-06-16 18:03:57.441 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.prerotation.disable"
2019-06-16 18:03:57.441 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.prerotation.disable"
2019-06-16 18:03:57.442 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.prerotation.disable"
2019-06-16 18:03:57.449 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.changepixelformat"
2019-06-16 18:03:57.482 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:03:57.497 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:03:57.518 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:03:57.527 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:03:57.544 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:03:58.042 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:03:58.542 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:03:59.042 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:03:59.561 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:04:00.078 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:04:00.573 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:04:01.097 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:04:01.593 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"
2019-06-16 18:04:02.082 24382-24439/com.example.myapplication E/libc: Access denied finding property "vendor.debug.egl.swapinterval"

最佳答案

我对你的代码做了一些更正,我尝试了这个代码,然后我得到了你想要的结果。尝试一下。

1-DatabaseHandler 类

public class DatabaseHandler extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "notesDB";
private static final String TABLE_NAME = "notes";

private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_DESCRIPTION = "description";


public DatabaseHandler(Context context) {
super(context, DATABASE_NAME , null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACT_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + KEY_ID + " INTEGER PRIMARY KEY ," + KEY_NAME + " TEXT," + KEY_DESCRIPTION + " TEXT)";
db.execSQL(CREATE_CONTACT_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);

onCreate(db);
}

public void AddNote(Note note){
SQLiteDatabase db = this.getWritableDatabase();

ContentValues value = new ContentValues();
value.put(KEY_NAME, note.getNoteName());
value.put(KEY_DESCRIPTION, note.getNoteDescription());

db.insert(TABLE_NAME, null, value);
db.close();
}

Note getNote(int id) {
SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE_NAME, new String[]{KEY_ID, KEY_NAME, KEY_DESCRIPTION}, KEY_ID
+ "=?", new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null){
cursor.moveToFirst();
}

Note note = new Note(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2));

return note;
}

public ArrayList<Note> getAllNotes(){
ArrayList<Note> noteList = new ArrayList<>();

String selectQuery = "SELECT * FROM " + TABLE_NAME;

SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);

if(cursor.moveToFirst()){
do{
Note note = new Note();
note.setID(Integer.parseInt(cursor.getString(0)));
note.setNoteName(cursor.getString(1));
note.setNoteDescription(cursor.getString(2));

noteList.add(note);
} while(cursor.moveToNext());

} cursor.close();

return noteList;
}

public int updateNotes(Note note){
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_NAME, note.getNoteName());
values.put(KEY_DESCRIPTION, note.getNoteDescription());

return db.update(TABLE_NAME, values, KEY_ID + "=?", new String[]{String.valueOf(note.getID())});
}

public void deleteNote(Note note){
SQLiteDatabase db = this.getWritableDatabase();

db.delete(TABLE_NAME, KEY_ID + "=?", new String[]{String.valueOf(note.getID())});
db.close();
}

public int getNoteCount(Note note){
String countQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();


return cursor.getCount();
}
}


2-MainActivity类



setContentView(R.layout.activity_main);
DatabaseHandler db = new DatabaseHandler(this);
db.AddNote(new Note("12313", "jkfsabk"));

ArrayList<Note> notes = db.getAllNotes();
String log = null;
for (Note c: notes){
log = "NAME: " + c.getNoteName() + " DESCRIPTION: " + c.getNoteDescription() + "\n";
// text = text + log;
}
Toast.makeText(this, log+"" , Toast.LENGTH_SHORT).show();

关于java - 从数据库崩溃中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56620092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com