Dies ist meine MainActivity.java-Datei. Ich versuche, eine einfache Anwendung zu erstellen, um Studentenname einzugeben, und dann speichert es es in einer Datenbank, die die zwei anderen Klassen DatabaseManager.java und Students.java verwendet. Das Problem ist, dass, wenn ich versuche, die App zu starten und auf die Schaltfläche "Hinzufügen" zu klicken, die App einfriert und der Fehler unten in AppLogCat angezeigt wird.SQLite-Datenbank Grafikfehler
MainActivity.java
package com.example.android.dbms;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText inputText;
TextView outputText;
DatabaseManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputText = (EditText)findViewById(R.id.dataEntryText);
outputText = (TextView)findViewById(R.id.textView);
manager = new DatabaseManager(this,null,null,1);
printDatabase();
}
public void onAddButtonClick(View view){
String studentName = inputText.getText().toString();
Students student = new Students(studentName);
manager.addStudent(student);
printDatabase();
}
public void onDeleteButtonClick(View view){
String studentName = inputText.getText().toString();
manager.deleteStudent(studentName);
printDatabase();
}
public void printDatabase(){
String dbString;
dbString = manager.databaseToString();
outputText.setText(dbString);
inputText.setText("");
}
}
Students.java
package com.example.android.dbms;
public class Students {
private int _id;
private String _studentname;
public Students(){}
public Students(String _studentname) {
this._studentname = _studentname;
}
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String get_studentname() {
return _studentname;
}
public void set_studentname(String _studentname) {
this._studentname = _studentname;
}
}
DatabaseManager.java
package com.example.android.dbms;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseManager extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "students.db";
private static final String TABLE_STUDENTS = "students";
private static final String COLUMN_ID ="_id";
private static final String COLUMN_STUDENTNAME = "_studentname";
public DatabaseManager(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE "+ TABLE_STUDENTS + " ("+
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"+
COLUMN_STUDENTNAME + " TEXT);";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" + TABLE_STUDENTS +";");
onCreate(db);
}
//add a new row to the database
public void addStudent(Students students){
ContentValues values = new ContentValues();
values.put(COLUMN_STUDENTNAME,students.get_studentname());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_STUDENTS,null,values);
db.close();
}
//delete a row from the table
public void deleteStudent(String studentName){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_STUDENTS + " WHERE " + COLUMN_STUDENTNAME + "=\"" + studentName + "\" ;");
}
//print out the database as string
public String databaseToString(){
String dbString = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM "+ TABLE_STUDENTS + " WHERE 1;";
//Cursor point to locate data in table
Cursor c = db.rawQuery(query,null);
c.moveToFirst();
while (!c.isAfterLast()){
if(c.getString(c.getColumnIndex("_studentname"))!=null){
dbString += c.getString(c.getColumnIndex("_studentname"));
dbString += "\n";
}
}
db.close();
return dbString;
}
}
Fehler, der zeigt nach oben:
05-31 22:32:15.734 14795-14795/? I/art: Late-enabling -Xcheck:jni
05-31 22:32:15.765 14795-14801/? I/art: Debugger is no longer active
05-31 22:32:15.786 14795-14795/? W/System: ClassLoader referenced unknown
path: /data/app/com.example.android.dbms-1/lib/arm
05-31 22:32:15.922 14795-14795/? W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
05-31 22:32:16.051 14795-14810/? D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
05-31 22:32:16.114 14795-14810/? I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: EGL 1.4 QUALCOMM build: (Ifd751822f5)
OpenGL ES Shader Compiler Version: XE031.06.00.05
Build Date: 01/26/16 Tue
Local Branch: AU12_SBA
Remote Branch:
Local Patches:
Reconstruct Branch:
05-31 22:32:16.116 14795-14810/? I/OpenGLRenderer: Initialized EGL, version 1.4
05-31 22:32:28.290 14795-14805/com.example.android.dbms W/art: Suspending all threads took: 5.405ms
05-31 22:32:28.312 14795-14805/com.example.android.dbms I/art: Background partial concurrent mark sweep GC freed 96(3KB) AllocSpace objects, 90(8MB) LOS objects, 40% free, 8MB/14MB, paused 5.890ms total 32.806ms
05-31 22:32:32.319 14795-14805/com.example.android.dbms W/art: Suspending all threads took: 5.073ms
05-31 22:32:34.343 14795-14805/com.example.android.dbms I/art: Background sticky concurrent mark sweep GC freed 84(3KB) AllocSpace objects, 81(10MB) LOS objects, 38% free, 8MB/14MB, paused 5.083ms total 18.483ms
05-31 22:32:36.545 14795-14801/com.example.android.dbms W/art: Suspending all threads took: 11.236ms
05-31 22:32:37.036 14795-14801/com.example.android.dbms W/art: Suspending all threads took: 5.119ms
05-31 22:32:41.672 14795-14805/com.example.android.dbms W/art: Suspending all threads took: 7.867ms
das wird dir helfen https://developer.android.com/training/basics/data-storage/databases.html folge dem Beispiel – Pavan
habe nichts gefunden was hier hilfreich ist – Veloxigami