Bonsoir,
j'éprouve quelque difféculté à me conneter avec une base de donnée sqlite sous android je me suis inspiré de ce tutoriel http://a-renouard.developpez.com/tut...ndroid/sqlite/ j'ai fait trois classe les voici
classe metier User
classe pour créer la base et gérer la connexion avec la base de donnée sqlite
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 package com.example.crud; public class User { private int id; private String username; private String password; private String email; public User() { super(); } public User(int id, String username, String password, String email) { super(); this.id = id; this.username = username; this.password = password; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
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 package com.example.crud; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHandler extends SQLiteOpenHelper{ public static final String USER_KEY="idu"; public static final String USERNAME="username"; public static final String PASSWORD="password"; public static final String EMAIL="email"; public static final String TABLE="user"; public static final String TABLE_CEATE= "CREATE TABLE "+TABLE+" ("+ USER_KEY+" INTEGER PRIMARY KEY AUTOINCREMENT,"+ USERNAME+" TEXT,"+ PASSWORD+", TEXT"+ EMAIL+" TEXT);"; public static final String TABLE_DROP="DROP TABLE IF EXISTS "+TABLE+";"; public DatabaseHandler(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(TABLE_CEATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(TABLE_DROP); onCreate(db); } }
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 package com.example.crud; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class UserDAO { private static final int VERSION_BDD = 2; private static final String NOM_BDD = "users.db"; public static final String USER_KEY="idu"; public static final String USERNAME="username"; public static final String PASSWORD="password"; public static final String EMAIL="email"; public static final String TABLE="user"; public static final String TABLE_CEATE= "CREATE TABLE "+TABLE+" ("+ USER_KEY+" INTEGER PRIMARY KEY AUTOINCREMENT,"+ USERNAME+" TEXT,"+ PASSWORD+", TEXT"+ EMAIL+" TEXT);"; public static final String TABLE_DROP="DROP TABLE IF EXISTS "+TABLE+";"; static private SQLiteDatabase bdd=null; DatabaseHandler dtb; public UserDAO(Context cntx){ dtb=new DatabaseHandler(cntx, NOM_BDD, null, VERSION_BDD); } public void open(){ if(bdd!=null){ bdd=dtb.getWritableDatabase(); } } public long insertUser(User user){ ContentValues values = new ContentValues(); values.put(USERNAME, user.getUsername()); values.put(PASSWORD, user.getPassword()); values.put(EMAIL, user.getEmail()); return bdd.insert(TABLE, null, values); } public User getUser(String username){ Cursor c = bdd.rawQuery("select " + USERNAME + " from " + TABLE + " where username='?'", new String[]{username}); return cursorToLivre(c); } private User cursorToLivre(Cursor c){ //si aucun élément n'a été retourné dans la requête, on renvoie null if (c.getCount() == 0) return null; //Sinon on se place sur le premier élément c.moveToFirst(); //On créé un livre User user = new User(); //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor user.setId(c.getInt(0)); user.setUsername(c.getString(1)); user.setEmail(c.getString(3)); //On ferme le cursor c.close(); //On retourne le livre return user; } }
finalement l'activité qui appelle le tous
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 package com.example.crud; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UserDAO userd=new UserDAO(this); User user=new User(1, "login", "passwo", "email@gmail.com"); userd.open(); userd.insertUser(user); User userresultat=userd.getUser(user.getUsername()); if(userresultat != null){ //On affiche les infos du livre dans un Toast Toast.makeText(this, userresultat.toString(), Toast.LENGTH_LONG).show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
et voilà ce que m'affiche le logcat
je suis débutant sur android et je n'arrive pas à reconnaitre la source de l'erreur.Merci infiniment de votre aide
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 12-23 16:41:12.436: E/Trace(1917): error opening trace file: No such file or directory (2) 12-23 16:41:12.446: W/Trace(1917): Unexpected value from nativeGetEnabledTags: 0 12-23 16:41:12.446: W/Trace(1917): Unexpected value from nativeGetEnabledTags: 0 12-23 16:41:12.446: W/Trace(1917): Unexpected value from nativeGetEnabledTags: 0 12-23 16:41:12.606: W/Trace(1917): Unexpected value from nativeGetEnabledTags: 0 12-23 16:41:12.606: W/Trace(1917): Unexpected value from nativeGetEnabledTags: 0 12-23 16:41:13.106: D/AndroidRuntime(1917): Shutting down VM 12-23 16:41:13.106: W/dalvikvm(1917): threadid=1: thread exiting with uncaught exception (group=0xb5cb3908) 12-23 16:41:13.136: E/AndroidRuntime(1917): FATAL EXCEPTION: main 12-23 16:41:13.136: E/AndroidRuntime(1917): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.crud/com.example.crud.MainActivity}: java.lang.NullPointerException 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.app.ActivityThread.access$600(ActivityThread.java:141) 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.os.Handler.dispatchMessage(Handler.java:99) 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.os.Looper.loop(Looper.java:137) 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.app.ActivityThread.main(ActivityThread.java:5039) 12-23 16:41:13.136: E/AndroidRuntime(1917): at java.lang.reflect.Method.invokeNative(Native Method) 12-23 16:41:13.136: E/AndroidRuntime(1917): at java.lang.reflect.Method.invoke(Method.java:511) 12-23 16:41:13.136: E/AndroidRuntime(1917): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 12-23 16:41:13.136: E/AndroidRuntime(1917): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 12-23 16:41:13.136: E/AndroidRuntime(1917): at dalvik.system.NativeStart.main(Native Method) 12-23 16:41:13.136: E/AndroidRuntime(1917): Caused by: java.lang.NullPointerException 12-23 16:41:13.136: E/AndroidRuntime(1917): at com.example.crud.UserDAO.insertUser(UserDAO.java:45) 12-23 16:41:13.136: E/AndroidRuntime(1917): at com.example.crud.MainActivity.onCreate(MainActivity.java:19) 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.app.Activity.performCreate(Activity.java:5104) 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 12-23 16:41:13.136: E/AndroidRuntime(1917): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 12-23 16:41:13.136: E/AndroidRuntime(1917): ... 11 more
Partager