无法打开 SQLCompact 数据库

Posted

技术标签:

【中文标题】无法打开 SQLCompact 数据库【英文标题】:Can't open SQLCompact database 【发布时间】:2011-12-31 00:44:10 【问题描述】:

我正在使用 SQL 紧凑型数据库,当我导入它并将确切的文件路径复制到我的代码时,我能够测试连接,但它仍然说它尚未打开。我究竟做错了什么?如果我已经将数据库添加到我的项目中,是否有可用的快捷方式?

谢谢!

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

【问题讨论】:

【参考方案1】:

您需要将连接分配给命令:

紧接着这一行:

conn.Open()

添加:

cmd.Connection = conn

或者,您可以将连接添加到命令的构造函数:

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

【讨论】:

非常感谢。如果这不是问题,您可以看看我的循环。我正在尝试将每一行打印到控制台,但我只是获得了对该对象的引用。我来自 python,查询以列表的形式返回,您可以对其进行迭代。 vb.net 有什么功能可以让你这样做吗? @LanceCollins:当你像你一样循环阅读器时,循环内的阅读器对象将指向当前行。为了从该行检索数据,您可以使用几种不同的方法:reader(0) 检索第一列,reader("columnName") 检索指定列(这两个都是默认 Item 属性的快捷方式)或任何相关的Get 方法(即GetInt32GetString 等。但是,Get 方法需要列索引的序号,您可以先使用GetOrdinal 检索它。【参考方案2】:

使用 SQL server CE (3.5) 的主要优势之一是拥有 Linq to SQL。您应该使用强类型数据库和 DataContext。如果你这样做了,那么创建一个新的 DataContext 是一行代码,而不是 8 行。如果你的 DataBase 文件不存在,你的 DataContext 的 CreateDataTable 方法将为你创建它们。深入研究一下,因为像老式 OLEDB 数据提供程序一样使用 SQL Server CE 是……嗯……不是最佳的 :-)

【讨论】:

好点。我是 .Net 的新手,所以我将购买一本关于 LINQ 的书。 好吧,为什么不呢,但是您已经在 msdn、网上教程、...***... 等中获得了一些信息。这里只是对 Linq To Sql 的一个小概述:dotnetjquerymvcbugkiller.wordpress.com/2011/07/08/… Vincent - 我对 SQLCompact 3.5 做了一些研究,但我认为我无法使用 LINQ to SQL,因为我使用的是 VB 2010 express。不过感谢您提供的信息,看来我得掏出美元购买专业版了。 :-( 有时,如果您获得包含它的正确 SDK,您可以免费获得额外的功能......不过,请不要这样做。 是的。购买好工具我没有问题,但 599 美元对于一个业余开发者来说是一个高昂的价格......

以上是关于无法打开 SQLCompact 数据库的主要内容,如果未能解决你的问题,请参考以下文章

VS2010:“找不到请求的 .NET Framework 数据提供程序”

EXCEL查询无法运行或数据库无法打开是为啥

无法打开物理文件 错误 怎么解决

everything无法打开数据库路径

高分悬赏,无法打开数据库fiie。系统错误-2147287035?

MySQL无法打开数据库怎么办?