SQL 查询返回“重载解决错误”

Posted

技术标签:

【中文标题】SQL 查询返回“重载解决错误”【英文标题】:SQL query returning 'Overload resolution error' 【发布时间】:2016-07-12 08:32:33 【问题描述】:

我有一个 readini 文件来连接到我的 SQL Server 表,并且在我的查询代码中显示其中的数据时,我遇到了一个我无法解决的错误,这里有人可以解决吗?

这是错误:

错误 1 重载解析失败,因为无法使用这些参数调用可访问的“新”: “Public Sub New(selectCommandText As String, selectConnection As System.Data.OleDb.OleDbConnection)”:“SQLServerApplication.readini”类型的值无法转换为“System.Data.OleDb.OleDbConnection”。 'Public Sub New(selectCommandText As String, selectConnectionString As String)': 'SQLServerApplication.readini' 类型的值无法转换为'String'。

这是代码:

Imports System.Data.OleDb
Imports System.Data.SqlClient

Public Class frmViewDtb


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim connection As readini = New readini()
    connection.getConnectionString()

    Dim sql As String = "SELECT * FROM tblPerson"
    Dim da As New OleDbDataAdapter(sql, connection)
    Dim ds As New DataSet()
    da.Fill(ds, "tblPerson")
    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "tblPerson"

End Sub
End Class

发生错误的行是第 13 行:

 Dim da As New OleDbDataAdapter(sql, connection)

getConnectionString 的代码;

    Public Function getConnectionString() As String

    Dim s As String =
        "Provider=" & provider & ";" &
        "user ID=" & username & ";" &
        "password=" & password & ";" &
        "initial catalog=" & databasename & ";" &
        "data source=" & servername & "; " &
    "Persists Security Info=False"

End Function

如果您能得到它,请提前感谢!

【问题讨论】:

那么您的readini 类是什么样的,您希望在这里调用哪个构造函数? 【参考方案1】:

我相信您会收到错误消息,因为 OleDbDataAdpater 的构造函数需要两个字符串,而您的 connection 变量不是字符串。我怀疑您的代码需要如下所示:

Dim connection As readini = New readini()
Dim ConnString = connection.getConnectionString()

Dim sql As String = "SELECT * FROM tblPerson"
Dim da As New OleDbDataAdapter(sql, ConnString)
Dim ds As New DataSet()
da.Fill(ds, "tblPerson")
DataGridView1.DataSource = ds
DataGridView1.DataMember = "tblPerson"

getConnectionString 方法也需要修改以添加Return 语句:

Public Function getConnectionString() As String

    Dim s As String =
        "Provider=" & provider & ";" &
        "user ID=" & username & ";" &
        "password=" & password & ";" &
        "initial catalog=" & databasename & ";" &
        "data source=" & servername & "; " &
        "Persists Security Info=False"
    Return s
End Function

【讨论】:

解决了我遇到的编译错误,但现在出现运行时错误:System.Data.dll 中发生“System.InvalidOperationException”类型的未处理异常附加信息:ConnectionString 属性有未初始化。 听起来你没有从你的 readini 类中取回一个有效的连接字符串。使用调试器或 Debug.Print 来显示 ConnString 的内容。可能值得将 getConnectionString 方法的代码添加到您的问题中,以便我们提供帮助。 我现在将尝试逐步完成它,同时如果您想查看它,我现在已经在原始问题中发布了 getConnectionString 代码。 好的,这有帮助。您没有从 getConnectionString 返回 s 的值。只需在“结束函数”行之前添加一个“返回 s” 当然!是的,好的,这有效,谢谢!我一定会尽快接受您的回答。

以上是关于SQL 查询返回“重载解决错误”的主要内容,如果未能解决你的问题,请参考以下文章

查询返回带有错误参数的 sql 字符串

查询 SQL 数据库返回错误:用户“免费试用”登录失败

SQL 错误 ORA 01427 - 子查询返回超过 1 行的更新语句

查找缺失行的 SQL 查询返回语法错误

在 Synapse 管道中编写 SQL 查询查找活动返回错误消息

使用 WHERE 和 COUNT 在 sql 查询中返回错误值