J'ai une application Monodroid. où j'utilise Mono.Data.SQLite et Sytem.Data afin de se connecter à une base de données SQLite. Si je crée la base de données de manière programmatique cela fonctionne très bien, mais si je place ma base de données "test.db" dans le dossier Assets et que j'essaie de la copier, j'obtiens une exception FileNotFoundException. Ci-dessous le code que j'utilise pour essayer de copier la base de données et ensuite me connecter.Monodroid comment copier la base de données
public class Activity1 : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
TextView tv = new TextView(this);
string dbPath = Path.Combine(
System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),
"test.db");
bool exists = File.Exists(dbPath);
if (!exists)
SqliteConnection.CreateFile(dbPath);
var connection = new SqliteConnection("Data Source=" + dbPath);
connection.Open();
if (!exists)
{
Stream myInput = Assets.Open("test.db");
String outFileName = dbPath + "test.db";
Stream myOutput = new FileStream(outFileName, FileMode.OpenOrCreate);
byte[] buffer = new byte[1024];
int b = buffer.Length;
int length;
while ((length = myInput.Read(buffer, 0, b)) > 0)
{
myOutput.Write(buffer, 0, length);
}
myOutput.Flush();
myOutput.Close();
myInput.Close();
}
using (var contents = connection.CreateCommand())
{
contents.CommandText = "SELECT [Field1], [Field2] from [Table]";
var r = contents.ExecuteReader();
while (r.Read())
tv.Text += string.Format("\n\tField1={0}; Field2={1}",
r["Field1"].ToString(), r["Field2"].ToString());
}
connection.Close();
SetContentView(tv);
}
}
}
Merci beaucoup! Une fois l'action de construction a été définie et le + "test.db" a été supprimé après dbpath tout a fonctionné comme prévu :). Maintenant, j'ai juste besoin de le nettoyer, et de déplacer la connexion comme suggéré. –