Ich habe eine Datenbank wie folgt erstellt.cursor.moveToFirst() gibt false zurück
public class DataBase extends SQLiteOpenHelper {
private static String DB_NAME="MovieData";
private static String TABLE_VARIABLES="data";
private static int DB_VERSION=1;
DataBase(Context context)
{super(context,DB_NAME,null,DB_VERSION);//null is for cursors//sqlite helper classes constructor is being called
}
@Override
public void onCreate(SQLiteDatabase db) { //Sqlitedatabase class gives us access to database
db.execSQL("CREATE TABLE "+TABLE_VARIABLES+"("
+"_id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "Movie_Name TEXT,"
+ "Image_Link TEXT,"
+"Release_Date TEXT,"
+ "Prediction TEXT);");
insert_data(db,"Bahubali","https://www.desiretrees.in/wp-content/uploads/2016/12/Baahubali-2-Posters.jpg","2017/06/23","success");
insert_data(db,"3 Idiots","http://s3.india.com/wp-content/uploads/2016/01/3-idiots-sequel-1.jpg","2018/06/11","success");
insert_data(db,"Sagar","http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg","2019/07/17" ,"success");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
private void insert_data(SQLiteDatabase db,String movie_name,String image_link,String release_date, String prediction){
ContentValues
movie_data= new ContentValues();
movie_data.put("Movie_Name",movie_name);
movie_data.put("Image_Link",image_link);
movie_data.put("Release_Date",release_date);
movie_data.put("Prediction",prediction);
db.insert("data",null,movie_data);
}
}
Die eingegebenen Daten dienen nur zum Testen.
Ich möchte auf die Datenbank innerhalb eines Fragments zugreifen. Der Code für diesen Teil des Fragments
DataReceiver data= new DataReceiver(getContext());
movie_name=data.getMovie_name();
image_url=data.getImagelink();
release_date=data.getRelease_date();
prediction=data.getPrediction();
Datareceiver separierter Klasse ist, die Daten aus der Datenbank für den Empfang. der Code dafür ist.
public class DataReceiver {
private Context mContext;
private String movie_name,imagelink,release_date,prediction;
private String[] arrangedstring;
public DataReceiver(Context context) {
this.mContext=context;
}
public String[] getMovie_name(){
SQLiteDatabase db= open();
Cursor cursor = db.query("data",
new String[]{"_id", "Movie_Name"},
null,
null, null, null, null
);
String send[]= arrangeDescending(cursor,1);
cursor.close();
return send;
}
public String[] getImagelink(){
SQLiteDatabase db= open();
Cursor cursor = db.query("data",
new String[]{"_id", "Image_Link"},
null,
null, null, null, null
);
String send[]= arrangeDescending(cursor,1);
cursor.close();
return send;
}
public String[] getRelease_date(){
SQLiteDatabase db= open();
Cursor cursor = db.query("data",
new String[]{"_id","Release_Date"},
null,
null, null, null, null
);
String send[]= arrangeDescending(cursor,1);
cursor.close();
return send;
}
public String[] getPrediction(){
SQLiteDatabase db= open();
Cursor cursor = db.query("data",
new String[]{"_id","Prediction"},
null,
null, null, null, null
);
String send[]= arrangeDescending(cursor,1);
cursor.close();
return send;
}
private SQLiteDatabase open(){
SQLiteOpenHelper DataBase = new DataBase(mContext);
SQLiteDatabase db = DataBase.getReadableDatabase();
return db;
}
private String[] arrangeDescending(Cursor cursor,int column_no){
if(cursor.moveToFirst()){
int count=0;
do{
arrangedstring[count]=cursor.getString(column_no);
arrangedstring=moveStringRight(arrangedstring);
count++;
cursor.moveToNext();
}while(cursor.isAfterLast());
arrangedstring=moveStringLeft(arrangedstring);
}
return arrangedstring;
}
dann gibt die Methode cursor.moveToFirst() false zurück. Ich weiß nicht, wo ich falsch gelaufen bin.
Auch Sie Probleme mit arrangeDescending Methode haben, überprüfen Sie, dass Ihr Cursor wird immer habe 2 Spalten {_id, x} und wenn Sie versuchen, cursor.getString (2) aufzurufen; wird fehlschlagen – miibpa
Danke, dass Sie das bemerkt haben.Fixieren der "_" auch nicht geholfen. immer noch falsch fälschend –
Beachten Sie, dass Ihre onCreate-Methode in SqliteOpenHelper nur einmal aufgerufen wird. Daher werden Ihre insert_data nicht erneut aufgerufen. Versuchen Sie, Ihre App erneut zu deinstallieren/zu starten, oder verwenden Sie die OnUpdate-Methode. – miibpa