0

我有一个项目,我试图通过System.Data.SQLite使用 SQLite 。为了使数据库处于版本控制之下,我继续在我的 VS2008 中创建了一个数据库项目。听起来不错,对吧?

我创建了我的第一个表创建脚本并尝试在脚本上使用右键单击-> 运行来运行它,我收到以下错误消息:

您正在使用的提供程序或数据源不支持此操作。

有谁知道是否有一种自动方法可以使用 System.Data.SQLite 安装提供的提供程序,针对数据库引用的 SQLite 数据库使用属于数据库项目一部分的脚本?

我已经尝试了所有我能想到的变体,试图让脚本使用默认的 Run 或 Run On... 命令运行。这是最冗长且可能不正确的脚本:

USE Characters
GO

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'U' AND name = 'Skills')
  BEGIN
    DROP Table Skills
  END
GO

CREATE TABLE Skills
(
   SkillID INTEGER PRIMARY KEY AUTOINCREMENT,
   SkillName TEXT,
   Description TEXT
)
GO

请注意,这是我第一次尝试使用数据库,也是我第一次接触 SQLite。在我试图让它运行的过程中,除了 CREATE TABLE 命令之外,我已经删除了所有内容。

更新:好的,正如罗伯特哈维在下面指出的那样,这看起来像一个 SQL Server 存储过程。我进入服务器资源管理器并使用我的连接(来自数据库项目)执行他关于创建表的建议。我可以生成 SQL 来创建表,结果如下:

CREATE TABLE [Skills] (
    [SkillID] integer PRIMARY KEY NOT NULL,
    [SkillName] text NOT NULL,
    [Description] text NOT NULL
);

我可以轻松地复制它并将其添加到项目中(或将其添加到处理我的其余数据访问的另一个项目中),但是无论如何在构建时自动执行此操作?我想,因为在这种情况下 SQLite 是一个单一文件,所以我也可以将构建的数据库保持在版本控制之下。

想法?此实例的最佳实践?

更新:我在想,因为我打算使用 Fluent NHibernate,我可能只是使用它的自动持久性模型来保持我的数据库最新并有效地进行源代码控制。想法?陷阱?我想我必须将初始人口插入单独保存在源代码控制中,但它应该可以工作。

4

2 回答 2

1

我使用 SQLite SQL 脚本构建了我的数据库,然后像这样将它输入到 sqlite3.exe 控制台程序中。

c:\sqlite3.exe mydatabase.db < FileContainingSQLiteSQLCommands

约翰

于 2011-07-13T18:18:21.083 回答
0

好吧,您的脚本看起来像一个 SQL Server 存储过程。SQLite 很可能不支持这个,因为

  1. 它不支持存储过程,并且
  2. 它不理解 SQL Server T-SQL

SQL 实际上是一个伪标准。它在供应商之间有所不同,有时甚至在同一供应商内产品的不同版本之间也有所不同。

也就是说,我看不出有什么理由不能通过打开连接和命令对象来对 SQLite 数据库运行任何(与 SQLite 兼容的)SQL 语句,就像使用 SQL Server 一样。

但是,由于您是数据库和 SQLite 的新手,因此您应该从这里开始。我假设你已经安装了 SQLite

  1. 在 Visual Studio 2008 中创建一个新的 Windows 应用程序。数据库应用程序对您没有用处。

  2. 通过下拉查看菜单并选择服务器资源管理器来打开服务器资源管理器。

  3. 通过右键单击服务器资源管理器中的数据连接节点并单击添加新连接来创建一个新连接...

  4. 单击更改按钮

  5. 选择 SQLite 提供程序

  6. 给你的数据库一个文件名。

  7. 单击确定。

服务器资源管理器中应该会出现一个新的数据连接。您可以通过右键单击 Tables 节点并选择 Add New Table 来创建您的第一个表。

于 2009-05-23T03:02:49.253 回答