IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Importation fichier .sql


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut Importation fichier .sql
    Bonjour,

    j'essaie de récupérer un fichier SQL depuis les assets. J'ai suivit le tutorial suivant :
    http://www.julienlabeaume.com/blog/7...nees-statiques

    Ma classe gérant la connexion avec la BD.

    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
    package historySensei.SenseiDev.bd;
     
    import java.io.InputStream;
    import tools.FileHelper;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
     
    public class HistoryDbHelper extends SQLiteOpenHelper
    {
    	private static final String TABLE_PLAYER = "table_player";
    	private static final String COL_ID = "_id";
    	private static final String COL_ID_PLAYER = "id_player";
    	private static final String COL_EPOCH = "epoch";
    	private static final String COL_SCORE = "score";
    	private Context myContexte;
     
     
    	private static final String CREATE_BDD = "CREATE TABLE " + TABLE_PLAYER + " ("
    	+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_ID_PLAYER + " NUMERIC, "
    	+ COL_EPOCH + " NUMERIC, " + COL_SCORE + " NUMERIC);";
     
    	public HistoryDbHelper(Context context, String name, CursorFactory factory, int version) {
    		super(context, name, factory, version);
    		myContexte = context;
    	}
     
    	@Override
    	public void onCreate(SQLiteDatabase db) 
    	{
    		Log.v("Debug", "On create 1");
    		//db.execSQL(CREATE_BDD);
    		try 
    		{
    			InputStream is = myContexte.getResources().getAssets().open("install.sql");
    			Log.v("Debug", "On create 2");
    			String[] statements = FileHelper.parseSqlFile(is);
     
    			for (String statement : statements) 
    			{
    				Log.v("Debug", "" + statement);
    	        	db.execSQL(statement); 
    			}
    		} 
    		catch (Exception ex) 
    		{
    			ex.printStackTrace();
    		}
    	}
    }
    La seconde gérant les insert/update... :

    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
    package historySensei.SenseiDev.bd;
     
    // Import / nom colonnes enlevé pour la lisibilité.
     
    public class PlayerDb 
    {
    	// private Context myContext;
    	private HistoryDbHelper m_historyDb;
    	private SQLiteDatabase m_bdd;
     
    	public PlayerDb(Context _context)
    	{
    		Log.v("Debug", "Constructeur");
    		m_historyDb = new HistoryDbHelper(_context, NOM_BDD, null, VERSION_BDD);
    		m_historyDb.onCreate(m_bdd);
    	}
     
     
    	public void open()
    	{
    		Log.v("Debug", "open");
    		m_bdd = m_historyDb.getWritableDatabase();
    	}
     
    	public void close()
    	{
    		m_bdd.close();
    	}
    Et l'activité utilisant la bd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class ActStoryMode extends Activity
    {
    	private PlayerDb playerDb;
    	 /** Called when the activity is first created. */
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.storymode);
     
            Log.v("Debug", "New player");
            playerDb = new PlayerDb(this);
            Log.v("Debug", "Open");
            playerDb.open();
    Lorsque je lance l'application je reçoit le message :
    08-25 16:51:03.354: I/Database(32491): sqlite returned: error code = 1, msg = statement aborts at 2: [BEGIN TRANSACTION] cannot start a transaction within a transaction
    Et voici mon log, avec le premier statement que j'envoie "BEGIN TRANSACTION" :

    08-25 16:51:03.344: V/Debug(32491): On create 1
    08-25 16:51:03.344: V/Debug(32491): On create 2
    08-25 16:51:03.354: V/Debug(32491): BEGIN TRANSACTION
    08-25 16:51:03.354: I/Database(32491): sqlite returned: error code = 1, msg = statement aborts at 2: [BEGIN TRANSACTION] cannot start a transaction within a transaction
    08-25 16:51:03.354: E/Database(32491): Failure 1 (cannot start a transaction within a transaction) on 0x2e4270 when executing 'BEGIN TRANSACTION'
    08-25 16:51:03.354: W/System.err(32491): android.database.sqlite.SQLiteException: cannot start a transaction within a transaction: BEGIN TRANSACTION
    08-25 16:51:03.354: W/System.err(32491): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
    08-25 16:51:03.354: W/System.err(32491): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1771)
    08-25 16:51:03.354: W/System.err(32491): at historySensei.SenseiDev.bd.HistoryDbHelper.onCreate(HistoryDbHelper.java:56)
    08-25 16:51:03.354: W/System.err(32491): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:126)
    Si j'utilise la méthode standard (sans source d'un fichier), cela fonctionne bien. Je suis complétement perdu, et je ne trouve rien sur google...

    Merci de votre aide.

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut
    Je ne sais pas d'où vient vraiment le problème, mais on doit débuter une transaction par :
    Le problème vient ensuite du fait que l'on ne peut pas utiliser le fichier généré par "SQLite Database brower".

    La solution est soit de supprimer la ligne "begin transaction" du fichier de commande sql.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importation fichier SQL
    Par aure298 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 15/07/2008, 23h25
  2. Importation fichier SQL ?
    Par Blaireau dans le forum Outils
    Réponses: 3
    Dernier message: 26/01/2007, 22h12
  3. importer fichier .SQL généré par mysql vers MSSqlServer 2005
    Par Themacleod1980 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2007, 15h49
  4. [importer fichier sql]
    Par maniolo dans le forum Oracle
    Réponses: 3
    Dernier message: 13/06/2006, 19h07
  5. Importation fichier .sql
    Par Mevil dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 20/04/2006, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo