Lorsque j'essaye d'insérer des données dans ma base de données, j'obtiens toujours des ID valeur négtives -1. J'ai déjà fait quelques sur ce qui peut avoir causé le problème mais cela ne m'a pas aidé. Je vous donne ci-après les deux classes que j'ai utilisées. MainActivity et DBManager.
MAIN ACTIVITY
package com.example.database;
import android.content.ContentValues;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
DBManager dbManag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbManag = new DBManager(this);
}
public void buSave(View view) {
EditText userName = (EditText) findViewById(R.id.name);
EditText passWord = (EditText)findViewById(R.id.password);
ContentValues values = new ContentValues();
values.put(DBManager.ColUserName,userName.getText().toString());
values.put(DBManager.ColPassword,passWord.getText().toString());
long id = dbManag.Insert(values);
if(id>0){
Toast.makeText(getApplicationContext(),"Data inserted",Toast.LENGTH_LONG).show() ; }
}
public void buLoad(View view) {
}
}
DBMANAGER
package com.example.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;
public class DBManager {
public long ID;
public SQLiteDatabase sqlDb;
static final String DBName = "Students";
static final String TableName = "Logins";
static final String ColUserName = "UserName";
static final String ColPassword = "PassWord";
static final int DBVersion = 3;
static final String CreateTable = "CREATE TABLE " + TableName + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,"
+ ColUserName + "TEXT," + ColPassword + " TEXT); ";
static class DatabaseHelperUser extends SQLiteOpenHelper {
Context context;
DatabaseHelperUser(Context context) {
super(context, DBName, null, DBVersion);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CreateTable);
Toast.makeText(context, "Database is created", Toast.LENGTH_LONG).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("Drop table IF EXISTS " + TableName);
Toast.makeText(context, "Database is updated", Toast.LENGTH_LONG).show();
onCreate(db);
}
}
public DBManager(Context context) {
DatabaseHelperUser db = new DatabaseHelperUser(context);
sqlDb = db.getWritableDatabase();
}
public long Insert(ContentValues values) {
try {
long ID = sqlDb.insert(TableName, "", values);
} catch (Exception e) {
Log.d("Error", String.valueOf(e));
}
return ID;
}
}
Tu as deux variables ID. Une quj est dans le try et dont la portée ne va pas plus loin et une en tant qu'attribut. Tu renvoies systématiquement celle qui est attribut de classe sans jamais réellement l'initialiser.
Tu as deux variables ID. Une quj est dans le try et dont la portée ne va pas plus loin et une en tant qu'attribut. Tu renvoies systématiquement celle qui est attribut de classe sans jamais réellement l'initialiser.
Bonjour, j'ai déjà modifié l'ID comme suit mais le problème était le même. Le voici:
public long Insert(ContentValues values) {
return sqlDb.insert(TableName, "", values);
}
Par contre, j'ai pu le résoudre en touchant à la variable CreateTable. Je ne sais pas vraiment ce qui a causé le problème mais j'ai simplement effacé puis retapé les mêmes instructions. Cela a résolu mon problème. Voici le nouveau variable qui a fonctionné:
static final String CreateTable = "CREATE TABLE " + TableName + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,"
+ ColUserName + " TEXT," + ColPassword + " TEXT ); ";
Tu aperçois des différences? Merci d'avance
- Edité par LucienRazafy 17 septembre 2019 à 8:57:32
Erreur lors insertion données SQLITE
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon site - Mon livre sur le XML - Mon blog