如何在System.Data.SQLite数据提供程序的数据库项目中使用SQL脚本?

时间:2009-05-23 02:17:32

标签: database visual-studio fluent-nhibernate system.data.sqlite

我有一个项目,我试图通过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命令之外,我已经删除了所有内容。

更新:好的,正如Robert Harvey在下面指出的那样,这看起来像是一个SQL Server存储过程。我进入了服务器资源管理器并使用我的连接(来自数据库项目)来完成他关于创建表的建议。我可以生成SQL来创建表,它就像这样出现:

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

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

思考?这个实例的最佳实践?

更新:我在考虑,因为我打算使用Fluent NHibernate,我可能只是使用它的自动持久性模型来保持我的数据库达到鼻烟并有效地控制源代码。思考?陷阱?我想我必须分别在源代码控制中保留初始填充插入,但它应该可以工作。

2 个答案:

答案 0 :(得分:1)

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

c:\ sqlite3.exe mydatabase.db< FileContainingSQLiteSQLCommands

约翰

答案 1 :(得分:0)

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

  1. 它不支持存储过程,
  2. 它不了解SQL Server T-SQL
  3. SQL实际上是一种伪标准。它在供应商之间有所不同,有时甚至在同一供应商的不同版本的产品之间。

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

    但是,由于您不熟悉数据库和SQLite,因此以下是您应该如何开始的。我假设你已经安装了SQLite

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

    2. 通过下拉View菜单并选择Server Explorer来打开Server Explorer。

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

    4. 单击“更改”按钮

    5. 选择SQLite提供程序

    6. 为您的数据库提供文件名。

    7. 单击“确定”。

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