2009-10-09 8 views
5

Sería genial obtener alguna dirección para tratar de usar sqlite para mi aplicación WinForms que estoy desarrollando en VS2008.Uso de SQLite con la aplicación C# winforms: ¿algunas preguntas básicas?

  1. Instalación - ¿Es sólo soltar el archivo "System.Data.SQLite.DLL" en alguna carpeta en mi proyecto VS2008 (por ejemplo, crear una carpeta para ello), y luego crear una "referencia" a ella? He hecho la propiedad de la referencia CopyGlobal = TRUE. ¿Es la idea de que cuando despliegue mi aplicación esto debería funcionar (por ejemplo, implementar la DLL para la aplicación)

  2. Base de datos inicial - ¿Tengo que crear una base de datos inicial o no? Veo el código mencionado más abajo en el archivo de Ayuda, pero ¿cuál es el DB al que se conecta realmente y dónde estaría el archivo DB?

    DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite"); 
    using (DbConnection cnn = fact.CreateConnection()) 
    { 
        cnn.ConnectionString = "Data Source=test.db3"; 
        cnn.Open(); 
    } 
    
  3. ¿Qué métodos de usar - Es esto por lo general de cómo iba a utilizar/hacer llamadas?

    DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite"); 
    using (DbConnection myconnection = fact.CreateConnection()) 
    { 
        myconnection.ConnectionString = "Data Source=test.db3"; 
        myconnection.Open(); 
        SQLiteTransaction mytransaction = SQLiteTransaction)myconnection.BeginTransaction(); 
        SQLiteCommand mycommand = new SQLiteCommand((SQLiteConnection)myconnection); 
        mycommand.CommandText = "SELECT * FROM SYSTEM"; 
        mycommand.ExecuteNonQuery(); 
        mytransaction.Commit(); 
        myconnection.Close(); 
    } 
    
  4. ¿Cómo configuro las tablas de la base de datos? ¿Haría esto y lo almacenaría en mi proyecto VS2008 como plantilla? ¿O desearía automatizar la creación de la base de datos en código si no estuviera allí?

  5. Si la idea de 4 es establecer tablas antes, ¿dónde almacenaría este archivo de base de datos inicial? de modo que cuando ejecuto el proyecto para probarlo y luego uso el archivo de la base de datos, el que estoy probando se elimina después. Supongo que estoy preguntando cómo asegurar que tengo una base de datos separada pero configurada (con tablas) como "fuente" en mi proyecto VS2008, pero luego cuando la ejecuto/depuro, tomaría una copia de esto para usarla en las pruebas ?

Gracias

+0

tenga en cuenta por qué - pero no se puede obtener el código Q3 para mostrar bien – Greg

Respuesta

4
  1. Sí. SQLite es una base de datos de implementación de xcopy; no hay registro y su aplicación solo necesita el dll para usarlo.

  2. La base de datos se especifica en la cadena de conexión. En este caso particular, está en el archivo test.db3 en la carpeta de trabajo de la aplicación.

  3. Es posible que desee almacenar en caché la conexión a la base de datos para evitar la costosa operación de abrirla cada vez que necesite acceder a ella. Además, no estoy seguro de por qué necesita una transacción, ya que todo lo que hace es leer de la base de datos.

  4. Tiene dos opciones: almacenar la base de datos vacía con el esquema previamente creado y copiarla en el directorio de salida durante el proceso de compilación; o cree un conjunto de scripts SQL para ejecutar contra la base de datos desde su código en la primera conexión a la base de datos. El que elija depende de si desea que su aplicación sea responsable de crear el esquema o su proceso de compilación.

  5. Si crea una base de datos vacía con el esquema previamente creado, puede agregarla como un archivo a lo largo de sus fuentes e indicar a VS que la copie en el directorio de salida (como ya lo mencioné).

+0

thansk Franci - ¿me puede dar un rápido indicador de dónde en VS2008 yo organizaría el "instructivo VS"? copiarlo en el directorio de salida "? – Greg

+1

En VS2005 puede hacer esto seleccionando el archivo en "Solution Explorer" y en "Propiedades" cambiando la propiedad "Copiar al directorio de salida" a "Copiar siempre" o "Copiar si es nuevo". En VS2008 debería ser lo mismo. – Agg

+0

Sí, como @Agg dijo, usted hace esto a través de las propiedades del archivo en el explorador de soluciones. –

2

casi siempre uso el uso de este modo:

using (DbConnection conn = new SQLiteConnection(...)) { 
    using (DbTransaction tran = conn.BeginTransaction()) { 
     using (DbCommand comm = conn.CreateCommand()) { 
      ... 
     } 
     tran.Commit(); 
    } 
    conn.Close(); 
} 

Para hacer sqlite realizar usted tiene que utilizar las transacciones para insertar, actualizar y borrar y hay que utilizar consultas paramaterized. Las consultas concatenadas son mucho más lentas: How do I get around the "'" problem in sqlite and c#?

Cuestiones relacionadas