带有 if 语句的 SQL 参数 vb.net

Posted

技术标签:

【中文标题】带有 if 语句的 SQL 参数 vb.net【英文标题】:SQL parameters with if statement vb.net 【发布时间】:2016-07-05 08:26:04 【问题描述】:

所以我正在开发一个基于账户(储蓄账户和支票账户)存款和取款的应用程序。为此,我创建了一个数据库,其中将使用 SQL 参数记录值。

但是现在我卡在了.Add("@descriptionTransaction", SqlDbType.Char).Value = cmdDeposit.Text参数之一,因为如果我点击存款按钮,它会在descriptionTransaction列中记录为存款。另一方面,如果我对提款按钮执行相同操作,它当然不起作用,因为未声明 cmdWithdrawal.Text。每当用户单击 cmdDeposit 时,我应该创建一个 if 语句,它将写入 Deposit 或 cmdWithdrawal,它将写入 Withdrawal。

这是我实际用于 sql 参数的代码:

    With SqlCmd.Parameters
         .Add("@tpAccount", SqlDbType.Char).Value = cbTpAccount.SelectedItem
         .Add("@dateTransaction", SqlDbType.DateTime).Value = txtDate.Text
         .Add("@descriptionTransaction", SqlDbType.Char).Value = cmdDeposit.Text
         .Add("@amountTransaction", SqlDbType.Char).Value = txtWithdrawal.Text
         .Add("@balanceTransaction", SqlDbType.Money).Value = txtBalance.Text
    End With

有什么方法可以使这个 If 语句起作用?

【问题讨论】:

【参考方案1】:
With SqlCmd.Parameters
     .Add("@tpAccount", SqlDbType.Char).Value = cbTipoConta.SelectedItem
     .Add("@dateTransaction", SqlDbType.DateTime).Value = txtDate.Text
     .Add("@descriptionTransaction", SqlDbType.Char).Value = if(cmdDepositar.Text="", cmdWithdrawal.Text, cmdDepositar.Text)
     .Add("@amountTransaction", SqlDbType.Char).Value = txtDeposito.Text
     .Add("@balanceTransaction", SqlDbType.Money).Value = txtBalance.Text
End With

这是你要找的吗?

【讨论】:

是的。就是这样。谢谢老哥 其实这行不通,在这种情况下总是返回“存款”而不是“提款” @Leprechaun:你的答案是对的,但是使用 vb.net 中的 IIF 函数来减少代码。 @IGottaGo 我想您应该使用... = If(string.IsNullOrEmpty(cmdDepositar.Text) ... 甚至string.IsNullOrWhiteSpace 来检查您的框中是否有文字。【参考方案2】:
With SqlCmd.Parameters
     .Add("@tpAccount", SqlDbType.Char).Value = cbTipoConta.SelectedItem
     .Add("@dateTransaction", SqlDbType.DateTime).Value = txtDate.Text
     .Add("@descriptionTransaction", SqlDbType.Char).Value = iif(String.IsNullOrEmpty(cmdDepositar.Text), "", cmdDepositar.Text)
     .Add("@amountTransaction", SqlDbType.Char).Value = txtDeposito.Text
     .Add("@balanceTransaction", SqlDbType.Money).Value = txtBalance.Text
End With

试试这个

【讨论】:

我也喜欢这种方法。谢谢老哥 这不是条件运算符的有效 VB .NET 语法。 @IGottaGo:请使用 iif() 来检查写完整 If 语句的条件。

以上是关于带有 if 语句的 SQL 参数 vb.net的主要内容,如果未能解决你的问题,请参考以下文章

property语句在vb.net中怎么用

SQL插入语句语法错误VB.net

VB.Net 中的 SQL 语句错误

带有 case OR-ing 的 VB.NET 选择 case 语句逻辑是啥?

VB .NET OleDbCommand 在 SQL 语句末尾返回缺少分号 (;)

有没有办法在 VB.Net 中突出显示 If - End If 语句