Bonjour, j'essaye depuis quelques jours de réaliser le tutoriel suivant:
http://www.reigndesign.com/blog/usin...-applications/

pour me connecter à ma base de données SQLite déja existante.
et voila la classe utilisé:

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test.test.test;
import java.util.ArrayList;
import java.util.List;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.util.Log;
import java.io.*;
 
public class TechAgrumeSQLiteHelper extends SQLiteOpenHelper {    
 
 
 
      //The Android's default system path of your application database.
    private static String DB_PATH = "/data/data/test.test.test/databases/";
 
    private static String DB_NAME = "Player_Club";
 
    private SQLiteDatabase myDataBase; 
 
    private final Context myContext;
    private static final String TABLE_PLAYERS = "Player";
    private static final int DATABASE_VERSION = 3;
    // Contacts Table Columns names
    private static final String KEY_CODE = "_id";
    private static final String KEY_NOM = "nom_Player";
    private static final String KEY_SURNOM = "surnom_Player";
    private static final String KEY_AGE = "age_Player";
 
    /**
     * Constructor
     * Takes and keeps a reference of the passed context in order to access to the application assets and resources.
     * @param context
     */
    public TechAgrumeSQLiteHelper(Context context) {
 
    	super(context, DB_NAME, null, 1);
        this.myContext = context;
        Log.d("I'm here: ","I'm here!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        boolean dbExist = checkDataBase();
    	if(dbExist){
    		//do nothing - database already exist
            Log.d("Copy BD","database already exist!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    	}else{
 
    		//By calling this method and empty database will be created into the default system path
               //of your application so we are gonna be able to overwrite that database with our database.
        	this.getReadableDatabase();
 
        	try {
 
    			copyDataBase();
                        Log.d("Copy BD","Datbase copied!!!!!!!!!!!!!!!!!!!!!!!!!!!");
 
    		} catch (IOException e) {
 
        		throw new Error("Error copying database");
 
        	}
    	}
    }	
 
  /**
     * Creates a empty database on the system and rewrites it with your own database.
     * */
    public void createDataBase() throws IOException{
 
 
 
    }
 
    /**
     * Check if the database already exist to avoid re-copying the file each time you open the application.
     * @return true if it exists, false if it doesn't
     */
    private boolean checkDataBase(){
 
    	SQLiteDatabase checkDB = null;
 
    	try{
    		String myPath = DB_PATH + DB_NAME;
    		checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 
    	}catch(SQLiteException e){
 
    		//database does't exist yet.
 
    	}
 
    	if(checkDB != null){
 
    		checkDB.close();
 
    	}
 
    	return checkDB != null ? true : false;
    }
 
    /**
     * Copies your database from your local assets-folder to the just created empty database in the
     * system folder, from where it can be accessed and handled.
     * This is done by transfering bytestream.
     * */
    private void copyDataBase() throws IOException{
 
    	//Open your local db as the input stream
    	InputStream myInput = myContext.getAssets().open(DB_NAME);
 
    	// Path to the just created empty db
    	String outFileName = DB_PATH + DB_NAME;
 
    	//Open the empty db as the output stream
    	OutputStream myOutput = new FileOutputStream(outFileName);
 
    	//transfer bytes from the inputfile to the outputfile
    	byte[] buffer = new byte[1024];
    	int length;
    	while ((length = myInput.read(buffer))>0){
    		myOutput.write(buffer, 0, length);
    	}
 
    	//Close the streams
    	myOutput.flush();
    	myOutput.close();
    	myInput.close();
 
    }
 
    public void openDataBase() throws SQLException{
 
    	//Open the database
        String myPath = DB_PATH + DB_NAME;
    	myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 
    }
 
    @Override
	public synchronized void close() {
 
    	    if(myDataBase != null)
    		    myDataBase.close();
 
    	    super.close();
 
	}
 
	@Override
	public void onCreate(SQLiteDatabase db) {
 
	}
 
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
	}
 
        // Add your public helper methods to access and get content from the database.
       // You could return cursors by doing "return myDataBase.query(....)" so it'd be easy
       // to you to create adapters for your views.
 
 
 
        void addPlayer(Player player) {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put(KEY_NOM, player.getNom_Player()); // Contact Name
            values.put(KEY_SURNOM, player.getSurnom_Player()); // Contact Phone
            values.put(KEY_AGE, player.getAge_Player()); // Contact Phone
 
            // Inserting Row
            db.insert(TABLE_PLAYERS, null, values);
            db.close(); // Closing database connection
        }
 
        public List<Player> getAllPlayers() {
            List<Player> playerList = new ArrayList<Player>();
            // Select All Query
            String selectQuery = "SELECT  * FROM " + TABLE_PLAYERS;
 
            SQLiteDatabase db = this.getWritableDatabase();
            Cursor cursor = db.rawQuery(selectQuery, null);
 
            // looping through all rows and adding to list
            if (cursor.moveToFirst()) {
                do {
                    Player player = new Player();
                    player.setCode_Player(Integer.parseInt(cursor.getString(0)));
                    player.setNom_Player(cursor.getString(1));
                    player.setSurnom_Player(cursor.getString(2));
                    player.setAge_Player(Integer.parseInt(cursor.getString(3)));
                    // Adding contact to list
                    playerList.add(player);
                } while (cursor.moveToNext());
            }
 
            // return contact list
            return playerList;
        }
 
}
et voila la classe

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
public class MainActivity extends Activity {
 
 
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    TechAgrumeSQLiteHelper db=new TechAgrumeSQLiteHelper(this);
    //this.deleteDatabase("Player_Club.db");
    // Inserting Contacts
        Log.d("Insert: ", "Inserting ................................................");
        db.addPlayer(new Player("nom1", "prénom1",25));
        db.addPlayer(new Player("nom2", "prénom2",24));
        db.addPlayer(new Player("nom3", "prénom3",26));
        db.addPlayer(new Player("nom4", "prénom4",16));
 
        // Reading all contacts
        Log.d("Reading: ", "Reading all contacts..");
        List<Player> player = db.getAllPlayers();       
 
        for (Player cn : player) {
            String log = "Id: "+cn.getCode_Player()+" ,Name: " + cn.getNom_Player() + " ,Phone: " + cn.getSurnom_Player()+"  ,Age: "+cn.getAge_Player();
                // Writing Contacts to log
        Log.d("Name: ", log);}}
}
ça donne une erreur assez bizarre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
D/J ss:   ( 6548): J ss la!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
D/KeyguardViewMediator(  216): setHidden false
D/Copie BD( 6548): la BD déja existe!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
D/Insert: ( 6548): Inserting ................................................
I/SqliteDatabaseCpp( 6548): sqlite returned: error code = 1, msg = no such table: Player, db=/data/data/test.test.test/databases/webview.db
E/SQLiteDatabase( 6548): Error during inserting
E/SQLiteDatabase( 6548): android.database.sqlite.SQLiteException: no such table: Player: , while compiling: INSERT INTO Player(surnom_Player,nom_Player,age_Player) VALUES (?,?,?)
le nom de ma base de données et Player_Club.db je vois pas d'où viens le webview.db.
Merci d'avance.