Sql 更新查询不工作vb net

Sql 更新查询不工作vb net,sql,vb.net,postgresql,npgsql,Sql,Vb.net,Postgresql,Npgsql,当我尝试使用下面的查询更新数据库时,我收到消息“update successful”,但这不是真的,我的数据仍然与以前一样 公共函数alterar()作为布尔值 Dim cd作为新的npgsql命令 Dim查询为字符串=“” 尝试 查询&=“更新[Caixa]集合Recibo=”&iRecibo&“”,中心存储=”&sCentroCusto&“,数据=”&sData&“,Dia=”&sDia&“_ Mes=“&sMes&”,Ano=“&sAno&”,CentroCustoResumo=“&sCe

当我尝试使用下面的查询更新数据库时,我收到消息“update successful”,但这不是真的,我的数据仍然与以前一样

公共函数alterar()作为布尔值 Dim cd作为新的npgsql命令 Dim查询为字符串=“” 尝试 查询&=“更新[Caixa]集合Recibo=”&iRecibo&“”,中心存储=”&sCentroCusto&“,数据=”&sData&“,Dia=”&sDia&“_ Mes=“&sMes&”,Ano=“&sAno&”,CentroCustoResumo=“&sCentroCustoResumo&”,CodSubCentroCusto=“&sCodSubCentroCusto&”_ DescSubCentroCusto='”&sdescssubcentrocusto&'、Eventos='、&sEventos&'、Historico='、&sHistorico&'_ 迪涅罗=“&sDinheiro&”,支票=“&sCheque&”,卡托=“&sCartao&”,存款=“&sDepositoDireto&”_ Total='”&sTotal&“其中Recibo='”&iRecibo.ToString() 如果Conexao.NonQuery(cd),则 sStatus=“O Recibo”&iRecibo和“foi alterado com successo!” 返回真值 如果结束 特例 sStatus=ex.消息 结束尝试 返回真值 端函数 私有子按钮4\u单击(发送者作为对象,e作为事件参数)处理按钮4。单击 尺寸c作为新的Caixa() 尝试 如果是TextBox1.Text“”,则 c、 Recibo=CInt(TextBox1.Text) 如果c.excluir()那么 MessageBox.Show(c.Status) CaixaLoad() 其他的 MessageBox.Show(c.Status) 如果结束 其他的 MessageBox.Show(“Nenhum registro seleconado!”) 如果结束 特例 'MessageBox.Show(例如Message) 结束尝试 端接头 我的查询有什么问题?

正在修复代码 请尝试以下代码:(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未终止的引号字符串位于或接近“我选择要更新的字段”