VB.net SQL INFORMATION_SCHEMA查询仅返回' -1'

时间:2017-11-01 20:08:40

标签: sql-server vb.net

我们的vb.net程序需要查询INFORMATION_SCHEMA.KEY_COLUMN_USAGE以确定运行时主键列的名称。我已手动验证测试表确实有一个主键,但下面的查询只返回值' -1'。我希望它返回主键列的column_name。我做错了什么?

VB.net代码:

    'the sql query
    Dim qry As String = "SELECT column_name " & _
    "FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE " & _
    "WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1 " & _
    "AND table_name = '" & tableName & "' "

    'execute the query
    Dim conn = New SqlConnection(SQLconnection)
    Dim sqlcmd As SqlCommand = New SqlCommand(qry)
    sqlcmd.CommandType = CommandType.Text
    sqlcmd.Connection = conn
    conn.Open()
    Dim ColumnName As String = sqlcmd.ExecuteNonQuery().ToString
    conn.Close()

我认为执行查询的代码的第二部分存在问题。但是我在上面的sql查询中尝试了很多变化,结果总是等于' -1'。有什么想法吗?

编辑:感谢大家的建议,特别是@SeanLange。修复此请求将上面的第二部分更改为不使用ExecuteNonQuery。 ExecuteNonQuery适用于UPDATE,INSERT和DELETE查询。

用于检索PrimaryKey columnname的代码是上述查询以及此代码:

    Dim dataAdapter = New SqlDataAdapter(qry, SQLconnection)
    Dim table As New System.Data.DataTable()
    dataAdapter.Fill(table)
    Dim ColumnName As String = table.Rows(0)(0).ToString()

0 个答案:

没有答案