在 Visual Studio 中使用 Object 执行 SQL 语句
Posted
技术标签:
【中文标题】在 Visual Studio 中使用 Object 执行 SQL 语句【英文标题】:Using Object to execute SQL statements in Visual Studio 【发布时间】:2011-12-29 05:04:54 【问题描述】:如果我的问题很简单,我深表歉意,但是我在 Internet 上进行了很多查找,但无法找到解决方案。
我有一个连接到 Visual Studio 的数据库,我使用“连接到数据库...”向导建立连接。在 Visual Studio 的服务器资源管理器中,我看到我有一个名为“newreptDBtest.accdb”的数据连接和一个名为 Mandrew 的服务器。
基本上我想在单击按钮时在此数据库上执行 SQL 语句。所以我在表单上有一个按钮,它有以下代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sqlconn As New SqlConnection
sqlconn.ConnectionString = "server=Mandrew;Initial Catalog=newreptDBtest.accdb"
Try
sqlconn.Open()
Catch ex As Exception
MessageBox.Show("Error on connection")
End Try
If sqlconn.State = 1 Then
MessageBox.Show("Success!")
End If
End Sub
在一般声明中,我有:
Imports System.Data.SqlClient
也许是因为它不是 SQL 数据库?我不知道。无论哪种方式,我都无法获得“成功!”从消息框。一旦我知道了,我确信我可以弄清楚如何创建 SQL 语句来返回某些行或单个信息。
在newreptDBtest中,我要执行查询的表叫做newrept,到数据库的连接字符串是:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Andrew\Documents\newreptDBtest.accdb"
tl;博士:
如何使用对象(例如按钮)对已连接到我的项目的数据库中的表执行 SQL 查询?
提前致谢
【问题讨论】:
【参考方案1】:您需要用于访问 MS Access 数据库文件的类位于 System.Data.OleDb namespace 中。试试这个:
Dim ConnString As String = "server=Mandrew;Initial Catalog=newreptDBtest.accdb"
Dim SqlString As String = "put your query here, e.g. Select * From Contacts"
Using conn As New OleDbConnection(ConnString)
Using cmd As New OleDbCommand(SqlString, conn)
cmd.CommandType = CommandType.Text
conn.Open()
Using reader As OleDbDataReader = cmd.ExecuteReader()
While reader.Read()
'access the data using the reader, e.g. reader("ColumnName")
End While
End Using
End Using
End Using
取自here
显然,您需要修改它以适合您的查询,但这突出了您需要使用OleDbConnection
连接到 MS Access 文件的事实。
【讨论】:
我导入了命名空间,并且不得不修改 ConnString 以包含一个提供程序,所以我添加了:Provider=SQLOLEDB;server=... 但是我在 conn 上收到“无效授权规范”异常.Open() 行...任何想法为什么? 需要在连接字符串中指定用户名和密码,添加uid=Username;pwd=password;有关连接字符串的更多信息,请参阅sqlstrings.com/MS-Access-connection-strings.htm。请注意,我认为您不能将 SQLOLEDB 提供程序用于 Access db。 是的,我刚刚意识到提供者。我现在将连接字符串更改为:Dim ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;server=Mandrew;Data Source='C:\Users\Andrew\Documents\newreptDBtest.accdb'"
我收到错误消息:“找不到可安装的 ISAM。”奇怪的是,删除“server=Mandrew;”部分让代码运行没有错误。我没有设置它在While reader.Read()
循环中执行任何操作,但我没有收到任何错误!
@SuperXero 同样,对于您正在使用的提供程序,服务器不是有效的条目。请参阅我在上一条评论中发布的链接。如果您的问题得到解答,请不要忘记点击答案旁边的绿色勾号:)
所以我修改了查询以仅提供一个结果,并在 While reader.Read 循环中弹出一个消息框表示成功,因此现在一切正常!非常感谢!以上是关于在 Visual Studio 中使用 Object 执行 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2008 中打开使用 Visual Studio 2005 创建的 rdl?
我可以在 Visual Studio 2008 中使用 Visual Studio 6 编译的 C++ 静态库吗?