如何在消息框中显示数据库值

Posted

技术标签:

【中文标题】如何在消息框中显示数据库值【英文标题】:How To show Database value in messagebox 【发布时间】:2021-09-15 10:11:34 【问题描述】:

我在 vb 脚本中是新的我试图从表中检索值并根据输入员工代码显示到前端相应的员工姓名应该显示我在 vb 脚本中编写代码但它不会运行给出错误,我无法找到在哪里是问题

行:3 字符:18 错误:预期语句结束 代码:800A0401 来源:微软VBScript编译错误

Private Sub CheckOriginalData()
        Dim employee_code 
        Dim dtAB As DataTable
        dim a
        Using cn As New SqlConnection( "Provider=SQLOLEDB.1;Data Source=testing;Initial Catalog=adventure;user id ='UAT_01';password='Basket@123'")
            Dim cmdAB As String = "select employee_name from employee_details where leadid= @employee_code;"
            Using cmd As New SqlCommand(cmdAB, cn)
                cmd.Parameters.Add("@employee_code", SqlDbType.VarChar).Value = employee_code.Text
                cn.Open()
                Using dr As SqlDataReader = cmd.ExecuteReader
                    dtAB.Load(dr)
                    a = InputBox("Enter a Number" &employee_code.Text)
         msgbox a
                         MsgBox("your lead id is: " & employee_code.Text & " and status is ", cmdAB & "")
                End Using
            End Using
        End Using
        If (dtAB.Rows.Count > 0) Then
            employee_code.Focus()
        Else          
          
           MsgBox("Leads not found")
            employee_code.Focus()
        End If
    End Sub

【问题讨论】:

我认为您的用户 ID/密码不应在您的连接字符串中引用。 msgbox a 应该像那样自行关闭吗? 您的代码不是有效的 vbscript。它可能是 VB 或 VB.net,我不确定。由于未键入 vbscript,第三行已经错了。 As DataTable 无效。 @GeertBellekens 它是 VB.Net,因为 VB 不支持 using 或 ADO.Net 对象和语法。 vbscript 不是 vb.net - 问题正文与标签不一致。请对齐。您似乎在 vbscript 环境中使用了一些有效的 vb.net,它不会比粘贴 Java 更有效。要么切换到使用 vb.net 环境(Visual Studio 是免费的,而且更好,而且你正在学习一种可能有人想要雇用你的编程语言)或者遵循 vb 脚本教程而不是 vb.net 一个 【参考方案1】:

通过这条线

Dim employee_code

您已经声明了一个Object 类型的局部变量。然后您尝试将对象的Text 属性分配给ParameterValueObject 没有 Text 属性。我假设您的表单上有一个TextBox,名为employee_code

我想知道你的连接字符串,包括Provider=SQLOLEDB.1; 我以前在我的 SQL Server 连接中没有看到过这种情况,但我过着隐蔽的生活,这可能没问题。提供者是 ADO.net 代码的提供者。它确实出现在 Access 连接字符串中。

您没有任何返回DataTable 的代码。要在 DataTable 上调用 Load,您需要一个类的实例。这是通过使用调用DataTable 的构造函数的New 关键字来完成的。但我们最终没有使用DataTable

您可以在Using 的第一行末尾使用逗号将命令添加到同一个Using 块中。

我不明白这些行的目的。您已经为参数赋值。

a = InputBox("Enter a Number" & employee_code.Text)
 MsgBox a

连接打开时不显示消息框。用户可能已经去吃午饭了,但没有人在那里单击“确定”。您的连接在微风中飘扬。

由于您只检索单个数据,即员工姓名,您可以使用命令的.ExecuteScalar 方法。返回结果集中第一行的第一列。您需要添加.ToString,因为ExecuteScalar 返回一个Object

由于某些未知原因,您在消息框中显示了您的选择字符串 cmdAB

MsgBox("your lead id is: " & employee_code.Text & " and status is ", cmdAB & "")

您似乎还缺少一个 & 符号,并且末尾有双引号。您尚未检索到任何有关状态的信息,因此无法显示此数据。这是使用由前导 $ 表示的内插字符串的一个很好的理由。然后,您可以将由 大括号包围的变量直接插入到您希望它们出现的行中。

最后,我将您的用户界面代码与数据库代码分开。这样你的函数就可以被任何前端使用。

Imports System.Data.SqlClient

Private Function GetEmployeeName(EmployeeCode As String) As String
    Dim EmployeeName As String
    Dim cmdAB As String = "select employee_name from employee_details where leadid= @employee_code;"
    Using cn As New SqlConnection("Provider=SQLOLEDB.1;Data Source=testing;Initial Catalog=adventure;user id ='UAT_01';password='Basket@123'"),
            cmd As New SqlCommand(cmdAB, cn)
        cmd.Parameters.Add("@employee_code", SqlDbType.VarChar).Value = EmployeeCode
        cn.Open()
        EmployeeName = cmd.ExecuteScalar.ToString
    End Using
    Return EmployeeName
End Function

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim EmployeeName = GetEmployeeName(employee_code.Text)
    MessageBox.Show($"your lead id is: employee_code.Text and Name is EmployeeName")
End Sub

【讨论】:

以上是关于如何在消息框中显示数据库值的主要内容,如果未能解决你的问题,请参考以下文章

如何从输入框中显示 HTML

如何将 CEdit 类型的数据转换为 CString 类型的数据以及如何在消息框中显示? [复制]

如何在消息框中显示 SQL 数据库中的字段

我如何从数据库中读取值并在消息框中返回它

如何在输入框中显示数组值

如何将包含各种值的消息放在C#的单独文本框中