当用户启动我的应用时,他或她可以创建一个新项目,这意味着创建一个包含所有表的新数据库。
我不想从较旧的数据库/项目中复制表的结构,因为在此期间,由于程序的更新,表可能已更改。这会导致崩溃。
因此,在我部署的每个应用程序更新中,我还应该部署一个创建数据库和表的脚本文件,对吧?
脚本文件应该是什么样的,如何在C#中调用它?
答案 0 :(得分:22)
也许这会有所帮助:
SQLiteConnection.CreateFile("c:\\Ik.db");
动态创建新数据库并对其执行查询。查询应该是这样的:
CREATE TABLE IF NOT EXISTS [Setting](
[ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[Key] NVARCHAR(2048) NULL,
[Value] NVARCHAR(2048) NULL
);
答案 1 :(得分:3)
您可以编写一个脚本来完成所有操作,但您也可以拥有一个测试数据库界面的单元测试项目。如果您这样做,那么您将希望能够仅使用虚拟数据创建测试数据库以进行测试。基本上,我的观点是,如果您使用脚本文件来创建应用程序数据,并且如果您想添加单元测试,那么您需要为它们提供另一个脚本文件,或者您将需要在代码中创建数据库
我支持在您的代码中创建一个类,该类可以动态创建数据库模式以进行应用程序和单元测试。然后,如果您更改架构,您只需要在一个地方担心,而不必处理不同步的事情(希望如此)。
由于您使用的是SQLite和C#,我建议您尝试SQLite.NET。它让我的生活变得更加轻松,到目前为止我对此非常满意。
使用SQLite.NET,您将创建一个SQLiteCommand,将其CommandText设置为“CREATE TABLE(此处为您的架构)”,然后调用ExecuteNonQuery生成该表。
答案 2 :(得分:0)
对于某些帮助,您可以查看我的一位朋友制作的Public Domain项目: www.codeplex.com/publicdomain
除了大量其他有用的实用程序外,请查看Data.SQLHelper.GenerateCreateTablesQuery(DataTable[] tables)
。只需使用SQL作为数据库类型。