Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 24 янв 2018, 00:37

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 07 янв 2018, 10:07 

Зарегистрирован: 01 янв 2018, 20:06
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Сделал отдельный класс под БД
Код: [ Загрузить ] [ Скрыть ]
  1. package ru.pks.pizzatime; 
  2.  
  3. import android.content.ContentValues; 
  4. import android.content.Context; 
  5. import android.database.sqlite.SQLiteDatabase; 
  6. import android.database.sqlite.SQLiteOpenHelper; 
  7. import android.util.Log; 
  8.  
  9. public class PizzaTimeDatabaseHelper extends SQLiteOpenHelper { 
  10.  
  11.     private static final String TAG = "PizzaTimeDatabaseHelper"; 
  12.     private static final String DB_NAME = "pizzatime"; 
  13.     private static final int DB_VERSION = 1; 
  14.  
  15.     PizzaTimeDatabaseHelper(Context context) { 
  16.         super(context, DB_NAME, null, DB_VERSION); 
  17.         Log.d(TAG, "PizzaTimeDatabaseHelper"); 
  18.     } 
  19.  
  20.     @Override 
  21.     public void onCreate(SQLiteDatabase db) { 
  22.         updateMyDatabase(db, 0, DB_VERSION); 
  23.         Log.d(TAG, "updateMyDatabase onCreate"); 
  24.     } 
  25.  
  26.     @Override 
  27.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
  28.         updateMyDatabase(db, oldVersion, newVersion); 
  29.     } 
  30.  
  31.     private static void insertPizza(SQLiteDatabase db, String name, String description, String bonus, 
  32.                                     int type, int type_bonus, int orderQuantity) { 
  33.         ContentValues pizzaValues = new ContentValues(); 
  34.         pizzaValues.put("NAME", name); 
  35.         pizzaValues.put("DESCRIPTION", description); 
  36.         pizzaValues.put("BONUS", bonus); 
  37.         pizzaValues.put("TYPE", type); 
  38.         pizzaValues.put("TYPE_BONUS", type_bonus); 
  39.         pizzaValues.put("ORDER_QUANTITY", orderQuantity); 
  40.         db.insert("PTIME", null, pizzaValues); 
  41.     } 
  42.  
  43.     private void updateMyDatabase(SQLiteDatabase db, int oldVersion, int newVersion) { 
  44.         db.execSQL("DROP TABLE PTIME"); 
  45.         db.execSQL("CREATE TABLE PTIME (" 
  46.                 + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " 
  47.                 + "NAME TEXT, " 
  48.                 + "DESCRIPTION TEXT, " 
  49.                 + "BONUS TEXT, " 
  50.                 + "TYPE INTEGER, " 
  51.                 + "TYPE_BONUS INTEGER, " 
  52.                 + "ORDER_QUANTITY INTEGER);"); 
  53.         Log.d(TAG, "updateMyDatabase table create"); 
  54.  
  55.         insertPizza(db, "Raphael\'s PIZZA", "Pizza with secret ingredients.\n" + 
  56.                         "As Rafael himself says, I just take everything that is in the fridge.", 
  57.                 "Take 3 and get 1 for free", 1, 0, 0); 
  58.         Log.d(TAG, "updateMyDatabase table create 2"); 
  59.  
  60.         insertPizza(db, "Raphael\'s PIZZA (Bonus)", "1", "1", 
  61.                 1, 1, 0); 
  62.         Log.d(TAG, "updateMyDatabase table create 3"); 
  63.     } 


Запускаю запрос:
Код: [ Загрузить ] [ Скрыть ]
  1. try { 
  2.             SQLiteOpenHelper pizzaDB = new PizzaTimeDatabaseHelper(this); 
  3.             SQLiteDatabase db = pizzaDB.getReadableDatabase(); 
  4.             Cursor cursor = db.query("PTIME", 
  5.                     new String[]{"TYPE", "TYPE_BONUS", "ORDER_QUANTITY"}, 
  6.                     null, null, null, null, null); 
  7.  
  8.             cursor.moveToFirst(); 
  9.             if (cursor.moveToFirst()) { 
  10.                 test1 = cursor.getInt(0); 
  11.             } 
  12.             cursor.moveToNext(); 
  13.             if (cursor.moveToNext()){ 
  14.                 test3 = cursor.getInt(0); 
  15.             } 
  16.  
  17.             TextView textView = findViewById(R.id.textView); 
  18.             textView.setText(String.valueOf(test1)); 
  19.  
  20.             TextView textView2 = findViewById(R.id.textView2); 
  21.             textView2.setText(String.valueOf(test3)); 
  22.  
  23.             cursor.close(); 
  24.             db.close(); 
  25.         } catch (SQLiteException e) { 
  26.             toastCenterLong(getString(R.string.db_error)); 
  27.         } 

Меня всегда выкидывает на ошибку...
Смотрю по логам и в Дебагере...
В public void onCreate(SQLiteDatabase db) попросту не заходит...
Почему?!?!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 07 янв 2018, 19:52 

Зарегистрирован: 01 янв 2018, 20:06
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Вроде как нашел...
Код: [ Загрузить ] [ Скрыть ]
  1. package ru.pks.pizzatime; 
  2.  
  3. import android.content.ContentValues; 
  4. import android.content.Context; 
  5. import android.database.sqlite.SQLiteDatabase; 
  6. import android.database.sqlite.SQLiteOpenHelper; 
  7.  
  8. public class PizzaTimeDatabaseHelper extends SQLiteOpenHelper { 
  9.  
  10.     private static final String DB_NAME = "pizza_time"; 
  11.     private static final int DB_VERSION = 1; 
  12.  
  13.     PizzaTimeDatabaseHelper(Context context) { 
  14.         super(context, DB_NAME, null, DB_VERSION); 
  15.     } 
  16.  
  17.     @Override 
  18.     public void onCreate(SQLiteDatabase db) { 
  19. //        updateMyDatabase(db, 0, DB_VERSION); 
  20.         createMyDatabase(db,0, DB_VERSION); 
  21.     } 
  22.  
  23.     @Override 
  24.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
  25.         updateMyDatabase(db, oldVersion, newVersion); 
  26.     } 
  27.  
  28.     @Override 
  29.     public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
  30.         updateMyDatabase(db, oldVersion, newVersion); 
  31.     } 
  32.  
  33.     private static void insertPizza(SQLiteDatabase db, String name, String description, String bonus, 
  34.                                     int type, int type_bonus, int orderQuantity) { 
  35.         ContentValues pizzaValues = new ContentValues(); 
  36.         pizzaValues.put("NAME", name); 
  37.         pizzaValues.put("DESCRIPTION", description); 
  38.         pizzaValues.put("BONUS", bonus); 
  39.         pizzaValues.put("TYPE", type); 
  40.         pizzaValues.put("TYPE_BONUS", type_bonus); 
  41.         pizzaValues.put("ORDER_QUANTITY", orderQuantity); 
  42.         db.insert("PTIME", null, pizzaValues); 
  43.     } 
  44.  
  45.     private void createMyDatabase(SQLiteDatabase db, int oldVersion, int newVersion) { 
  46.         db.execSQL("CREATE TABLE PTIME (" 
  47.                 + "_ID INTEGER PRIMARY KEY AUTOINCREMENT, " 
  48.                 + "NAME TEXT, " 
  49.                 + "DESCRIPTION TEXT, " 
  50.                 + "BONUS TEXT, " 
  51.                 + "TYPE INTEGER, " 
  52.                 + "TYPE_BONUS INTEGER, " 
  53.                 + "ORDER_QUANTITY INTEGER);"); 
  54.  
  55.         insertPizza(db, "Raphael\'s PIZZA", "Pizza with secret ingredients.\n" + 
  56.                         "As Rafael himself says, I just take everything that is in the fridge.", 
  57.                 "Take 3 and get 1 for free", 1, 0, 0); 
  58.  
  59.         insertPizza(db, "Raphael\'s PIZZA (Bonus)", "N/A", "N/A", 
  60.                 1, 1, 0); 
  61.     } 
  62.  
  63.     private void updateMyDatabase(SQLiteDatabase db, int oldVersion, int newVersion) { 
  64.         db.execSQL("DROP TABLE PTIME"); 
  65.         createMyDatabase(db, oldVersion, newVersion); 
  66.     } 

Вынес Создание БД отдельно. В onUpgrade и onDowngrade - так же вызов отдельного метода updateMyDatabase, где БД сначала чистится, потом вызывается createMyDatabase
Вроде все работает, как нужно, БД каждый раз и изменении будет создаваться с "0"


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB