I want to set up and insert data into a SQL database in Android by using SQLiteOpenHelper. I have the following SQLHelperClass (by followin the youtube tutorial:https://www.youtube.com/watch?v=T0ClYrJukPA)
package com.example.td.barapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class DataBaseHelper extends SQLiteOpenHelper {
public static final String DATABASE = "DrinksDB.db";
public static final String TABLE_DRINKS = "table_drinks";
public static final String TABLE_RATINGS = "table_ratings";
public static final String TABLE_INGREDIENTS = "table_ingredients";
public static final String TABLE_INGREDIENTS_GERMAN = "table_ingredients_german";
/*
Variables for the table "Drinks"
*/
public static final String DRINK_NAME = "Name";
public static final String DRINK_NAME_GERMAN = "Name_German";
public static final String DRINK_TYPE = "Drink_Type";
/*
Variables for the table "RATINGS"
*/
public static final String NUMBER_1STARS = "1_Star";
public static final String NUMBER_2STARS = "2_Star";
public static final String NUMBER_3STARS = "3_Star";
public static final String NUMBER_4STARS = "4_Star";
public static final String NUMBER_5STARS = "5_Star";
/*
Variables for the table "Ingredients"
*/
public static final String NUMBER_OFINGREDIENTS = "Number Ingredients";
public static final String INGREDIENT_1 = "Ingredient_1";
public static final String INGREDIENT_2 = "Ingredient_2";
public static final String INGREDIENT_3 = "Ingredient_3";
public static final String INGREDIENT_4 = "Ingredient_4";
public static final String INGREDIENT_5 = "Ingredient_5";
public static final String INGREDIENT_6 = "Ingredient_6";
public static final String INGREDIENT_7 = "Ingredient_7";
public static final String INGREDIENT_8 = "Ingredient_8";
public static final String INGREDIENT_1_GERMAN = "Ingredient_1_German";
public static final String INGREDIENT_2_GERMAN = "Ingredient_2_German";
public static final String INGREDIENT_3_GERMAN = "Ingredient_3_German";
public static final String INGREDIENT_4_GERMAN = "Ingredient_4_German";
public static final String INGREDIENT_5_GERMAN = "Ingredient_5_German";
public static final String INGREDIENT_6_GERMAN = "Ingredient_6_German";
public static final String INGREDIENT_7_GERMAN = "Ingredient_7_German";
public static final String INGREDIENT_8_GERMAN = "Ingredient_8_German";
public DataBaseHelper(@Nullable Context context) {
super(context, DATABASE, null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table " + TABLE_DRINKS + "(Name TEXT PRIMARY KEY, Name_German TEXT, Drink_Type TEXT ) ");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_DRINKS);
onCreate(sqLiteDatabase);
}
public boolean insertDataDrinksDB (String name, String nameGerman, String type) {
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(DRINK_NAME, name);
contentValues.put(DRINK_NAME_GERMAN, nameGerman);
contentValues.put(DRINK_TYPE, type);
long inserted = sqLiteDatabase.insert(TABLE_DRINKS, null, contentValues);
if (inserted==-1) {
return false;
}
else
return true;
}
}
I implemented the methdod "public boolean insertDataDrinksDB (see at the end of the code). Then in the main activity I insert some data by using the following code:
package com.example.td.barapp;
import android.content.Intent;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import com.example.td.barapp.databinding.ActivityMain2Binding;
import com.example.td.barapp.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
DataBaseHelper drinksDB;
private ActivityMain2Binding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
drinksDB = new DataBaseHelper (this);
boolean insert = drinksDB.insertDataDrinksDB("Apple Juice", "Apfelsaft", "Softdrink");
if (insert==true) {
Toast.makeText(this, "Data inserted", Toast.LENGTH_LONG).show();
}
if (insert==false) {
Toast.makeText(this, "Data not inserted", Toast.LENGTH_LONG).show();
}
}
}
When I start the app I always get the Toast message that the Data was not inserted and I do not see my mistake. Further, the database does not seem to get bigger when I insert the data so the data is seemingly not inserted. Would you mind telling me what mistake I am making? I'd appreciate every comment.