我可以选择通过另一个唯一的元素来获取表的主键吗?

时间:2019-05-08 19:39:57

标签: vb.net

我有一个组合框,用户可以在其中选择表中的用户名,我想知道是否可以通过该用户名获取该表的主键。

我尝试过,但是似乎无法获取数据,因为用户名不是唯一的,我认为它不会起作用。

SELECT * FROM Users WHERE User = John

我只想要一种通过用户名获取主键的方法。

1 个答案:

答案 0 :(得分:0)

如果您实际上是想从查询中获取PK,则可以使用ExecuteScalar方法来完成。查询不起作用的原因是,您需要将搜索字符串括在单引号中。 'johnny'或用户参数,这是首选方法。下面是一个示例,假定PK是整数类型。

Jimi提出了一个很好的建议,如果您已经将数据包含在数据表中,则只需将pkcolumn用作组合框上的ValueMember即可,而无需再次访问数据库

Private Function GetPK(ByVal Uid As String) As Integer
    Using SqlConn As New SqlClient.SqlConnection("Your connection string")
        Using Cmd As New SqlClient.SqlCommand("SELECT TOP 1 PKColumn FROM TABLENAME WHERE UsernameColumn =@UserName")
            Cmd.Parameters.Add("@UserName", SqlDbType.VarChar).Value = Uid
            Dim PkObj As Object = Cmd.ExecuteScalar
            If PkObj IsNot Nothing Then
                Return CType(PkObj, Integer)
            Else
                'user not found
                Return Nothing
            End If
        End Using
    End Using
End Function