Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > SQLite
SQLite Forum d'entraide SQLite
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/01/2012, 11h50   #1
Futur Membre du Club
 
Inscription : mai 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 10
Points : 15
Points : 15
Par défaut Online backup (VB.NET)

Bonjour (et meilleurs vœux )

J'utilise SQLite depuis deux environ pour remplacer MSAccess sur la plupart des projets locaux qui me passe entre les mains avec bonheur (et celui des utilisateurs aussi ).

Actuellement, je travaille sur un projet ou la vitesse de réponse est primordiale et je voudrait faire des tests avec une base en mémoire. J'utilise pour cela le online backup (http://www.sqlite.org/c3ref/backup_finish.html et http://www.sqlite.org/backup.html)

Voici le code que j'ai créé :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
        ''test pour backup en memoire
        <DllImport("sqlite3", CallingConvention:=CallingConvention.Cdecl)> _
        Friend Shared FUNCTION sqlite3_backup_init(ByVal Pdest AS IntPtr, <MarshalAs(UnmanagedType.LPWStr)> ByVal destname AS String, Psource AS IntPtr, <MarshalAs(UnmanagedType.LPWStr)> ByVal sourcename AS String) AS IntPtr
        End FUNCTION
        <DllImport("sqlite3", CallingConvention:=CallingConvention.Cdecl)> _
        Friend Shared FUNCTION sqlite3_backup_step(ByVal Pbackup AS IntPtr, page AS Integer) AS Integer
        End FUNCTION
        <DllImport("sqlite3", CallingConvention:=CallingConvention.Cdecl)> _
        Friend Shared FUNCTION sqlite3_backup_finish(ByVal Pbackup AS IntPtr) AS Integer
        End FUNCTION
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
                Dim result AS Integer = 0
                Dim database1 AS IntPtr = IntPtr.Zero
                Dim database2 AS IntPtr = IntPtr.Zero
                Dim objbackup AS IntPtr = IntPtr.Zero
                result = SafeNativeMethods.sqlite3_open16(BDDPath & "db_progs2.db3", database1)
                result = SafeNativeMethods.sqlite3_open16(":memory:", database2) 
 
                objbackup = SafeNativeMethods.sqlite3_backup_init(database2, "main", database1, "main") <-- erreur !
                IF objbackup = IntPtr.Zero Then
                    Dim rc AS Integer = SafeNativeMethods.sqlite3_errcode(database2)
                    Throw New Exception("Code erreur= " & rc.ToString)
                Else
                    SafeNativeMethods.sqlite3_backup_step(objbackup, -1)
                    SafeNativeMethods.sqlite3_backup_finish(objbackup)
                    SafeNativeMethods.sqlite3_close(database1)
 
                End IF
J'ai un code erreur 1 (SQL error or missing database ) sur le sqlite3_backup_init. La base fichier est bien ouverte et la base memoire est bien créé.

Cela fait trois jours que je galère la dessus. J'ai essayé de créer la même structure en mémoire qu'en fichier, etc, etc ...

Bien sur, l'erreur doit-être jusque sous mes yeux, mais je n'ai plus d'idée .

Merci de l'aide que vous pourrez donner et encore meilleurs vœux !
rvs75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 14h54   #2
Futur Membre du Club
 
Inscription : mai 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 10
Points : 15
Points : 15
Je réponds à moi-même

Voici les corrections :
Code :
1
2
3
<DllImport("sqlite3", CallingConvention:=CallingConvention.Cdecl)> _
        Friend Shared FUNCTION sqlite3_backup_init(ByVal Pdest AS IntPtr, ByVal destname AS Byte(), Psource AS IntPtr, ByVal sourcename AS Byte()) AS IntPtr
        End FUNCTION
Code :
1
2
3
                Dim toto AS Byte() = Encoding.UTF8.GetBytes("main")
 
                objbackup = SafeNativeMethods.sqlite3_backup_init(database2, toto, database1, toto)
rvs75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h01.


 
 
 
 
Partenaires

Hébergement Web