无法打开 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
方法(即GetInt32
、GetString
等。但是,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 数据提供程序”