在 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++ 静态库吗?

visual studio 中 如何还原.bak数据文件

如何在visual studio开发android程序

visual studio 2012中如何查看一个工程需要哪些dll文件???

如何在Visual Studio Code 中运行 Python