Сохранить набор данных в файл формата SQLite - PullRequest
0 голосов
/ 07 октября 2010

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

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

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

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

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

Заранее спасибо любым указателям.

Боб

Ответы [ 2 ]

1 голос
/ 02 июня 2011

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

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

1 голос
/ 02 июня 2011

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

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 .

...