Witam,
Mam problem z bazą SQLite, która łączy się z Androidem. Dostaje taki błąd, nie wiem o co chodzi:
tbl_remdrs (code 1 SQLITE_ERROR): , while compiling: SELECT _id, content, important FROM tbl_remdrs
(Jest to tutorial z książki Android Studio - Wygodne i efektywne tworzenie aplikacji, właściwie kod jest praktycznie przepisany, więc powinien działać)
package pl.brodziak.refy.remainder;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class RemindersDbAdapter {
//nazwy kolumn
public static final String COL_ID="_id";
public static final String COL_CONENT = "content";
public static final String COL_IMPORTANT ="important";
//dotyczące ich indeksy
public static final int INDEX_ID = 0;
public static final int INDEX_CONTENT = INDEX_ID+1;
public static final int INDEX_IMPORTANT = INDEX_CONTENT +1;
//uzywane w dzienniku zdarzen
public static final String TAG = "ReamindersDbAdapter";
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
private static final String DATABASE_NAME = "dba_remdrs";
private static final String TABLE_NAME = "tbl_remdrs";
private static final int DATABASE_VESRION = 1;
private final Context mCtx;
//polecenie służącedo utworzenia bazy danych
private static final String DATABASE_CREATE =
"CREATE TABLE if not exists tbl_remdrs" + TABLE_NAME +
" ( " + COL_ID + " INTEGER PRIMARY KEY, " +
COL_CONENT+" TEXT, " +
COL_IMPORTANT+" INTEGER );";
public RemindersDbAdapter(Context ctx){
this.mCtx = ctx;
}
//otwarcie
public void open()throws SQLException {
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
}
//zamknięcie
public void close(){
if (mDbHelper!=null){
mDbHelper.close();
}
}
//Tworzenie
//id tworzy się automatycznie
public void createReminder(String name, boolean important){
ContentValues values = new ContentValues();
values.put(COL_CONENT, name);
values.put(COL_IMPORTANT, important ? 1 : 0);
mDb.insert(TABLE_NAME, null,values);
}
//przeciążenie pobierające obiekt przypomnienia
public long createReminder(Reminder reminder){
ContentValues values = new ContentValues();
values.put(COL_CONENT, reminder.getmContent());
values.put(COL_IMPORTANT, reminder.getmImpornant());
//wstawianei wiersza
return mDb.insert(TABLE_NAME, null, values);
}
//ODCZYT
public Reminder fetchReminderByID(int id){
Cursor cursor = mDb.query(TABLE_NAME, new String[]{COL_ID, COL_CONENT, COL_IMPORTANT},COL_ID+"+?",
new String[]{String.valueOf(id)},null,null,null,null);
if (cursor!=null)
cursor.moveToFirst();
return new Reminder(
cursor.getInt(INDEX_ID),
cursor.getString(INDEX_CONTENT),
cursor.getInt(INDEX_IMPORTANT)
);
}
public Cursor fetchAllReminders(){
Cursor mCursor = mDb.query(TABLE_NAME,
new String[]{COL_ID, COL_CONENT, COL_IMPORTANT},
null,null,null,null, null);
if (mCursor != null){
mCursor.moveToFirst();
}
return mCursor;
}
//AKTUALIZACJA
public void updateReminder(Reminder reminder){
ContentValues values = new ContentValues();
values.put(COL_CONENT, reminder.getmContent());
values.put(COL_IMPORTANT, reminder.getmImpornant());
mDb.update(TABLE_NAME, values, COL_ID +"?=", new String[]{String.valueOf(reminder.getmId())});
}
//USUNIĘCIE
public void deleteReminderById(int nId){
mDb.delete(TABLE_NAME,COL_ID + "?",new String[]{String.valueOf(nId)});
}
public void deleteAllReminders(){
mDb.delete(TABLE_NAME, null,null);
}
///////////////////////
//klasa wewnętrzna/////
///////////////////////
public static class DatabaseHelper extends SQLiteOpenHelper{
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VESRION);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.w(TAG, DATABASE_CREATE);
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Aktualizacja bazy danyh z wersji"+oldVersion+"do wersji"+newVersion+"co powoduje wyczyszczenie bazy danych");
db.execSQL("DROP TABLE IF EXISTS "+ TABLE_NAME);
onCreate(db);
}
}
}
public class ReminderActivity<onOptionsItemSelected> extends AppCompatActivity {
private ListView mListView;
private RemindersDbAdapter mDbAdapter;
private RemindersSimpleCursorAdapter mCursorAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reminder);
mListView = (ListView) findViewById(R.id.reminders_list_view);
mListView.setDivider(null);
mDbAdapter = new RemindersDbAdapter(this);
mDbAdapter.open();
Cursor cursor = mDbAdapter.fetchAllReminders();
String [] from = new String[]{
RemindersDbAdapter.COL_IMPORTANT
};
int [] to = new int []{
R.id.row_text
};
mCursorAdapter = new RemindersSimpleCursorAdapter(ReminderActivity.this, R.layout.reminder_row,
cursor, from, to,0);
mListView.setAdapter(mCursorAdapter);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mListView = (ListView) findViewById(R.id.reminders_list_view);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
R.layout.reminder_row,
R.id.row_text,
new String [] {"Pierwszy wiersz","Drugi wiersz","Trzeci wiersz","asasas"," Żal","Słó","wszystko","o nic pyttjat","najprostrzych","Lara","Drugi wiersz","Trzeci wiersz","asasas"," Żal","Słó","wszystko","o nic pyttjat","najprostrzych","Lara","Drugi wiersz","Trzeci wiersz","asasas"," Żal","Słó","wszystko","o nic pyttjat","najprostrzych","Lara"}
);
mListView.setAdapter(arrayAdapter);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_reminder, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id =item.getItemId();
if (id == R.id.action_addRemind){
Log.d(getLocalClassName(), "Utworzenie nowego przyponienia");
return true;
}
if (id==R.id.exit){
finish();
}
return super.onOptionsItemSelected(item);
}
}