2010-10-06 2 views
0

У меня есть набор данных с несколькими таблицами. Я, очевидно, могу сделать Dataset.WriteToXML («Somefile.xml»)Сохранить набор данных в файл формата SQLite

Что делать, если я хочу экспортировать набор данных в файл в формате SQLite.

Другими словами, я хочу, чтобы иметь возможность записывать (то есть сериализовать) содержимое набора данных в файл SQLite. Dataset.SerializeToSQLite («Sqliteformatted.bin»)

Аналогично, я хочу иметь возможность читать файл SQLite в наборе данных.

Я хотел бы сделать это в C#.

Заранее благодарен любым указателям.

Bob

ответ

1

Этот пример может ответить на ваш вопрос.

using System; 
using System.Data; 
using System.Data.SQLite; 

namespace DataAdapterExample 
    { 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Create a simple dataset 
      DataTable table = new DataTable("Students"); 
      table.Columns.Add("name", typeof(string)); 
      table.Columns.Add("id", typeof(int)); 
      table.Rows.Add("Bill Jones", 1); 
      table.Rows.Add("Laurie Underwood", 2); 
      table.Rows.Add("Jeffrey Sampson", 3); 
      DataSet ds = new DataSet(); 
      ds.Tables.Add(table); 
      // Save in an SQLite file 
      string desktopPath = 
       Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); 
      string fullPath = desktopPath + "\\class.db"; 
      SQLiteConnection con = new SQLiteConnection("Data Source=" + fullPath); 
      con.Open(); 
      // Create a table in the database to receive the information from the DataSet 
      SQLiteCommand cmd = new SQLiteCommand(con); 
      cmd.CommandText = "DROP TABLE IF EXISTS Students"; 
      cmd.ExecuteNonQuery(); 
      cmd.CommandText = "CREATE TABLE Students(name text, id integer PRIMARY KEY)"; 
      cmd.ExecuteNonQuery(); 
      SQLiteDataAdapter adaptor = new SQLiteDataAdapter("SELECT * from Students", con); 
      adaptor.InsertCommand = new SQLiteCommand("INSERT INTO Students VALUES(:name, :id)", con); 
      adaptor.InsertCommand.Parameters.Add("name", DbType.String, 0, "name"); 
      adaptor.InsertCommand.Parameters.Add("id", DbType.Int32, 0, "id"); 
      adaptor.Update(ds, "Students"); 
      // Check database by filling the dataset in the other direction and displaying 
      ds = new DataSet(); 
      adaptor.Fill(ds, "Students"); 
      foreach (DataTable dt in ds.Tables) 
      { 
       Console.WriteLine("Table {0}", dt.TableName); 
       foreach (DataRow dr in dt.Rows) 
       { 
        foreach (DataColumn dc in dt.Columns) 
        { 
         Console.Write("{0,-18}", dr[dc]); 
        } 
        Console.WriteLine(); 
       } 
      } 
     } 
    } 
} 

Вы можете найти очень похожий пример в SQLiteDataAdapter Class documentation.

1

SQLite не является файловым форматом, это база данных.

Если вы хотите поместить все данные из DataSet в базу данных, вам необходимо создать соединение с базой данных (это может быть пустой файл, SQLite создаст его при первоначальном подключении), а затем создаст структуру базы данных , Затем введите INSERT инструкции для добавления данных в базу данных. Вы можете использовать SQLiteDataAdapter, чтобы упростить создание операторов вставки.