将数据集保存为SQLite格式文件

时间:2010-10-06 20:16:19

标签: sqlite serialization dataset

我有一个包含多个表的数据集。 我显然可以做一个Dataset.WriteToXML(“Somefile.xml”)

如果我想将数据集导出到SQLite格式的文件,该怎么办?

换句话说,我希望能够将数据集的内容写入(即序列化)到SQLite文件中。 Dataset.SerializeToSQLite( “Sqliteformatted.bin”)

同样,我希望能够将SQLite文件读入数据集。

我想在c#中执行此操作。

提前感谢任何指示。

鲍勃

2 个答案:

答案 0 :(得分: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 :(得分:1)

SQLite不是文件格式,而是数据库。

如果要将DataSet中的所有数据放入数据库,则需要创建与数据库的连接(可以是空白文件,SQLite将在初始连接时创建它),然后创建数据库结构。然后发出INSERT语句将数据附加到数据库。您可以使用SQLiteDataAdapter来简化插入语句的创建。

相关问题