Kullanıcıların not yazabileceği, kaydedebileceği ve silebileceği temel bir SQLite etkinliği oluşturmaya çalışıyorum. İlk çalıştırmada aktiviteyi açabilirim ve bir not yazabilirim ancak add düğmesine basıldıktan sonra uygulama dondu ve sonuç olarak çöktü, takip işlemlerinde faaliyeti başlatmaya çalışırken donuyor. bütün konuları Süspansiyon aldı: 16: 51.171 Birlikte Kontrol 24.190-24.196/com.test.test.app W/teknikte robot Moniter banaSQLite giriş ve olağan çökme üzerinde android uygulama dondurulması
04-09 17 bir akışı veren 6.236ms
hataları. Herhangi bir fikir?
MyDbHandler sınıf
package com.test.test.app;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.Cursor;
import android.content.Context;
import android.content.ContentValues;
public class MyDbHandler extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "Memos.db";
public static final String TABLE_MEMOS = "Memos";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_LYRICS = "lyrics";
public MyDbHandler(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_MEMOS + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_LYRICS + " TEXT" +
");";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" + TABLE_MEMOS);
onCreate(db);
}
//add a new row to the database
public void addLyric(Memos lyrics) {
ContentValues values = new ContentValues();
values.put(COLUMN_LYRICS, lyrics.get_lyrics());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_MEMOS, null, values);
db.close();
}
//delete product from database
public void deleteLyrics (String lyrics){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_MEMOS + " WHERE " + COLUMN_LYRICS + "=\"" + lyrics + "\";");
}
//print out database as string
public String databaseToString(){
String dbString = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_MEMOS + " WHERE 1";
//cursor point to result
Cursor c = db.rawQuery(query, null);
//first row
c.moveToFirst();
while(!c.isAfterLast()){
if(c.getString(c.getColumnIndex("lyrics"))!= null){
dbString += c.getString(c.getColumnIndex("lyrics"));
dbString += "\n";
dbString += "\n";
}
}
db.close();
return dbString;
}
MemoActivity sınıf
package com.test.test.app;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import com.test.test.app.MyDbHandler;
public class MemoActivity extends ActionBarActivity {
EditText uInput;
TextView uText;
MyDbHandler dbHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memo);
uInput = (EditText) findViewById(R.id.uInput);
uText = (TextView) findViewById(R.id.uText);
dbHandler = new MyDbHandler(this, null, null, 1);
printDatabase();
}
public void addButtonClicked(View view){
Memos lyrics = new Memos(uInput.getText().toString());
dbHandler.addLyric(lyrics);
printDatabase();
}
public void deleteButtonClicked(View view){
String inputText = uInput.getText().toString();
dbHandler.deleteLyrics(inputText);
printDatabase();
}
public void printDatabase(){
String dbString = dbHandler.databaseToString();
uText.setText(dbString);
uInput.setText("");
}
}
Genelde veri depolamada ve veritabanlarında daha yüksek yol almak için kendi nedenleriniz var, ancak Android için Realm gibi araçları düşündünüz mü? – Eenvincible
@Eenvincible bunu hiç duymamıştı. – LJAM