很抱歉,如果这个问题很愚蠢,但我没有办法看到大局。 我有1个文本框,1个标签和带有两列(代号和描述)的数据库,通过在文本框中输入代号我希望在标签中获得相应的描述。
使用Excel和VBA,可以使用几行来完成。可悲的是我不能使用Excel但必须选择Web界面因为PC速度慢和办公室价格。为什么这个简单的任务在ASP.NET中如此复杂,包括所有通用声明和sqlservers以及sqlconnections。
有更简单的方法吗?
顺便说一句。我试图调整我在网上找到的许多不同的东西,最后一个看起来很有希望,但它不起作用:
Protected Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
Using sqlconn As New SqlConnection("Data Source=.\sqlexpress;Initial Catalog=KLIJENTI;Integrated Security=True"), _
sqlcmd As New SqlCommand("Select From Baza Where SIFRE = @SIFRE", sqlconn)
sqlcmd.Parameters.Add("@SIFRE", SqlDbType.VarChar, 50).Value = TextBox2.Text
sqlconn.Open()
'Label1.Text = CString(sqlcmd.ExecuteScalar()) 'CString is not declared
Label1.Text = sqlcmd.ExecuteScalar()
End Using
End Sub
Baza是表名,
SIFRE是将在文本框中输入的代号
和NAZIV是对应于SIFRE的描述,应该显示在Label
中答案 0 :(得分:4)
正确的表格是
Protected Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
Using sqlconn = New SqlConnection("Data Source=.\sqlexpress;Initial Catalog=KLIJENTI;Integrated Security=True")
Using sqlcmd = New SqlCommand("Select NAZIV From Baza Where SIFRE = @SIFRE", sqlconn)
sqlcmd.Parameters.AddWithValue("@SIFRE", TextBox2.Text)
sqlconn.Open()
Dim result = sqlcmd.ExecuteScalar()
if result IsNot Nothing Then
Label1.Text = result.ToString
End If
End Using
End Using
End Sub
SELECT sql子句后面是要检索的列的列表。 (添加了NAZIV)
此外,您应该考虑您的查询找不到参数@Sifre的值,在这种情况下,ExecuteScalar的结果是Nothing。