【问题标题】:Using Object to execute SQL statements in Visual Studio在 Visual Studio 中使用 Object 执行 SQL 语句
【发布时间】: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 查询?

提前致谢

【问题讨论】:

    标签: database visual-studio ms-access


    【解决方案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 循环中弹出一个消息框表示成功,因此现在一切正常!非常感谢!
    猜你喜欢
    • 2014-02-01
    • 2023-04-02
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    相关资源
    最近更新 更多