0

我有一個項目,我試圖通過System.Data.SQLite使用SQLite。在我試圖將數據庫保持在版本控制之下時,我繼續在VS2008中創建了一個數據庫項目。聽起來很好,對吧?如何使用System.Data.SQLite數據提供程序在數據庫項目中使用SQL腳本?

我創造了我的第一個表創建腳本,並嘗試使用右鍵單擊 - >上的腳本運行來運行它,我得到這個錯誤信息:

此操作不支持提供者或數據源您正在使用。

有誰知道是否有使用是對被引用數據庫SQLite數據庫的數據庫項目的一部分腳本自動方式,使用由System.Data.SQLite提供的提供商安裝?

我試過每個變化,我可以想到試圖讓腳本運行使用默認的運行或運行...命令。下面是腳本在它的最詳細和可能不正確形式:

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命令之外,我已經剝離了所有的東西。

UPDATE:好的,正如Robert Harvey指出的那樣,這看起來像一個SQL Server存儲過程。我進入了服務器資源管理器,並使用我的連接(來自數據庫項目)來完成他對創建表的建議。我可以生成SQL從創建表和它出來像這樣:

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

我可以輕鬆地複製這一點,並把它添加到項目中(或將其添加到處理我的數據訪問,其餘的另一個項目),但無論如何要自動化這個構建?我想,因爲SQLite在這種情況下是單個文件,所以我也可以將構建的數據庫保存在版本控制下。

想法?這個實例的最佳實踐?我打算使用流利NHibernate,我可能只是使用它的自動持久性模型,以保持我的數據庫達到鼻菸,並有效地在源代碼管理。思考?陷阱?我想我將不得不分別在源代碼管理中保留最初的人口插入,但它應該起作用。

+0

你能張貼腳本? – 2009-05-23 02:34:46

+0

我不確定這很重要。我實際上認爲提供者並沒有實現Run或Run On ...功能。無論如何,我會發布劇本。 – 2009-05-23 02:51:22

回答

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來創建第一個表。

1

我使用SQLite SQL腳本構建我的數據庫,然後將其作爲sqlite3.exe控制檯程序提供。

C:\ sqlite3.exe mydatabase.db < FileContainingSQLiteSQLCommands

約翰

相關問題