2012-09-28 8 views
2

J'essaie de faire une connexion très basique à une base de données sqlite v3 et j'utilise monodevelop 3.0 et Mono 2.10 et je suis incapable de me connecter à la base de données. Je peux faire en sorte que l'application crée la base de données, mais elle échoue immédiatement en essayant de s'y connecter. Aucune suggestion? J'avais commencé avec une base de données différente, mais j'ai ensuite décidé de faire en sorte que mon application tente de créer une base de données vide, puis de s'y connecter. Cela semble toujours échouer.Mono ne peut pas ouvrir la base de données sqlite

SqliteConnection.CreateFile("db\\DataWorksProg.s3db"); 
SqliteConnection conn = new SqliteConnection("Data Source=file:db\\DataWorksProg.s3db"); 
conn.Open(); 

Ce petit morceau de code échoue avec une erreur de ne pas être en mesure d'ouvrir le fichier de base de données.

Mono.Data.Sqlite.SqliteException: Unable to open the database file 

Les autorisations semblent OK et j'ai le Sqlite3.dll dans le projet, et il semble fonctionner correctement. Ai-je manqué quelque chose d'évident? Je suis plutôt bon côté Visual Studio, mais je travaille encore assez récemment dans un environnement Mono/Monodevelop.

Répondre

0

cernées mon problème ici. Apparemment, au lieu d'utiliser

"Data Source=file:db\\DataWorksProg.s3db" 

Je l'ai utilisé

"URI=file:db\\DataWorksProg.s3db" 

Switched à l'URI et il fonctionne comme prévu. J'avais pensé à la lecture des docs que sous le profil 2.0, la partie DataSource était nécessaire à la place de l'URI, mais j'ai obtenu les résultats que je cherchais.

4

Quelle plateforme?

Je ne crois pas que vous ayez besoin de créer un fichier. Si ce n'est pas trouvé, iirc, ça va faire le fichier de base de données.

FWIW, sur un Mac, je fais (note URI à un joli chemin standard, je ne l'ai pas utilisé Data Source) ...

using System; 
using System.Data; 
using Mono.Data.Sqlite; 

namespace test 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      IDbConnection conTemp = null; 
      IDbCommand cmdTemp = null; 

      conTemp = (IDbConnection)new SqliteConnection ("URI=file:/Users/userName/mnmh.db"); 
      conTemp.Open(); 
      cmdTemp = conTemp.CreateCommand();   
      cmdTemp.CommandText = "SELECT * FROM employee"; 
      IDataReader drTemp = cmdTemp.ExecuteReader(); 
      while (drTemp.Read()) { 
       Console.WriteLine (drTemp.GetString (0)); 
      } 


     } 
    } 
} 

etc etc

Vérifier l'évidence - - vous avez parlé tous les trucs que vous utilisez, etc.

references required

+0

en ce qui concerne la plate-forme, en s'appuyant sur Windows en ce moment, et c'est là que j'ai des problèmes, mais j'espère déployer Linux ion – Adam

Questions connexes