Ошибка при попытке получить данные из БД
При попытке обратиться к бд и получить от неё данные получаю следующую ошибку:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pizzaometelly, PID: 8207
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.view.View$DeclaredOnClickListener.onClick(View.java:5689)
at android.view.View.performClick(View.java:6897)
at android.view.View$PerformClick.run(View.java:26104)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.view.View$DeclaredOnClickListener.onClick(View.java:5684)
at android.view.View.performClick(View.java:6897)
at android.view.View$PerformClick.run(View.java:26104)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: android.database.sqlite.SQLiteException: near "SELECT": syntax error (code 1): , while compiling: SELECT * FROM SELECT * FROM pizzaOrders
#################################################################
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(near "SELECT": syntax error (code 1): , while compiling: SELECT * FROM SELECT * FROM pizzaOrders)
#################################################################
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1096)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:661)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1746)
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1593)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1464)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1632)
at com.example.pizzaometelly.AdminPage.Refresh(AdminPage.java:40)
Сама активность, где я пытаюсь обратиться к бд:
public class AdminPage extends Activity {
WorkBD workBD;
private Cursor cursor;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.admin_page);
workBD = new WorkBD(this);
}
public void Refresh(View v){
SQLiteDatabase db = workBD.getReadableDatabase();
cursor = db.query(" SELECT * FROM " + WorkBD.TABLE_CONTACTS, null,null,null,null,null,null);
cursor.moveToFirst();
do{
Log.i(TAG, String.valueOf(cursor));
}
while (cursor.moveToNext());
}
}
активность отвечающая за бд:
public class WorkBD extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 2;
public static final String DATABASE_NAME = "pizzaDb.db";
public static final String TABLE_CONTACTS = "pizzaOrders";
public static final String KEY_ID = "_id";
public static final String KEY_NAME = "name";
public static final String KEY_NUMBER = "number";
public static final String KEY_ADDRESS = "address";
public static final String KEY_PIZZA1 = "pizza1";
public static final String KEY_PIZZA2 = "pizza2";
public static final String KEY_PIZZA3 = "pizza3";
public static final String KEY_PIZZA4 = "pizza4";
public static final String KEY_PIZZA5 = "pizza5";
public static final String KEY_COMMENT = "comment";
public static final String KEY_ISCOOK = "iscook";
public static final String KEY_ISDELIVER = "isdeliver";
public WorkBD(@Nullable Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_CONTACTS + " (" + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_NAME + " TEXT, " + KEY_NUMBER + " TEXT, "+ KEY_ADDRESS + " TEXT, " + KEY_PIZZA1 + " TEXT, " + KEY_PIZZA2 + " TEXT, " + KEY_PIZZA3 + " TEXT, " + KEY_PIZZA4 + " TEXT, " + KEY_PIZZA5 + " TEXT, " + KEY_COMMENT + " TEXT, " + KEY_ISCOOK + " BLOB DEFAULT 0, " + KEY_ISDELIVER + " BLOB DEFAULT 0" + " )");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
onCreate(db);
}
}
И активность где я наполняю бд:
public class BasketPage extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bascket_page);
FinalBuy = (TextView) findViewById(R.id.buyText);
mainActivity= new MainActivity();
culculateFprice();
workBD = new WorkBD(this);
Recycler();
}
public void finish_check(View v){
TextView t = (TextView) findViewById(R.id.errorview);
EditText namik = (EditText) findViewById(R.id.name);
EditText phonik = (EditText) findViewById(R.id.phone);
EditText streetik = (EditText) findViewById(R.id.street);
EditText homeik = (EditText) findViewById(R.id.home);
EditText porchik = (EditText) findViewById(R.id.porch);
EditText levelik = (EditText) findViewById(R.id.level);
EditText apprtik = (EditText) findViewById(R.id.room);
EditText commentic = (EditText) findViewById(R.id.comment);
name = namik.getText().toString();
t.setText("");
if (name.equals("")){
t.setText(getString(R.string.error_final));
b = false;
}
phoneNumber = phonik.getText().toString();
if (phoneNumber.equals("")){
t.setText(getString(R.string.error_final));
b = false;
}
street = streetik.getText().toString();
if (street.equals("")){
t.setText(getString(R.string.error_final));
b = false;
}
home = homeik.getText().toString();
if (home.equals("")){
t.setText(getString(R.string.error_final));
b = false;
}
porch = porchik.getText().toString();
if (porch.equals("")){
t.setText(getString(R.string.error_final));
b = false;
}
level = levelik.getText().toString();
if (porch.equals("")){
t.setText(getString(R.string.error_final));
b = false;
}
apprt = apprtik.getText().toString();
if (apprt.equals("")){
t.setText(getString(R.string.error_final));
b = false;
}
comment = commentic.getText().toString();
String address = "Улица: " + street + ", Дом: " + home + ". Номер подъезда: " + porch + ". Этаж: " + level + ". Номер квартиры: " + apprt;
if(b){
SQLiteDatabase database = workBD.getReadableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(WorkBD.KEY_NAME , name);
contentValues.put(WorkBD.KEY_NUMBER, phoneNumber);
contentValues.put(WorkBD.KEY_ADDRESS, address);
contentValues.put(WorkBD.KEY_PIZZA1, MainActivity.pepperoni.getCount());
contentValues.put(WorkBD.KEY_PIZZA2, MainActivity.calzone.getCount());
contentValues.put(WorkBD.KEY_PIZZA3, MainActivity.quattrostagioni.getCount());
contentValues.put(WorkBD.KEY_PIZZA4, MainActivity.quattroformaggi.getCount());
contentValues.put(WorkBD.KEY_PIZZA5, MainActivity.mexican.getCount());
contentValues.put(WorkBD.KEY_COMMENT, comment);
database.insert(WorkBD.TABLE_CONTACTS, null, contentValues);
}
Intent perehod = new Intent(BasketPage.this, LoginPage.class);
startActivity(perehod);
}
}