【问题标题】:SQL parameters with if statement vb.net带有 if 语句的 SQL 参数 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 语句起作用?

【问题讨论】:

    标签: sql vb.net tsql


    【解决方案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 语句的条件。
    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多