Bonjour,
voila j'ai le modèle physique des données suivants:
Drapeau(pays,image)
Associer(#pays,#numquizz,sens)
Quizz(numero)
Comme vous pouvez le voir j'ai une clé primaire composer avec des clé étrangère.
J'ai générer les modeles suivant:
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 @DatabaseTable(tableName = "drapeau") public class Drapeau { @DatabaseField(id = true) private String pays; @DatabaseField private String image; public Drapeau() { } public Drapeau(String pays, String image) { this.pays = pays; this.image = image; } public String getPays() { return pays; } public String getImage() { return image; } public void setPays(String pays) { this.pays = pays; } public void setImage(String image) { this.image = image; } }
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 @DatabaseTable(tableName="quizz") public class Quizz { @DatabaseField (generatedId = true) private int numero; //Constructeur sans arguments obligatoire public Quizz(){ } //Getter pour le numero du quizz public int getNumero() { return numero; } public void setNumero(int numero) { this.numero = numero; } }Je ne c'est pas trop comment dire au modèle associer que les clés étrangère composer sont primaire.
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 @DatabaseTable(tableName = "associer") public class Associer { @DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true, uniqueCombo = true) Drapeau drapeaux; @DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true, uniqueCombo = true) Quizz quizzs; @DatabaseField private int sens; public Associer() { } public Associer(Drapeau drapeaux, Quizz quizzs, int sens) { this.drapeaux = drapeaux; this.quizzs = quizzs; this.sens = sens; } public int getSens() { return sens; } public Drapeau getDrapeaux() { return drapeaux; } public Quizz getQuizzs() { return quizzs; } public void setDrapeaux(Drapeau drapeaux) { this.drapeaux = drapeaux; } public void setQuizzs(Quizz quizzs) { this.quizzs = quizzs; } public void setSens(int sens) { this.sens = sens; } }
De plus voici ma connexion:
J'aimerai peupler ma base via le MainActivity:
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 public class DBConnection extends OrmLiteSqliteOpenHelper{ public Dao<Drapeau, String> daoDrapeau; public Dao<Quizz, Integer> daoQuizz; public Dao<Associer, Pair<Drapeau, Quizz>> daoAssocierPair; //CONSTRUCTEUR qui initialise nos Dao public DBConnection(Context context, String databaseName, SQLiteDatabase.CursorFactory factory, int databaseVersion) { super(context, databaseName, factory, databaseVersion); Log.i("DATABASE","Constructeur DBConnection invoked"); } //CREATION des tables de notre bases de données @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Drapeau.class); TableUtils.createTable(connectionSource, Quizz.class); TableUtils.createTable(connectionSource, Associer.class); } catch (SQLException e) { e.printStackTrace(); } Log.i("DATABASE","Création des tables ok"); } @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { try { TableUtils.dropTable(connectionSource, Associer.class,true); TableUtils.dropTable(connectionSource, Drapeau.class, true); TableUtils.dropTable(connectionSource, Quizz.class, true); } catch (SQLException e) { e.printStackTrace(); } } public Dao<Drapeau, String> getDaoDrapeau() throws SQLException{ if (daoDrapeau == null){ daoDrapeau = getDao(Drapeau.class); } return daoDrapeau; } public Dao<Quizz, Integer> getDaoQuizz() throws SQLException { if (daoQuizz == null) { daoQuizz = getDao(Quizz.class); } return daoQuizz; } public Dao<Associer, Pair<Drapeau, Quizz>> getDaoAssocierPair() throws SQLException { if (daoAssocierPair == null){ daoAssocierPair = getDao(Associer.class); } return daoAssocierPair; } }
Mes tables Drapeau et Quizz ce remplisse bien, mais je n'arrive pas à remplir la table associer, pouvez-vous m'aider.
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 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DBConnection dbConnection = new DBConnection(this, "newbase.db", null, 1); Drapeau allemagne = new Drapeau("Allemagne","http://www.geognos.com/api/en/countries/flag/FR.png"); Quizz quizz2 = new Quizz(); try { dbConnection.getDaoDrapeau().createIfNotExists(allemagne); dbConnection.getDaoQuizz().createIfNotExists(quizz2); // DBConnection.daoAssocierPair.createIfNotExists(associer); } catch (SQLException e) { e.printStackTrace(); } Associer associer = new Associer(); associer.setDrapeaux(allemagne); associer.setQuizzs(quizz2); associer.setSens(1); try { dbConnection.getDaoAssocierPair().createIfNotExists(associer); } catch (SQLException e) { e.printStackTrace(); }
Merci
Partager