.net - 如何在消息框中显示数据库值
问题描述
我是 vb 脚本中的新手我试图从表中检索值并根据输入员工代码显示到前端相应的员工姓名应该显示我在 vb 脚本中编写代码但它不会运行给出错误,我无法找到问题所在
行:3 字符:18 错误:预期语句结束代码:800A0401 来源:Microsoft 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
解决方案
通过这条线
Dim employee_code
您已经声明了一个类型为 的局部变量Object
。然后您尝试将Text
对象的属性分配给Value
a Parameter
。安Object
没有Text
财产。我假设TextBox
您的表单上有一个名为employee_code
.
我想知道您的连接字符串,包括Provider=SQLOLEDB.1;
我以前在我的 SQL Server 连接中从未见过的,但我过着隐蔽的生活,可能没问题。提供者是 ADO.net 代码的提供者。它确实出现在 Access 连接字符串中。
您没有任何返回DataTable
. 要调用Load
aDataTable
你需要一个类的实例。这是通过使用New
调用构造函数的关键字来完成的DataTable
。但我们最终没有使用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
推荐阅读
- java - java用变量调用方法
- c - Trying to understand itoa function
- java - ComboBox 没有过滤我的 JTable
- arm - 如何在 Keil 中启用 Linker MAP 文件生成?
- hadoop - Kafka HDFS 连接器未显示任何数据
- c# - 用于文件上传的 RESTapi POST,控制器中的字节数组始终为空?
- ios - dyld:库未加载:@rpath/libswiftCore.dylib 问题仅在模拟器上持续存在
- python - "subprocess.Popen().readline()" in multithreading python cannot return
- java - 如何为自动化测试框架创建和编写模块
- spring-mvc - 如何在spring boot中按模型而不是多个参数进行过滤