Cześć. Tworzę prosty program do dodawania/usuwania rekordów w bazie. Jest napisany kod, który powinien działać, lecz po dodaniu jakiejś wartości wyskakuje error że kolumny name po prostu nie ma. Przeglądałem kod i nie umiem znaleźć błędu.
Klasa MainActivity
package com.example.rukat.bazadanych;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.view.View;
import android.database.Cursor;
import android.util.Log;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public Button btnInsert;
public Button btnDelete;
public Button btnSelect;
public Button btnSearch;
public EditText editName;
public EditText editAge;
public EditText editDelete;
public EditText editSearch;
ZarzadzajDanymi dm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dm = new ZarzadzajDanymi(this);
btnInsert = (Button) findViewById(R.id.insertButton);
btnDelete = (Button) findViewById(R.id.deleteButton);
btnSelect = (Button) findViewById(R.id.selectAllButton);
btnSearch = (Button) findViewById(R.id.searchButton);
editName = (EditText) findViewById(R.id.imieTextBox);
editAge = (EditText) findViewById(R.id.wiekTextBox);
editDelete = (EditText) findViewById(R.id.deleteTextBox);
editSearch = (EditText) findViewById(R.id.searchTextBox);
btnSelect.setOnClickListener(this);
btnInsert.setOnClickListener(this);
btnDelete.setOnClickListener(this);
btnSearch.setOnClickListener(this);
}
public void showData(Cursor c){
while (c.moveToNext()){
Log.i(c.getString(1), c.getString(2));
}
}
@Override
public void onClick(View v)
{
switch (v.getId()){
case R.id.insertButton:
dm.insert(editName.getText().toString(),
editAge.getText().toString());
break;
case R.id.selectAllButton:
showData(dm.selectAll());
break;
case R.id.searchButton:
showData(dm.searchName(editSearch.getText().toString()));
break;
case R.id.deleteButton:
dm.delete(editDelete.getText().toString());
break;
}
}
}
Klasa Zarzadzaj Danymi
package com.example.rukat.bazadanych;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.Context;
import android.util.Log;
import android.database.Cursor;
/**
* Created by rukat on 04.01.2018.
*/
public class ZarzadzajDanymi {
private SQLiteDatabase db;
public static final String TABLE_ROW_ID = "_id";
public static final String TABLE_ROW_NAME = "name";
public static final String TABLE_ROW_AGE = "age";
private static final String DB_NAME = "address_book_db";
private static final int DB_VERSION = 1;
private static final String TABLE_N_AND_A = "names_and_addresses";
private class CustomSQLiteOpenHelper extends SQLiteOpenHelper
{
public CustomSQLiteOpenHelper(Context context)
{
super(context,DB_NAME,null,DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
String newTableQueryString = "create table "
+ TABLE_N_AND_A + " ("
+ TABLE_ROW_ID
+ " integer primary key autoincrement not null,"
+ TABLE_ROW_AGE
+ " text not null);";
db.execSQL(newTableQueryString);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
}
}
public ZarzadzajDanymi(Context context)
{
CustomSQLiteOpenHelper helper =
new CustomSQLiteOpenHelper(context);
db = helper.getWritableDatabase();
}
public void insert(String name, String age)
{
String query = "INSERT INTO " + TABLE_N_AND_A + " (" +
TABLE_ROW_NAME + ", " + TABLE_ROW_AGE + ") " +
"VALUES (" +
"'" + name + "'" + ", " + "'" + age + "'" + ");";
Log.i("insert() = ", query);
db.execSQL(query);
}
public void delete(String name)
{
String query = "DELETE FROM " + TABLE_N_AND_A +
" WHERE " + TABLE_ROW_NAME +
" = '" + name + "';";
Log.i("delete() = ", query);
db.execSQL(query);
}
public Cursor selectAll() {
Cursor c = db.rawQuery("SELECT *" + " from " +
TABLE_N_AND_A,null);
return c;
}
public Cursor searchName(String name) {
String query = "SELECT " +
TABLE_ROW_ID + ", " +
TABLE_ROW_NAME +
", " + TABLE_ROW_AGE +
" from " +
TABLE_N_AND_A + " WHERE " +
TABLE_ROW_NAME + " = '" + name + "';";
Log.i("searchName() = ", query);
Cursor c = db.rawQuery(query,null);
return c;
}
}