首页 > 解决方案 > 处理许多 SQL 参数

问题描述

我的表格中实际上有两种寄存器

  1. 客户
  2. 萨卡多

两者使用几乎相同的字段,“Cliente”寄存器有更多的字段选项。

我为 SQL 命令做了这个字符串生成器,它工作正常,但速度不快。

Private Sub SQLString()
    Dim LabelsItens = ArrayLabelsItens()
        Dim String_Labels = "", String_Itens As String = ""

        Dim n As Integer

        For n = 0 To LabelsItens.GetLength(0) - 1
            If n = LabelsItens.GetLength(0) - 1 Then
                String_Itens &= LabelsItens(n, 0)
                String_Labels &= $"'{LabelsItens(n, 2)}'"
            Else
                String_Itens &= LabelsItens(n, 0) & ","
                String_Labels &= $"'{LabelsItens(n, 2)}',"
            End If
        Next
End Sub

Public Function ArrayLabelsItens() As Array

    If Cliente = True Then
        Return {{"Nome", TB_Nome, TB_Nome.Text, TypeName(TB_Nome)},
        {"Documento", TB_Doc, TB_Doc.Text, TypeName(TB_Doc)},
        {"Endereco", TB_Endereco, TB_Endereco.Text, TypeName(TB_Endereco)},
        {"Numero", TB_Numero, TB_Numero.Text, TypeName(TB_Numero)},
        {"Bairro", TB_Bairro, TB_Bairro.Text, TypeName(TB_Bairro)},
        {"CEP", TB_CEP, TB_CEP.Text, TypeName(TB_CEP)},
        {"Cidade", TB_Cidade, TB_Cidade.Text, TypeName(TB_Cidade)},
        {"Estado", TB_Estado, TB_Estado.Text, TypeName(TB_Estado)},
        {"Observacoes", TB_Observacoes, TB_Observacoes.Text, TypeName(TB_Observacoes)},
        {"Tel1", TB_Telefone_1, TB_Telefone_1.Text, TypeName(TB_Telefone_1)},
        {"Tel2", TB_Telefone_2, TB_Telefone_2.Text, TypeName(TB_Telefone_2)},
        {"Tel3", TB_Telefone_3, TB_Telefone_3.Text, TypeName(TB_Telefone_3)},
        {"Tel4", TB_Telefone_4, TB_Telefone_4.Text, TypeName(TB_Telefone_4)},
        {"Email1", TB_Email_1, TB_Email_1.Text, TypeName(TB_Email_1)},
        {"Email2", TB_Email_2, TB_Email_2.Text, TypeName(TB_Email_2)},
        {"Email3", TB_Email_3, TB_Email_3.Text, TypeName(TB_Email_3)},
        {"Fator", TB_Fator, TB_Fator.Text, TypeName(TB_Fator)},
        {"Advalore", TB_Advalore, TB_Advalore.Text, TypeName(TB_Advalore)},
        {"LimiteValor", TB_L_Valor, TB_L_Valor.Text, TypeName(TB_L_Valor)},
        {"LimiteCredito", TB_L_Credito, TB_L_Credito.Text, TypeName(TB_L_Credito)},
        {"DataCadastro", TB_Data_Cadastro, TB_Data_Cadastro.Value, TypeName(TB_Data_Cadastro)},
        {"Credito", CB_Credito, CB_Credito.Checked, TypeName(CB_Credito)},
        {"Pendencias1", CB_Pendencias_1, CB_Pendencias_1.Checked, TypeName(CB_Pendencias_1)},
        {"Pendencias2", CB_Pendencias_2, CB_Pendencias_2.Checked, TypeName(CB_Pendencias_2)},
        {"Pendencias3", CB_Pendencias_3, CB_Pendencias_3.Checked, TypeName(CB_Pendencias_3)}}
    Else
        Return {{"Nome", TB_Nome, TB_Nome.Text, TypeName(TB_Nome)},
        {"Documento", TB_Doc, TB_Doc.Text, TypeName(TB_Doc)},
        {"Endereco", TB_Endereco, TB_Endereco.Text, TypeName(TB_Endereco)},
        {"Numero", TB_Numero, TB_Numero.Text, TypeName(TB_Numero)},
        {"Bairro", TB_Bairro, TB_Bairro.Text, TypeName(TB_Bairro)},
        {"CEP", TB_CEP, TB_CEP.Text, TypeName(TB_CEP)},
        {"Cidade", TB_Cidade, TB_Cidade.Text, TypeName(TB_Cidade)},
        {"Estado", TB_Estado, TB_Estado.Text, TypeName(TB_Estado)},
        {"Observacoes", TB_Observacoes, TB_Observacoes.Text, TypeName(TB_Observacoes)},
        {"Tel1", TB_Telefone_1, TB_Telefone_1.Text, TypeName(TB_Telefone_1)},
        {"Tel2", TB_Telefone_2, TB_Telefone_2.Text, TypeName(TB_Telefone_2)},
        {"Tel3", TB_Telefone_3, TB_Telefone_3.Text, TypeName(TB_Telefone_3)},
        {"Tel4", TB_Telefone_4, TB_Telefone_4.Text, TypeName(TB_Telefone_4)},
        {"Email1", TB_Email_1, TB_Email_1.Text, TypeName(TB_Email_1)},
        {"Email2", TB_Email_2, TB_Email_2.Text, TypeName(TB_Email_2)},
        {"Email3", TB_Email_3, TB_Email_3.Text, TypeName(TB_Email_3)},
        {"DataCadastro", TB_Data_Cadastro, TB_Data_Cadastro.Value, TypeName(TB_Data_Cadastro)},
        {"Credito", CB_Credito, CB_Credito.Checked, TypeName(CB_Credito)},
        {"Pendencias1", CB_Pendencias_1, CB_Pendencias_1.Checked, TypeName(CB_Pendencias_1)},
        {"Pendencias2", CB_Pendencias_2, CB_Pendencias_2.Checked, TypeName(CB_Pendencias_2)},
        {"Pendencias3", CB_Pendencias_3, CB_Pendencias_3.Checked, TypeName(CB_Pendencias_3)}}
    End If

End Function

' Then execute SQL commands and etc etc etc...

它会输出类似的东西,它可以工作,但速度很慢。

UPDATE TAB_SACADOS 
SET NOME = 'NAME OF GUY', 
    DOCUMENTO = '0115648787',
    ENDERECO = 'AVENUE A', 
    NUMERO = '15', 
    BAIRRO = '90 ROCK', 
    CEP = '80.000-000', 
    CIDADE = 'BALBOA', 
    ESTADO = 'RS', 
    OBSERVACOES = '', 
    TEL1 > = '(55)55555-5556', TEL2 = '', TEL3 = '', TEL4 = '', 
    EMAIL1 = '', EMAIL2 = '', EMAIL3 = '', 
    DATACADASTRO = '27/09/2019 00:00:00',
    CREDITO = 'FALSE', PENDENCIAS1 = 'FALSE', PENDENCIAS2 = 'FALSE',
    PENDENCIAS3 = 'FALSE' WHERE ID = 3

在互联网上进行了一些研究后,我发现了该功能.Parameters.Addwithvalue,似乎是正确的使用方法。但我试图弄清楚如何制作一个返回所有这些参数(或任何更好/实用的参数)的函数。

我可以对每个 INSERT、DELETE 和 UPDATE 函数都这样做,但这不切实际。

.Parameters.Addwithvalue(@ID, objid.value)
.Parameters.Addwithvalue(@Name, name.text)
.Parameters.Addwithvalue(@Address, fieldaddress.text)

在这一点上我需要帮助,改进这个工作代码。有什么建议吗?

标签: sqlvb.net

解决方案


推荐阅读