繁体   English   中英

如何在 VB.net 的变量中执行查询和存储列的数据?

[英]How to execute query and store data of a column in a variable in VB.net?

我有以下代码,我试图在其中执行查询并将数据库中的值存储在两个变量中。 根据变量,我想勾选一个复选框并向文本框添加一些文本。

这是代码:

 Try
    Dim cn As SqlConnection
    Dim strCnn As String = ConfigurationManager.ConnectionStrings("agilityconnectionstring").ConnectionString
    cn = New SqlConnection(strCnn)
    cn.Open()
    Dim comm As New SqlCommand("select IsCompleted, CompletionDate from managerchecklist where ID = 53 and QuestionID = 1", cn)

    comm.CommandType = CommandType.Text
    Dim ds As SqlDataReader
    ds = comm.ExecuteReader()
    If ds.HasRows Then
        While ds.Read
            IsComplete = ds.Item("IsCompleted").ToString()
            CompleteDate = ds.Item("CompletionDate").ToString()

            identifytasks_done.Checked = True
            identifytasks_date.Attributes.Add("style", "display:block")
            identifytasks_date.Text = CompleteDate
        End While
    End If
    ''Close your connections and commands.
    cn.Close()
Catch ex As Exception
    ''Handle error if any
End Try

但我似乎在某个地方出错了。 谁能帮帮我吗?

根据变量,我想勾选一个复选框并向文本框添加一些文本。

  1. 有一个If语句来检查变量是否完整

    If IsComplete = "complete" Then identifytasks_done.Checked = True identifytasks_date.Attributes.Add("style", "display:block") identifytasks_date.Text = CompleteDate End If
  2. 将检查移至 SQL 语句

    Dim comm As New SqlCommand( "select IsCompleted, CompletionDate from " + "managerchecklist where ID = 53 and QuestionID = 1 and " "IsCompleted = 'complete'", cn)

考虑使用参数 SQL 代替,以防止 SQL 注入

我会为 SQL 查询和参数推荐Using语句。

从 SQL 获取值,然后使用 IF 语句根据这些值执行任何操作。

假设 IsCompleted 是 SQL 中的位字段......

    Dim isCompleted As Boolean
    Dim completedDate As Date

    Using con As New SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("agilityconnectionstring").ConnectionString)
        Using cmd As New SqlClient.SqlCommand("SELECT [IsCompleted], [CompletionDate] FROM managerchecklist where [ID] = @managerchecklistID and [QuestionID] = @questionID", con)
            cmd.Parameters.Add("@managerchecklistID", SqlDbType.Int).Value = 53
            cmd.Parameters.Add("@questionID", SqlDbType.Int).Value = 1
            con.Open()
            Using reader As SqlClient.SqlDataReader = cmd.ExecuteReader
                While reader.Read
                    'Index in order of the columns in the SELECT statement
                    If reader.GetSqlBoolean(0).IsNull = False Then isCompleted = reader.GetSqlBoolean(0)
                    If reader.GetSqlDateTime(1).IsNull = False Then completedDate = reader.GetSqlDateTime(1)
                End While
            End Using
        End Using
    End Using

    If isCompleted Then
        identifytasks_done.Checked = True
        identifytasks_date.Attributes.Add("style", "display:block")
        identifytasks_date.Text = completedDate
    End If

您可以将它放在它自己的 Sub 中, managerchecklistIDquestionID为 arguments 然后使用 arguments 设置参数值

        cmd.Parameters.Add("@managerchecklistID", SqlDbType.Int).Value = managerchecklistID 
        cmd.Parameters.Add("@questionID", SqlDbType.Int).Value = questionID 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM