db.insert(table_name,null,contentValues);
renvoie toujours -1
et n'insère pas les valeurs dans les bases de données.ContentValues Insert renvoie toujours la valeur -1
Pouvez-vous s'il vous plaît m'aider à comprendre ce que je fais le mal?
database_class.java:
public class database_class extends SQLiteOpenHelper {
public static final String database_name = "signup_db";
public static final String table_name = "signup";
public static final String column_1 = "FIRST_NAME";
public static final String column_2 = "SECOND_NAME";
public static final String column_3 = "EMAIL";
public static final String column_4 = "PASSWORD";
public static final String column_5 = "c_password";
public database_class(Context context){
super(context,database_name , null, 1);
//Toast.makeText(context, "Class called ", Toast.LENGTH_SHORT).show();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table" + table_name + "(ID INTEGER PRIMARY KEY AUTOINCREMENT , FIRST_NAME TEXT , SECOND_NAME TEXT , EMAIL TEXT , PASSWORD TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS" + table_name);
onCreate(db);
}
public boolean insertData(String first_name, String second_name, String email, String password){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(column_1,first_name);
contentValues.put(column_2,second_name);
contentValues.put(column_3,email);
contentValues.put(column_4,password);
long result = db.insert(table_name,null,contentValues);
if (result == -1)
return false;
else
return true;
}
}
Code MainActivity:
fn = editText1.getText().toString();
ln = editText2.getText().toString();
em = editText3.getText().toString();
pass = editText4.getText().toString();
cpass = editText5.getText().toString();
if (1 == 1) {
//boolean isInserted = mydb.insertData(signup_values[0].toString(),signup_values[1].toString(),signup_values[2].toString(),signup_values[3].toString());
boolean isInserted = mydb.insertData(fn,ln,em,pass);
if(isInserted == true) {
Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(MainActivity.this, "Password Mismatch", Toast.LENGTH_SHORT).show();
Je ne suis pas un développeur Android, mais étant donné que je ne vois pas un moyen d'obtenir l'erreur de la db, je voudrais vérifier que le db vous insérez à est disponible et ouvert avant d'essayer de faire votre insertion. – Gavin
Indice: découvrez les conventions de nommage Java. Les classes commencent en majuscules, les variables n'ont pas _ dans leurs noms. D'ailleurs: vos noms sont plutôt horribles! Il n'y a pas besoin de sauvegarder les caractères; comme: qu'est-ce que je veux dire? em? passer? cpass? Utilisez des noms qui disent ce que le truc qu'ils désignent ** est **. Et soit utilisez un tableau pour vos champs de texte; ou donnez ces noms appropriés aussi. Enfin: pensez à ne pas utiliser de statique partout dans vos champs. Vous voyez - vous pouvez faire du nom db un champ que vous donnez à votre classe dans le constructeur par exemple. – GhostCat
@GhostCat Essayez de résoudre le problème, pas nitpick la syntaxe;) Vous perdez votre souffle –