Произошла ошибка компиляции при добавлении данных в базу данных следующим образом
2019-09-25 08:29:29.332 6458-6458/com.mulazi.mymoviecatalogue E/SQLiteDatabase: Error inserting tittle =The Old Man & the Gun release_date =null overview =The true story of Forrest Tucker, from his audacious escape from San Quentin at the age of 70 to an unprecedented string of heists that confounded authorities and enchanted the public. Wrapped up in the pursuit are a detective, who becomes captivated with Forrest’s commitment to his craft, and a woman, who loves him in spite of his chosen profession. name =null poster_path =https://image.tmdb.org/t/p/w500null rating_bar =null rating =null
android.database.sqlite.SQLiteConstraintException: NOT NULL constraint failed: favorite.rating (code 1299 SQLITE_CONSTRAINT_NOTNULL)
at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:879)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:790)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:88)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1599)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1468)
at com.mulazi.mymoviecatalogue.db.FavoriteDbHelper.addFavorite(FavoriteDbHelper.java:64)
at com.mulazi.mymoviecatalogue.DetailActivity.saveFavorite(DetailActivity.java:141)
at com.mulazi.mymoviecatalogue.DetailActivity$1.onClick(DetailActivity.java:52)
at android.view.View.performClick(View.java:7251)
at android.view.View.performClickInternal(View.java:7228)
at android.view.View.access$3500(View.java:802)
at android.view.View$PerformClick.run(View.java:27843)
at android.os.Handler.handleCallback(Handler.java:883)
Моя FavDbHelper
package com.mulazi.mymoviecatalogue.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.mulazi.mymoviecatalogue.Model.Movie;
import java.util.ArrayList;
import java.util.List;
import static android.provider.BaseColumns._ID;
public class FavoriteDbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME ="favorite1.db";
private static final int DATABASE_VERSION = 1;
public FavoriteDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
final String SQL_CREATE_FAVORITE_TABLE = "CREATE TABLE " + FavoriteContract.FavoriteEntry.TABLE_NAME + " (" +
FavoriteContract.FavoriteEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
FavoriteContract.FavoriteEntry.COLOUMN_TITTLE + " TEXT, " +
FavoriteContract.FavoriteEntry.COLOUMN_POSTERPATH + " TEXT NOT NULL," +
FavoriteContract.FavoriteEntry.COLOUMN_OVERVIEW + " TEXT, " +
FavoriteContract.FavoriteEntry.COLOUMN_RATING_BAR + " INTEGER NOT NULL, " +
FavoriteContract.FavoriteEntry.COULOUMN_RATING +" TEXT NOT NULL ," +
FavoriteContract.FavoriteEntry.COLOUMN_RELEASE_DATE + " TEXT NOT NULL, " +
FavoriteContract.FavoriteEntry.COLOUMN_NAME + " TEXT " +
");";
sqLiteDatabase.execSQL(SQL_CREATE_FAVORITE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + FavoriteContract.FavoriteEntry.TABLE_NAME);
onCreate(sqLiteDatabase);
}
public void addFavorite(Movie movie) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(FavoriteContract.FavoriteEntry.COLOUMN_TITTLE, movie.getTitle());
values.put(FavoriteContract.FavoriteEntry.COLOUMN_POSTERPATH, movie.getPosterPath());
values.put(FavoriteContract.FavoriteEntry.COLOUMN_OVERVIEW, movie.getOverview());
values.put(FavoriteContract.FavoriteEntry.COLOUMN_RATING_BAR, movie.getVoteAverage());
values.put(FavoriteContract.FavoriteEntry.COULOUMN_RATING, movie.getVoteCount());
values.put(FavoriteContract.FavoriteEntry.COLOUMN_RELEASE_DATE, movie.getReleaseDate());
values.put(FavoriteContract.FavoriteEntry.COLOUMN_NAME, movie.getName());
db.insert(FavoriteContract.FavoriteEntry.TABLE_NAME, null, values);
db.close();
}
public void deleteFavorite (String overview) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(FavoriteContract.FavoriteEntry.TABLE_NAME, FavoriteContract.FavoriteEntry.COLOUMN_OVERVIEW + " = ", new String[]{overview});
}
public ArrayList<Movie> getAllFavorite () {
String[] columns ={
FavoriteContract.FavoriteEntry.TABLE_NAME,
FavoriteContract.FavoriteEntry._ID,
FavoriteContract.FavoriteEntry.COLOUMN_TITTLE,
FavoriteContract.FavoriteEntry.COLOUMN_POSTERPATH,
FavoriteContract.FavoriteEntry.COLOUMN_OVERVIEW,
FavoriteContract.FavoriteEntry.COLOUMN_RATING_BAR,
FavoriteContract.FavoriteEntry.COULOUMN_RATING,
FavoriteContract.FavoriteEntry.COLOUMN_RELEASE_DATE,
FavoriteContract.FavoriteEntry.COLOUMN_NAME
};
String sortOrder =
FavoriteContract.FavoriteEntry._ID + " ASC";
ArrayList<Movie> favoriteList = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(FavoriteContract.FavoriteEntry.TABLE_NAME,
columns,
null,
null,
null,
null,
sortOrder);
if (cursor.moveToFirst()) {
do {
Movie movie = new Movie();
movie.setName(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLOUMN_NAME)));
movie.setTitle(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLOUMN_TITTLE)));
movie.setPosterPath(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLOUMN_POSTERPATH)));
movie.setOverview(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLOUMN_OVERVIEW)));
movie.setReleaseDate(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLOUMN_RELEASE_DATE)));
movie.setVoteAverage(Double.parseDouble(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COULOUMN_RATING))));
movie.setVoteCount(Integer.parseInt(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLOUMN_RATING_BAR))));
favoriteList.add(movie);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return favoriteList;
}
}
Таблица
class FavoriteContract {
static final class FavoriteEntry implements BaseColumns {
static final String TABLE_NAME ="favorite";
static final String COLOUMN_TITTLE = "tittle ";
static final String COLOUMN_NAME = "name ";
static final String COLOUMN_POSTERPATH = "poster_path ";
static final String COLOUMN_OVERVIEW = "overview ";
static final String COULOUMN_RATING ="rating ";
static final String COLOUMN_RATING_BAR ="rating_bar ";
static final String COLOUMN_RELEASE_DATE ="release_date ";
}
}
вмой код, есть 3 пустых значения, дата выпуска, рейтинг-бар и рейтинг, поэтому, пожалуйста, скажите мне, как это исправить, что я должен сделать, чтобы преодолеть это