Приложение аварийно завершает работу при использовании предварительно заполненной базы данных номеров.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Приложение аварийно завершает работу при использовании предварительно заполненной базы данных номеров.

Сообщение Гость »


Я пытаюсь использовать предварительно заполненную базу данных Room, но при попытке использовать базу данных происходит сбой со следующей ошибкой: java.lang.NullPointerException: курсор.getString(toColumnIndex) не должен иметь значение null

Все работает нормально, пока я не добавляю метод createFromAsset("databses/test.db"), когда он выходит из строя. Ничего не выйдет из строя, если я просто не выполню метод getAllCocktails(). Я уже проверил, имеет ли вставленная мной БД все то же самое, и не смог найти никаких различий (я также проверил загрузку данных с помощью AppInspection)

Я не только тестировал с помощью getAllCocktails(), я также пробовал вставлять с помощью полностью параметризованного конструктора

Я опубликую (часть) своего кода и журналов, чтобы было легче диагностировать Я пробовал использовать версии Room 2.5.1 и 2.5.2

файл test.db

Действие:

публичный класс PedirTragoActivity расширяет AppCompatActivity { База данных приложений; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_pedir_trago1_1); db = AppDatabase.getInstance(this.getApplication()); db.cocktailDAO().getAllCocktails(); } } База данных комнат:

@Database(entities = { BottleEntity.класс, BottleIngredientEntity.класс, CocktailEntity.класс, CocktailIngredientEntity.класс, IngredientTypeEntity.class }, версия = 7) публичный абстрактный класс AppDatabase расширяет RoomDatabase { общедоступная статическая база данных AppDatabase INSTANCE; общедоступная абстракция BottleDAO BottleDAO(); общедоступная абстракция BottleIngredientDAO BottleIngredientDAO(); публичный абстрактный CocktailDAO CocktailDAO(); публичный абстрактный CocktailIngredientDAO CocktailIngredientDAO(); публичный абстрактный IngredientTypeDAO IngredientTypeDAO(); public static AppDatabase getInstance (контекст контекста) { если (ЭКЗЕМПЛЯР == ноль) { ЭКЗЕМПЛЯР = Room.databaseBuilder(контекст, AppDatabase.class, "barbotApp.db") .allowMainThreadQueries() .fallbackToDestructiveMigration() .createFromAsset("базы данных/test.db") .строить(); } вернуть ЭКЗЕМПЛЯР; } } BottleEntity:

@Entity(tableName = "bottles") общественный класс BottleEntity { @Основной ключ @NonNull частная внутренняя позиция;//Del 0 al 7 son Alcoholes, el 8 es шейкер y del 9 al 16 son mezclas частное имя строки; @NonNull частная внутренняя емкость; @NonNull частный int currentAmount; общественный BottleEntity() { } public BottleEntity (intposition, String name, int емкость, int currentAmount) { this.position = позиция; это.имя = имя; this.capacity = емкость; this.currentAmount = текущая сумма; } @Игнорировать public BottleEntity (int Position, String name, int емкость) { this.position = позиция; это.имя = имя; this.capacity = емкость; this.currentAmount = емкость; } общественный ИНТ getPosition () { возвратное положение; } общественный недействительный setPosition (int позиция) { this.position = позиция; } публичная строка getName() { вернуть имя; } public void setName (имя строки) { это.имя = имя; } public int getCapacity() { возвратная емкость; } общественный недействительный setCapacity (int емкость) { this.capacity = емкость; } общественный ИНТ getCurrentAmount () { вернуть текущую сумму; } общественная недействительность setCurrentAmount (int currentAmount) { this.currentAmount = текущая сумма; } } BottleIngredientEntity:

@Entity(tableName = "bottle_ingredient", ForeignKeys = { @ForeignKey(entity = BottleEntity.class, ParentColumns = «позиция», childColumns = «bottlePos»), @ForeignKey(entity = IngredientTypeEntity.class,parentColumns = «id», childColumns = «ingredientId») }) общественный класс BottleIngredientEntity { @PrimaryKey(autoGenerate = true) @NonNull частный внутренний идентификатор; @NonNull частный int BottlePos; @NonNull частный int ингредиентId; общественный BottleIngredientEntity () { } public BottleIngredientEntity(int BottlePos, int идентификатор ингредиента) { this.bottlePos = BottlePos; this.ingredientId = идентификатор ингредиента; } общественный int getId() { вернуть идентификатор; } общественный недействительный setId (int id) { this.id = идентификатор; } public int getBottlePos() { возврат бутылкиPos; } public void setBottlePos(int BottlePos) { this.bottlePos = BottlePos; } public int getIngredientId() { вернуть идентификатор ингредиента; } общественный недействительный setIngredientId (INT IngredientId) { this.ingredientId = идентификатор ингредиента; } } CocktailIngredientEntity:

@Entity(tableName = "cocktail_ingredients", ForeignKeys = { @ForeignKey(entity = IngredientTypeEntity.class,parentColumns = "id", childColumns = "typeId"), @ForeignKey(entity = CocktailEntity.class,parentColumns = «id», childColumns = «cocktailId») }) общественный класс CocktailIngredientEntity { @PrimaryKey(autoGenerate = true) @NonNull частный внутренний идентификатор; @NonNull частный int typeId; @NonNull частное количество int; @NonNull частный int CocktailId; public CocktailIngredientEntity (int typeId, int количество, int CocktailId) { this.typeId = typeId; это.количество = количество; this.cocktailId = CocktailId; } общественный int getId() { вернуть идентификатор; } общественный недействительный setId (int id) { this.id = идентификатор; } общественный int getTypeId() { вернуть идентификатор типа; } общественный недействительный setTypeId (int typeId) { this.typeId = typeId; } общественный ИНТ getQuantity () { количество возврата; } public void setQuantity (количество int) { это.количество = количество; } public int getCocktailId() { вернуть идентификатор коктейля; } public void setCocktailId(int CocktailId) { this.cocktailId = CocktailId; } } IngredientTypeEntity:

@Entity(tableName = "ingredient_types") общественный класс IngredientTypeEntity { @PrimaryKey(autoGenerate = true) @NonNull частный внутренний идентификатор; частное имя строки; общественный IngredientTypeEntity () { } public IngredientTypeEntity (имя строки) { это.имя = имя; } общественный int getId() { вернуть идентификатор; } общественный недействительный setId (int id) { this.id = идентификатор; } публичная строка getName() { вернуть имя; } public void setName (имя строки) { это.имя = имя; } } CocktailEntity:

@Entity(tableName = "коктейли") общественный класс CocktailEntity { @PrimaryKey(autoGenerate = true) @NonNull частный внутренний идентификатор; частное имя строки; @NonNull частное логическое значение isOnStock; @NonNull частное логическое значение hasIce; частная строка imgName; public CocktailEntity (имя строки, логическое значение isOnStock, логическое значение hasIce, строка imgName) { это.имя = имя; this.isOnStock = isOnStock; this.hasIce = hasIce; this.imgName = imgName; } @Игнорировать public CocktailEntity (имя строки, логическое значение hasIce, строка imaName) { это.имя = имя; this.isOnStock = ложь; this.hasIce = hasIce; } общественный int getId() { вернуть идентификатор; } общественный недействительный setId (int id) { this.id = идентификатор; } публичная строка getName() { вернуть имя; } public void setName (имя строки) { это.имя = имя; } общедоступное логическое значение isOnStock() { вернуть isOnStock; } public void setOnStock(boolean onStock) { isOnStock = onStock; } общедоступное логическое значение isHasIce() { вернуть hasIce; } public void setHasIce(boolean hasIce) { this.hasIce = hasIce; } публичная строка getImgName() { вернуть имя_изображения; } public void setImgName (String imgName) { this.imgName = imgName; } } КоктейльДао:

@Dao общедоступный интерфейс CocktailDAO { @Вставлять длинная вставкаCocktail (коктейль CocktailEntity); @Query("ВЫБРАТЬ идентификатор ИЗ коктейлей WHERE name =:name") int getCocktailId (имя строки); @Query("ВЫБРАТЬ c.* FROM коктейли AS c WHERE c.id = :id") CocktailEntity getCocktail (int id); //Нужно использовать репозиторий, разделите эти две части @Query("ВЫБРАТЬ * ИЗ коктейлей") List getAllCocktails(); @Query("ВЫБРАТЬ Cocktails.id ИЗ коктейлей") List getAllCocktailIds(); @Query("ВЫБРАТЬ * ИЗ коктейлей" + "ГДЕ коктейли.isOnStock = 1") Список getAllCocktailsInStock(); @Query("ВЫБРАТЬ isOnStock ИЗ коктейлей WHERE id = :id") логическое значение isCocktailInStock(int id); @Query("ОБНОВЛЕНИЕ коктейлей SET isOnStock = :isOnStock WHERE id = :id") void updateCocktailStock (int id, логическое значение isOnStock); } Логическая котировка:

2023-09-23 17:17:20.600 8250-8250 Хореограф com.mecatronica.barbot Я Пропустил 67 кадров! Возможно, приложение выполняет слишком много работы в своем основном потоке. 2023-09-23 17:17:20.801 8250-8594 AdrenoGLES-0 com.mecatronica.barbot I сборка QUALCOMM: 03e27f8, I326e6aff90 Дата сборки: 02.11.20 Версия компилятора шейдеров OpenGL ES: EV031.32.02.04 Местный филиал: mybrancheb1d781c-1a78-f1f4-8c78-ac1f6bcc2cee Удаленная ветвь: quic/gfx-adreno.lnx.1.0.r116-rel Удаленный филиал: НЕТ Реконструировать ветку: НИЧЕГО 2023-09-23 17:17:20.801 8250-8594 AdrenoGLES-0 com.mecatronica.barbot Я собираю конфигурацию: SP 10.0.7 AArch64 2023-09-23 17:17:20.801 8250-8594 AdrenoGLES-0 com.mecatronica.barbot I Путь к драйверу: /vendor/lib64/egl/libGLESv2_adreno.so 2023-09-23 17:17:20.813 8250-8594 AdrenoGLES-0 com.mecatronica.barbot I PFP: 0x016ee190, ME: 0x00000000 2023-09-23 17:17:21.019 8250-8594 LB com.mecatronica.barbot E не удается открыть файл: такого файла или каталога нет. 2023-09-23 17:17:21.021 8250-8594 OpenGLRenderer com.mecatronica.barbot Я, Дэйви! продолжительность=1547 мс; Флаги = 1, IntendedVsync = 42335033169415, Vsync = 42336149836037, OldestInputEvent = 9223372036854775807, NewestInputEvent = 0, HandleInputStart = 42336161943432, AnimationStart = 42336162004370 , PerformTraversalsStart=42336162065047, DrawStart=42336409293120, SyncQueued=42336445054213, SyncStart=42336445465515, IssueDrawCommandsStart=42336445624838, SwapBuffers= 42336577074578, FrameCompleted=42336581385203, DequeueBufferDuration=272760, QueueBufferDuration=682187, GpuCompleted=1893829464, 2023-09-23 17:17:21.027 8250-8250 Looper com.mecatronica.barbot W PerfMonitor doFrame: время = 424 мс vsyncFrame = 0 задержка = 1127 мс procState = 2 HistoryMsgCount = 10 (msgIndex = 1 wall = 1223 мс seq = 4 работает = 1128 мс работает = 12 мс поздно = 2999 мс h = android.app.ActivityThread$H w = 159) (msgIndex = 5 wall = 1007 мс seq = 8 работает = 2 мс работает = 1 мс io = 4 мс поздно = 3591 мс h = android.app.ActivityThread$ Ч ш=127) 2023-09-23 17:17:21.154 8250-8250 Looper com.mecatronica.barbot W PerfMonitor doFrame: время = 35 мс vsyncFrame = 0 задержка = 459 мс procState = 2 HistoryMsgCount = 4 (msgIndex = 1 wall = 424 мс seq = 14 работает = 255 мс runnable=1 мс с опозданием=1127 мс h=android.view.Choreographer$FrameHandler c=android.view.Choreographer$FrameDisplayEventReceiver) (msgIndex=4 wall=78ms seq=17 Running=70ms runnable=2ms late=413ms h=android.view .ViewRootImpl$ViewRootHandler c=androidx.appcompat.app.AppCompatDelegateImpl$2) 2023-09-23 17:17:28.708 8250-8250 MiuiFrameworkFactory com.mecatronica.barbot V получить объект AllImpl = android.common.MiuiFrameworkFactoryImpl@b038154 2023-09-23 17:17:28.726 8250-8250 MirrorManager com.mecatronica.barbot W эта модель не поддерживает 2023-09-23 17:17:28.773 8250-8250 Хронология com.mecatronica.barbot I Хронология: Activity_launch_request time: 42344334 2023-09-23 17:17:28.996 8250-8250 DecorView[] com.mecatronica.barbot D getWindowModeFromSystem оконный режим равен 1 2023-09-23 17:17:28.997 8250-8250 DecorView com.mecatronica.barbot D createDecorCaptionView windowingMode:1 mWindowMode 1 isFullscreen: true 2023-09-23 17:17:30.631 8250-8250 AndroidRuntime com.mecatronica.barbot D Завершение работы виртуальной машины 2023-09-23 17:17:30.646 8250-8250 AndroidRuntime com.mecatronica.barbot E ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основное Процесс: com.mecatronica.barbot, PID: 8250 java.lang.RuntimeException: невозможно начать действие ComponentInfo{com.mecatronica.barbot/com.mecatronica.barbot.PedirTragoActivity}: java.lang.NullPointerException: курсор.getString(toColumnIndex) не должен иметь значение null в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3550) в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3710) в android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) в android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135) в android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2146) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loop(Looper.java:236) в android.app.ActivityThread.main(ActivityThread.java:8057) в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967) Вызвано: java.lang.NullPointerException: курсор.getString(toColumnIndex) м в с т н О т б Это н в л л а т а н д р О я д Икс . р О О м . в т я л . Т а б л Это я н ж О К т . р Это а д Ф О р Это я г н К Это и Ф я Это л д М а п п я н г с ( Т а б л Это я н ж О . к т : 5 3 6 ) а т а н д р О я д Икс . р О О м . в т я л . Т а б л Это я н ж О К т . р Это а д Ф О р Это я г н К Это и с ( Т а б л Это я н ж О . к т : 4 8 8 ) а т а н д р О я д Икс . р О О м . в т я л . Т а б л Это я н ж О К т . р Это а д Т а б л Это я н ж О ( Т а б л Это я н ж О . к т : 4 7 2 ) а т а н д р О я д Икс . р О О м . в т я л . Т а б л Это я н ж О $ С О м п а н я О н . р Это а д ( Т а б л Это я н ж О . к т : 1 3 0 ) а т а н д р О я д Икс . р О О м . в т я л . Т а б л Это я н ж О . р Это а д ( В н к н О В н С О в р с Это : 2 ) а т с О м . м Это с а т р О н я с а . б а р б О т . д а т а б а с Это . А п п Д а т а б а с Это _ я м п л $ 1 . О н В а л я д а т Это С с час Это м а ( А п п Д а т а б а с Это _ я м п л . дж а в а : 1 3 6 ) а т а н д р О я д Икс . р О О м . р О О м О п Это н ЧАС Это л п Это р . О н С р Это а т Это ( р О О м О п Это н ЧАС Это л п Это р . к т : 7 2 ) а т а н д р О я д Икс . с д л я т Это . д б . ж р а м Это В О р к . Ф р а м Это В О р к С вопрос л я т Это О п Это н ЧАС Это л п Это р $ О п Это н ЧАС Это л п Это р . О н С р Это а т Это ( Ф р а м Это В orkSQLiteOpenHelper.kt:244) в android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:411) в android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:316) в androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableOrReadableDatabase(FrameworkSQLiteOpenHelper.kt:232) в androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.innerGetDatabase(FrameworkSQLiteOpenHelper.kt:190) в androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getSupportDatabase(FrameworkSQLiteOpenHelper.kt:151) в androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.kt:104) в androidx.room.SQLiteCopyOpenHelper.getWritableDatabase(SQLiteCopyOpenHelper.kt:71) в androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:638) в androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:457) на com.mecatronica.barbot.database.daos.CocktailDAO_Impl.getAllCocktails(CocktailDAO_Impl.java:177) на com.mecatronica.barbot.PedirTragoActivity.onCreate(PedirTragoActivity.java:63) в android.app.Activity.performCreate(Activity.java:8157) в android.app.Activity.performCreate(Activity.java:8129) в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1310) в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3523) в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3710) в android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) в android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135) в android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2146) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loop(Looper.java:236) в android.app.ActivityThread.main(ActivityThread.java:8057) в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967) 2023-09-23 17:17:30.716 8250-8250 Процесс com.mecatronica.barbot I Отправка сигнала. ПИД: 8250 СИГНАЛ: 9 Форма дампа sql test.db:
PRAGMA Foreign_keys=OFF; НАЧАТЬ ТРАНЗАКЦИЮ; СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ "ingredient_types" ( идентификатор INTEGER не равен нулю ограничение ингредиент_типы_пк основной ключ, имя ТЕКСТ ); INSERT INTO Inding_types VALUES(1,'SHAKE'); INSERT INTO Inding_types VALUES(2,'лимон'); INSERT INTO Inding_types VALUES(3,'ron'); INSERT INTO Inding_types VALUES(4,'тоника'); INSERT INTO Inding_types VALUES(5,'ginebra'); INSERT INTO Inding_types VALUES(6,'Campari'); INSERT INTO Inding_types VALUES(7,'naranja'); INSERT INTO Inding_types VALUES(8,'fernet'); INSERT INTO Inding_types VALUES(9,'кока'); INSERT INTO Inding_types VALUES(10,'durazno'); INSERT INTO Inding_types VALUES(11,'гранадина'); INSERT INTO Inding_types VALUES(12,'водка'); СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ "bottle_ingredient" ( идентификатор INTEGER не равен нулю ограничение Bottle_ingredient_pk основной ключ, BottlePos INTEGER не равен нулю ограничение Bottle_ingredient_bottles_position_fk референсные бутылки, идентификатор ингредиента INTEGER не равен нулю ограничение Bottle_ingredient_ingredient_types_id_fk ссылки на типы ингредиентов ); INSERT INTO Bottle_ingredient VALUES(1,8,5); INSERT INTO Bottle_ingredient VALUES(2,9,6); INSERT INTO Bottle_ingredient VALUES(3,10,8); INSERT INTO Bottle_ingredient VALUES(4,11,3); INSERT INTO Bottle_ingredient VALUES(5,12,12); INSERT INTO Bottle_ingredient VALUES(7,0,2); INSERT INTO Bottle_ingredient VALUES(8,1,4); INSERT INTO Bottle_ingredient VALUES(9,2,7); INSERT INTO Bottle_ingredient VALUES(10,3,9); INSERT INTO Bottle_ingredient VALUES(11,4,10); INSERT INTO Bottle_ingredient VALUES(12,5,11); INSERT INTO Bottle_ingredient VALUES(13,16,1); СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ «бутылок» ( позиция INTEGER не равна нулю ограничение бутылки_pk основной ключ, имя ТЕКСТ, емкость INTEGER не равна нулю, currentAmount INTEGER не равен нулю ); INSERT INTO Bottles VALUES(0,'limon',2000,2000); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ(1,'тоника',2000,2000); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ(2,'naranja',2000,2000); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ (3, «кока», 2000, 2000); INSERT INTO Bottles VALUES(4,'durazno',2000,2000); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ(5,'гранадина',2000,2000); INSERT INTO Bottles VALUES(6,'Mezcla 7',1,1); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ(7,'Mezcla 8',1,1); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ(8,'ginebra',700,700); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ (9, «кампари», 750 750); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ(10,'fernet',750,750); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ(11,'ron',750,750); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ (12, «водка», 700 700); INSERT INTO Bottles VALUES(13,'Bottle 6',1,1); INSERT INTO Bottles VALUES(14,'Bottle 7',1,1); INSERT INTO Bottles VALUES(15,'Бутылка 8',1,1); ВСТАВИТЬ В бутылки ЗНАЧЕНИЯ (16, «Шейкео», 1000,1000); СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ "cocktail_ingredients" ( идентификатор INTEGER не равен нулю ограничение Cocktail_ingredients_pk основной ключ, typeId INTEGER не равен нулю ограничение коктейль_ingredient_ingredient_types_id_fk ссылки на ингредиенты_типы, количество INTEGER не равно нулю, CocktailId INTEGER не равен нулю ограничение Cocktail_ingredients_cocktails_id_fk ссылки на коктейли ); INSERT INTO Cocktail_ingredients VALUES(1,6,60,1); INSERT INTO Cocktail_ingredients VALUES(2,7,136,1); INSERT INTO Cocktail_ingredients VALUES(3,9,146,2); INSERT INTO Cocktail_ingredients VALUES(4,8,50,2); INSERT INTO Cocktail_ingredients VALUES(5,5,60,3); INSERT INTO Cocktail_ingredients VALUES(6,4,136,3); INSERT INTO Cocktail_ingredients VALUES(7,3,50,4); INSERT INTO Cocktail_ingredients VALUES(8,9,120,4); INSERT INTO Cocktail_ingredients VALUES(9,2,10,4); INSERT INTO Cocktail_ingredients VALUES(10,12,40,5); INSERT INTO Cocktail_ingredients VALUES(11,10,20,5); INSERT INTO Cocktail_ingredients VALUES(12,7,40,5); INSERT INTO Cocktail_ingredients VALUES(13,1,30,5); INSERT INTO Cocktail_ingredients VALUES(14,11,40,5); СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ «коктейли» ( идентификатор INTEGER не равен нулю ограничение коктейлей_pk основной ключ, имя ТЕКСТ, isOnStock INTEGER не равен нулю, hasIce INTEGER не равен нулю, imgName ТЕКСТ ); INSERT INTO коктейли VALUES(1,'Campari',1,1,'Campari'); INSERT INTO коктейли VALUES(2,'fernet',1,1,'fernet'); INSERT INTO коктейли VALUES(3,'джин тоник',1,1,'гинтоник'); INSERT INTO коктейли VALUES(4,'ron cola',1,1,'roncola'); INSERT INTO коктейли VALUES(5,'sex On the Beach',1,1,'sexOnTheBeach'); СОВЕРШИТЬ;
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»