首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何动态创建一个包含所有表的新SQLite数据库?

如何动态创建一个包含所有表的新SQLite数据库?
EN

Stack Overflow用户
提问于 2010-09-06 05:26:38
回答 3查看 38.2K关注 0票数 16

当用户启动我的应用程序时,他或她可以创建一个新项目,这意味着创建一个包含所有表的新数据库。

我不想从较旧的数据库/项目中复制表的结构,因为在此期间,由于程序的更新,表可能已经更改。这将导致崩溃。

因此,对于我部署的每个应用程序更新,我还应该部署一个创建数据库和表的脚本文件,对吗?

脚本文件应该是什么样子,以及如何在C#中调用它?

EN

回答 3

Stack Overflow用户

发布于 2011-09-19 00:34:54

也许这会有所帮助:

代码语言:javascript
复制
SQLiteConnection.CreateFile("c:\\Ik.db");

动态创建新数据库并对其执行查询。查询应该是这样的:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS [Setting](
[ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[Key] NVARCHAR(2048) NULL,
[Value] NVARCHAR(2048) NULL
);
票数 22
EN

Stack Overflow用户

发布于 2010-09-06 06:03:04

您可以编写一个脚本来完成所有这些工作,但也可以有一个单元测试项目来测试您的数据库接口。如果您这样做了,那么您将希望能够创建一个测试数据库,其中只包含用于测试的虚拟数据。基本上,我的观点是,如果您使用脚本文件来创建应用程序数据,如果您想要添加单元测试,那么您将需要为它们提供另一个脚本文件,或者您将需要使用代码创建数据库。

我建议在您的代码中编写一个类,它可以为应用程序和单元测试动态创建数据库模式。然后,如果您更改了模式,您只需在一个地方担心它,而不必处理不同步的事情(希望如此)。

既然您正在使用SQLite和C#,我建议您尝试一下SQLite.NET。它让我的生活变得轻松了很多,到目前为止,我对它非常满意。

使用SQLite.NET,您将创建一个SQLiteCommand,将其CommandText设置为"CREATE table (这里是您的模式)“,然后调用ExecuteNonQuery来生成表。

票数 3
EN

Stack Overflow用户

发布于 2010-09-06 09:31:12

如果需要帮助,您可以查看我的一个朋友创建的公共领域项目:www.codeplex.com/publicdomain

除了大量其他有用的实用程序外,还可以查看Data.SQLHelper.GenerateCreateTablesQuery(DataTable[] tables)。只需使用SQL作为数据库类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3647868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档