2011-12-31 101 views
1

我正在使用SQL壓縮數據庫,並且在導入它並將確切的文件路徑複製到我的代碼時能夠測試連接,但它仍然表示它尚未打開。我究竟做錯了什麼?如果我已經將數據庫添加到項目中,是否有快捷方式可用?無法打開SQLCompact數據庫

謝謝!

Imports System.Data.SqlServerCe 

Module Module1 

Sub Main() 

    Dim constring As String = "Data Source=C:\Users\test\Desktop\MyDatabase1.sdf" 

    Dim conn As New SqlCeConnection(constring) 

    Dim cmd As New SqlCeCommand("SELECT * FROM ACCOUNT") 

    conn.Open() 

    Dim reader As SqlCeDataReader = cmd.ExecuteReader() 

    While reader.Read() 
     Console.WriteLine(reader) 
    End While 


End Sub 

End Module 

回答

2

您需要分配給該命令的連接:

這一行後,立即:

conn.Open() 

地址:

cmd.Connection = conn 

或者,您可以添加到連接該命令的構造函數:

Dim cmd As New SqlCeCommand("SELECT * FROM ACCOUNT", conn) 
+0

非常感謝。如果這不是問題,你可以看看我的循環。我正嘗試將每行打印到控制檯,但我只是獲取對象的引用。我來自python,查詢返回列表,你可以迭代。 vb.net是否有允許你這樣做的功能? – 2011-12-31 01:31:47

+1

@LanceCollins:當你像你一樣遍歷閱讀器時,循環內的讀者對象將指向當前行。爲了從該行檢索數據,可以使用幾種不同的方法:'reader(0)'檢索第一列,'reader(「columnName」)'檢索指定的列(這兩個都是默認的快捷方式'Item'屬性)或任何相關的Get方法(即'GetInt32','GetString'等等)。然而,'Get'方法需要列索引的序號,您可以先使用'GetOrdinal' 。 – 2011-12-31 01:48:07

1

使用SQL Server CE(3.5)的主要優勢之一是將Linq轉換爲SQL。您應該使用強類型數據庫和DataContext。如果你這樣做,那麼創建一個新的DataContext是一行代碼,而不是8.如果你的DataBase文件不存在,你的DataContext的CreateDataTable方法將爲你創建它們。挖一點點,因爲使用SQL Server CE像一箇舊的時尚OLEDB數據提供商是...好...不是最佳:-)

+0

偉大的一點,我是新來的.net,所以我會買一本關於LINQ的書。 – 2011-12-31 19:43:44

+0

那麼爲什麼不呢,但你已經在MSDN上有一些輸入,網上的教程,... stackoverflow ...和其他只是Linq To Sql的一個小概述:http://dotnetjquerymvcbugkiller.wordpress.com/2011/07/08/linq-beats-sql/ – GameAlchemist 2011-12-31 20:41:54

+0

Vincent - 我對SQLCompact 3.5做了一些研究,我不認爲我將能夠使用LINQ to SQL,因爲我使用的是VB 2010 Express。感謝您的信息,但看起來像我將擁有掏出專業版的$。 – 2012-01-01 15:37:37