【问题标题】:update query not working vb net更新查询不起作用 vb net
【发布时间】:2018-01-15 15:01:17
【问题描述】:

当我尝试使用以下查询更新数据库时,我收到消息“更新成功”,但事实并非如此,我的数据仍然和以前一样。

Public Function alterar() As Boolean
    Dim cd As New npgSqlCommand
    Dim query As String = ""

    Try
       query &= "UPDATE [Caixa] SET Recibo = '" & iRecibo & "' ,  CentroCusto = '" & sCentroCusto & "' ,  Data = '" & sData & "' , Dia = '" & sDia & "' , _
       Mes ='" & sMes & "', Ano = '" & sAno & "' , CentroCustoResumo = '" & sCentroCustoResumo & "' , CodSubCentroCusto ='" & sCodSubCentroCusto & "', _
        DescSubCentroCusto ='" & sDescSubCentroCusto & "', Eventos ='" & sEventos & "', Historico = '" & sHistorico & "' , _
       Dinheiro = '" & sDinheiro & "', Cheque = '" & sCheque & "', Cartao = '" & sCartao & "', DepositoDireto = '" & sDepositoDireto & "', _
       Total ='" & sTotal &  "' WHERE Recibo = '" & iRecibo.ToString()

        If Conexao.NonQuery(cd) Then
            sStatus = "O Recibo " & iRecibo & " foi alterado com sucesso!"
            Return True
        End If
    Catch ex As Exception
        sStatus = ex.Message
    End Try
    Return True
End Function

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim c As New Caixa()
    Try
        If TextBox1.Text <> "" Then
            c.Recibo = CInt(TextBox1.Text)

            If c.excluir() Then
                MessageBox.Show(c.Status)
                CaixaLoad()
            Else
                MessageBox.Show(c.Status)
            End If
        Else
            MessageBox.Show("Nenhum registro selecionado!")
        End If
    Catch ex As Exception
        'MessageBox.Show(ex.Message)
    End Try
End Sub

我的查询有什么问题?

【问题讨论】:

    标签: sql vb.net postgresql npgsql


    【解决方案1】:

    修复代码

    试试下面的代码,(1)我用cmd.ExecuteNonQuery()代替Conexao.NonQuery(cd),(2)query字符串没有分配给cmd命令,(3)[]括号没有使用在 postgresql 中,如果需要,您必须使用双引号。 (4) 使用 npgsqlcommand 类时推荐使用Using

    Public Function alterar() As Boolean
    
        Dim query As String = ""
        Try
    
           query = "UPDATE Caixa SET Recibo = '" & iRecibo & "' ,  CentroCusto = '" & sCentroCusto & "' ,  Data = '" & sData & "' , Dia = '" & sDia & "' , " &  _
           "Mes ='" & sMes & "', Ano = '" & sAno & "' , CentroCustoResumo = '" & sCentroCustoResumo & "' , CodSubCentroCusto ='" & sCodSubCentroCusto & "', " &  _
           "DescSubCentroCusto ='" & sDescSubCentroCusto & "', Eventos ='" & sEventos & "', Historico = '" & sHistorico & "' , " & _
           "Dinheiro = '" & sDinheiro & "', Cheque = '" & sCheque & "', Cartao = '" & sCartao & "', DepositoDireto = '" & sDepositoDireto & "', " & _
           "Total ='" & sTotal &  "' WHERE Recibo = '" & iRecibo.ToString & "'"
    
            Using cmd As New npgSqlCommand
    
                cmd.CommandText = query
                cmd.Connection = conn 
    
                cmd.ExecuteNonQuery()
                sStatus = "O Recibo " & iRecibo & " foi alterado com sucesso!"
    
            End Using
    
            Return True
    
    
    
        Catch ex As Exception
            sStatus = ex.Message
            Return False
        End Try
    
    End Function
    

    参数化查询

    建议使用参数化查询以获得更好的安全性(更安全地防止 sql 注入)和更好的性能,您可以关注这些类似的问题以获取更多信息:

    参考文献

    【讨论】:

    • @Leogreen 我没有更改查询语法中的任何内容,但我会检查一下。
    • 42601 未终止的带引号的字符串在“我选择更新的字段”处或附近”
    • @Leogreen 我删除了引号,因为没有带空格的列名现在试试
    • 你有没有试过自己调试,所以不是代码编写服务......到目前为止你已经弄明白了......
    • 仍然是相同的错误 42601 未终止的引用字符串在“我选择更新的字段”或附近“我选择更新的字段”
    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多