当用户启动我的应用程序时,他或她可以创建一个新项目,这意味着创建一个包含所有表的新数据库。
我不想从较旧的数据库/项目中复制表的结构,因为在此期间,由于程序的更新,表可能已经更改。这将导致崩溃。
因此,对于我部署的每个应用程序更新,我还应该部署一个创建数据库和表的脚本文件,对吗?
脚本文件应该是什么样子,以及如何在C#中调用它?
发布于 2011-09-19 00:34:54
也许这会有所帮助:
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
);
发布于 2010-09-06 06:03:04
您可以编写一个脚本来完成所有这些工作,但也可以有一个单元测试项目来测试您的数据库接口。如果您这样做了,那么您将希望能够创建一个测试数据库,其中只包含用于测试的虚拟数据。基本上,我的观点是,如果您使用脚本文件来创建应用程序数据,如果您想要添加单元测试,那么您将需要为它们提供另一个脚本文件,或者您将需要使用代码创建数据库。
我建议在您的代码中编写一个类,它可以为应用程序和单元测试动态创建数据库模式。然后,如果您更改了模式,您只需在一个地方担心它,而不必处理不同步的事情(希望如此)。
既然您正在使用SQLite和C#,我建议您尝试一下SQLite.NET。它让我的生活变得轻松了很多,到目前为止,我对它非常满意。
使用SQLite.NET,您将创建一个SQLiteCommand,将其CommandText设置为"CREATE table (这里是您的模式)“,然后调用ExecuteNonQuery来生成表。
发布于 2010-09-06 09:31:12
如果需要帮助,您可以查看我的一个朋友创建的公共领域项目:www.codeplex.com/publicdomain。
除了大量其他有用的实用程序外,还可以查看Data.SQLHelper.GenerateCreateTablesQuery(DataTable[] tables)
。只需使用SQL作为数据库类型。
https://stackoverflow.com/questions/3647868
复制相似问题