2009-10-09 7 views
5

は、私はVS2008で構築しています私のWinFormsアプリケーションのためのsqliteを使用しようとして再いくつかの方向性を得るために素晴らしいことです。C#winformsアプリケーションでSQLiteを使用する - 基本的な質問?

  1. インストールが - それだけで(例えば、それ用のフォルダを作成します)私のVS2008のプロジェクトにいくつかのフォルダに「System.Data.SQLite.DLL」ファイルをドロップして、それを「参照」を作成しますか?私は参照CopyGlobal = TRUEのプロパティを作った。私は自分のアプリケーションを展開するときに、これは(例えば、アプリケーションのDLLを配備)動作するはずだという考えがある

  2. 初期データベース - 私は、最初のデータベースを作成するために持っているか、いませんか?私は、ヘルプファイルには、以下のコードが表示されますが、実際に接続するDBはどこですか?DBファイルはどこですか?

    DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite"); 
    using (DbConnection cnn = fact.CreateConnection()) 
    { 
        cnn.ConnectionString = "Data Source=test.db3"; 
        cnn.Open(); 
    } 
    
  3. どのような方法を使用する - これは私が使用する方法/電話をかけることが一般的ですか?

    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. どのようにデータベーステーブルを設定しますか?これをしてVS2008プロジェクトにテンプレートとして保存しますか?または、データベースにコードがない場合は、自動的にデータベースを作成したいと思いますか?私はこの最初のデータベースファイルを格納します

  5. 4からのアイデアは、セットアップテーブルの前にある場合は、?プロジェクトを実行してテストした後、データベースファイルを使用すると、私がテストしているものが後で廃棄されるようになります。私は私が私のVS2008のプロジェクトでは、「ソース」として空白の別々であるが構成された(テーブル付)データベースを持っていることを確認する方法を求めていると思いますが、私は/デバッグを実行すると、次に、それは、テストで使用するために、こののコピーを取ります?

おかげ

+0

よくある質問 - Q3コードをうまく表示するためにQ3コードを表示できない – Greg

答えて

4
  1. はい。 SQLiteはxcopy-deploymentデータベースです。登録はなく、あなたのアプリはそれを使用するためにdllだけを必要とします。

  2. データベースが接続文字列で指定されています。この特定のケースでは、アプリケーション作業フォルダ内のtest.db3ファイルにあります。

  3. アクセスが必要なたびにデータベースを開くという高価な操作を避けるために、データベースへの接続をキャッシュします。また、なぜトランザクションが必要なのか分かりません。なぜなら、単にデータベースから読み込んだだけなのでです。

  4. 空のデータベースを事前作成されたスキーマで保存し、ビルドプロセス中に出力ディレクトリにコピーするか、データベースへの最初の接続時にコードからデータベースに対して実行する一連のSQLスクリプトを作成します。どちらを選択するかは、アプリケーションでスキーマを作成するか、ビルドプロセスを担当するかによって異なります。

  5. 事前作成されたスキーマを使用して空のデータベースを作成する場合は、ソースに沿ってファイルとして追加し、VSに出力先ディレクトリにコピーするように指示することができます。

+0

thansk Franci - VS2008のどこにすばやくポインタを置くことができますか?それを出力ディレクトリにコピーしますか? " – Greg

+1

VS2005では、「ソリューションエクスプローラ」でファイルを選択し、プロパティを「出力ディレクトリにコピーする」を「常にコピーする」または「新しい場合にコピーする」に変更することで、これを行うことができます。 VS2008では同じでなければなりません。 – Agg

+0

あのように、@Aggによると、ソリューションエクスプローラのファイルプロパティでこれを実行します。 –

2

私はほとんどいつも使用して使用します。

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

はsqliteのを作るためにあなたは、挿入、更新のためのトランザクションを使用して削除する必要があり、あなたがparamaterizedクエリを使用する必要が行います。 How do I get around the "'" problem in sqlite and c#?