簡體   English   中英

將VB.net IF語句與SQL值一起使用

[英]Using VB.net IF statement with SQL value

如果我的SQL值大於1,我嘗試使用IF語句執行某些操作。

但是,當我運行以下代碼時,它將返回錯誤。

沒有為類型'System.Data.SqlClient.SqlCommand'和'Integer'定義運算符'>'。

這是代碼:

Using cmdb = New SqlCommand("INSERT INTO AdditionalDaisyCodes (AddCode) VALUES (@AddCode)", con)
  con.Open()
  cmdb.ExecuteNonQuery()
  con.Close()

  If cmdb > 1 Then

    MessageBox.Show("Duplicate Codes Exist!", "Indigo Billing", _
    MessageBoxButtons.OK, MessageBoxIcon.Information)

  Else
  End If
End Using

有人可以提供正確語法的幫助嗎?

用這個

   int result=cmdb.ExecuteNonQuery();
if result > 1 then
//code here
else
end if

您有一個更大的問題,不僅僅是語法錯誤。 根據您發布的代碼,您似乎想通知用戶存在重復的代碼。 既然您有Else ,我將作一個猜測,並說如果找不到重復的代碼,則需要插入。

當前,受ExecuteNonQuery()影響的行數永遠不會大於1。此外,在發布的代碼中,您永遠不會為@AddCode參數分配值-如果AddCode列不能為null,則可能導致錯誤。

您可能想要做的是檢查代碼是否存在,如果不存在,則添加它。 這樣的事情可以解決問題:

Using cmdb = New SqlCommand("SELECT * FROM AdditionalDaisyCodes WHERE AddCode = @AddCode", con)
    con.Open()

    cmdb.Parameters.AddWithValue("@AddCode", txtAddCode.Text)
    Dim reader As SqlDataReader = cmdb.ExecuteReader()

    If reader.HasRows Then
        MessageBox.Show("Duplicate Codes Exist!", "Indigo Billing", _
MessageBoxButtons.OK, MessageBoxIcon.Information)

    Else
        cmdb.CommandText = "INSERT INTO AdditionalDaisyCodes(AddCode) Values(@AddCode)"
        cmdb.Parameters.AddWithValue("@AddCode", txtAddCode.Text)
        cmdb.ExecuteNonQuery()

    End If

    con.Close()
End Using

txtAddCode.Text中的txtAddCode.Text假設代碼來自於名為txtAddCodeTextBox 首先,它通過運行受WHERE子句約束的SELECT查詢來檢查表中是否已存在代碼。 如果返回的SqlDataReader有行,則該代碼已在表中,並顯示消息框。

如果SqlDataReader沒有行,則該代碼不在表中,並且cmdb被重用於執行插入操作。

還要注意,您也可以將SqlConnection放在Using塊中,從而無需顯式調用連接上的Close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM