在VB.net内部查询的情况

时间:2014-06-10 06:48:01

标签: sql vb.net

sql = "INSERT INTO Machine_Master(Machine_Code,Machine_Name,Status)" _
    & " VALUES ('" & textmachinecode.Text & "','" & textdescription.Text & "', '" & combostatus.Text & "')"

如何更改组合框中的文字?当它保存在数据库中时,它将是整数。在这种情况下,文本combostatus.Text 有效在保存时为1,无效为0。

2 个答案:

答案 0 :(得分:2)

帕特里克说,你不需要case when,因为你可以在vb.net这边做,但你应该使用参数来避免问题:

Dim result As String = String.Empty
sql = "INSERT INTO Machine_Master (Machine_Code,Machine_Name,Status) " & _
      " VALUES (@CODE, @DESC, @STATUS)"

Using cn As New SqlConnection("connectionString"), cmd As New SqlCommand(sql, cn)
    Dim status As Integer = -1

    Select Case combostatus.Text.ToLower()
        Case "active" : status = 1
        Case "not active" : status = 0
    End Select

    cmd.Parameters.AddWithValue("@CODE", textmachinecode.Text)
    cmd.Parameters.AddWithValue("@DESC", textdescription.Text)
    cmd.Parameters.AddWithValue("@STATUS", status)

    result = cmd.ExecuteScalar().ToString()
End Using

答案 1 :(得分:1)

您不需要case when,您可以简单地解决此客户端问题(请注意,使用参数更好,正如已经建议的那样!)

使用此条件:

IIf(combostatus.Text = "active", 1, 0)

所以,完全变成了:

sql = "INSERT INTO Machine_Master(Machine_Code,Machine_Name,Status)" _
      & " VALUES ('" & textmachinecode.Text & "','" & textdescription.Text & "', " _ 
      & IIf(combostatus.Text = "active", 1, 0) & ")"