Bonjour à tous, pour mon projet android, je dois rendre une application fonctionnelle.
Pour cela, j'ai choisi entre autre de faire une application qui permet aux utilisateurs de créer leur compte et de créer/partager des "party".
Chaque utilisateur possède son propre compte et peut se créer une liste de contact.
Pour cela j'ai créé une base de donnée DatabaseUser qui enregistre les données liées à chaque compte utilisateur et une base de donnée DatabaseContact qui enregistre les contacts dans le répertoire.
Seulement, je ne sais pas comment faire en sorte que les contacts enregistrés par l'utilisateur A reste à l'utilisateur A et donc ne soit pas affiché à l'utilisateur B.
Après plusieurs recherches, je pense devoir utiliser la technique Join-Table together. J'attribuerais donc à ma DatabaseContact possédant jusqu'à présent qu'une colonne une deuxième colonne qui posséderait le numéro de l'utilisateur.
Le problème est que je ne vois pas comment récupérer ce numéro (l'id utilisateur de DatabaseUser) pour que quand la personne enregistre un contact celui ci ce vois le bon numéro attribué.
Cela me servirais du coup aussi à afficher les bons contacts.
Je vous joins mes deux bdd si ça peut vous aider à m'aider :
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 public class DataBaseContact extends SQLiteOpenHelper{ private static final String DATABASE_NAME = "Contact.db"; private static final String CONTACT_NAME = "contact_table"; private static final String COL_1 = "PSEUDO"; private static final String COL_2 = "USER"; public DataBaseContact(@Nullable Context context){ super(context, DATABASE_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase dbC) { dbC.execSQL("create table " + CONTACT_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, PSEUDO TEXT, USER INT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + CONTACT_NAME); onCreate(db); } boolean insertPseudo(String pseudo,Integer user) { SQLiteDatabase dbC = this.getWritableDatabase(); ContentValues contentPseudo = new ContentValues(); contentPseudo.put(COL_1,pseudo); contentPseudo.put(COL_2,user); if (!checkPseudoContact(pseudo)) { long result = dbC.insert(CONTACT_NAME, null, contentPseudo); if (result == -1) return false; else return true; } else return false; } public Cursor viewContact() { SQLiteDatabase db = this.getWritableDatabase(); Cursor res = db.rawQuery("Select * from " + CONTACT_NAME, null); return res; } private boolean checkPseudoContact(String pseudo) { SQLiteDatabase db = this.getReadableDatabase(); String savePseudo = null; Cursor c = db.rawQuery("SELECT * FROM contact_table WHERE pseudo = '"+pseudo+"'", null); int pseudoIndex = c.getColumnIndex("PSEUDO"); c.moveToFirst(); if (c.moveToFirst()) { savePseudo = c.getString(pseudoIndex); return savePseudo.equals(pseudo); } else return false; } public Integer deleteData(String pseudo) { SQLiteDatabase db = this.getWritableDatabase(); return db.delete(CONTACT_NAME,"PSEUDO = ?",new String[] {pseudo}); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 public class DatabaseUser extends SQLiteOpenHelper { private static final String DATABASE_NAME = "User.db"; private static final String TABLE_NAME = "user_table"; private static final String COL_1 = "NAME"; private static final String COL_2 = "SURNAME"; private static final String COL_3 = "EMAIL"; private static final String COL_4 = "PSEUDO"; private static final String COL_5 = "PASSWORD"; public DatabaseUser(@Nullable Context context){ super(context, DATABASE_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT, SURNAME TEXT,EMAIL TEXT, PSEUDO TEXT, PASSWORD TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } boolean insertData(String name, String surname, String email, String pseudo, String password) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(COL_1,name); contentValues.put(COL_2,surname); contentValues.put(COL_3,email); contentValues.put(COL_4,pseudo); contentValues.put(COL_5,password); long result = db.insert(TABLE_NAME,null,contentValues); if (result == -1) return false; else return true; } public Cursor viewData() { SQLiteDatabase db = this.getWritableDatabase(); Cursor res = db.rawQuery("Select * from " + TABLE_NAME, null); return res; } boolean checkIfUserExist(String email, String password) { SQLiteDatabase db = this.getReadableDatabase(); String savedEmail = null; String savedPassword = null; Cursor c = db.rawQuery("SELECT * FROM user_table WHERE email = '"+email+"'", null); int emailIndex = c.getColumnIndex("EMAIL"); int passwordIndex = c.getColumnIndex("PASSWORD"); c.moveToFirst(); if (c.moveToFirst()) { savedEmail = c.getString(emailIndex); savedPassword = c.getString(passwordIndex); if (savedEmail.equals(email)){ return savedPassword.equals(password); } else return false; } else return false; } boolean checkPseudo(String pseudo) { SQLiteDatabase db = this.getReadableDatabase(); String savePseudo = null; Cursor c = db.rawQuery("SELECT * FROM user_table WHERE pseudo = '"+pseudo+"'", null); int pseudoIndex = c.getColumnIndex("PSEUDO"); c.moveToFirst(); if (c.moveToFirst()) { savePseudo = c.getString(pseudoIndex); return savePseudo.equals(pseudo); } else return false; } }
Voici ce que j'ai essayé de faire pour récupérer l'id utilisateur : (cela me retourne 1 peut importe l'utilisateur donc problème)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int idRecover() { SQLiteDatabase db = this.getReadableDatabase(); Cursor c = db.rawQuery("SELECT * FROM user_table WHERE id ", null); int pseudoIndex = c.getColumnIndex("ID"); int saveid = -1; if (c.moveToFirst()) { return saveid = c.getInt(pseudoIndex); } return -1; }
J'espère de tout coeur que quelqu'un va pouvoir m'aider car je suis vraiment bloqué à ce niveau là et tous le reste de mon application sera basé sur cette méthode...
Et il ne me reste plus beaucoup de temps pour la concevoir...
Cordialement,
Lisa Duterte
Partager