FIREBIRD X VB.NET

MFLAVIO 08/06/2022 11:20:18
#500044
Bom dia Meus amigos tudo bem

Pessoal eu não sou muito, Letrado em Banco de Dados Firebird
e um de nossos sistema usa essa banco de dados ,
na verdade gostei bastante dele Servidor bem Leve, pelo menos para esse APP que tem pouca coisa ne kkk

bom seguinte, a questão e que estou atualizando umas coisas do APP
e não achei como executar um Commint
uso o código a baixo
      Private Sub Salva()
Try
If conexaoFB.State = 0 Then
Conec()
System.Threading.Thread.Sleep(500)
End If

Dim CMD As FbCommand
SQL = "Insert into pedidos(nome,dcad,dped,id_user,obs,status,PAGAMENTO,pgto_em)" &
"values(@nome,@dcad,@dped,@iduser,@obs,@status,@PAGAMENTO,@pgto_em)"

CMD = New FbCommand(SQL, conexaoFB)
CMD.Parameters.Add("@nome", FbDbType.Char).Value = TXT_nome.Text

If MSK_cadastro.Text = " / /" Then
CMD.Parameters.Add("@dcad", FbDbType.Date).Value = DBNull.Value
Else
CMD.Parameters.Add("@dcad", FbDbType.Date).Value = FormatDateTime(MSK_cadastro.Text, DateFormat.ShortDate)
End If

If DT_para.Text = "" Then
CMD.Parameters.Add("@dped", FbDbType.Date).Value = DBNull.Value
Else
CMD.Parameters.Add("@dped", FbDbType.Date).Value = FormatDateTime(DT_para.Text, DateFormat.ShortDate)
End If
CMD.Parameters.Add("@idUser", FbDbType.Char, 10).Value = User_ID
CMD.Parameters.Add("@obs", FbDbType.VarChar, 1000).Value = TXT_OBS.Text
CMD.Parameters.Add("@status", FbDbType.Char).Value = CMB_Status.Text
CMD.Parameters.Add("@PAGAMENTO", FbDbType.VarChar, 45).Value = IIf(TXT_PGTO.Text = "Selecione", "-", TXT_PGTO.Text.ToUpper)
CMD.Parameters.Add("@pgto_em", FbDbType.VarChar, 45).Value = IIf(CMB_PGTO.Text = "Selecione", "-", CMB_PGTO.Text.ToUpper)

CMD.ExecuteNonQuery()
CMD.Dispose()

PegaID()

Catch ex As Exception
ErroTry(ex.Message, "Atenção")
End Try
End Sub


até esta funcionando, minha duvida e a seguinte
se eu não executei o Commint
em tese o registro esta na memoria do servidor e não salvo no HD correto?

então se algo acontecer(pico de energia ou qualquer outra coisa)

essas informações que não estão no Disco, seriam perdidas, e isso mesmo?
e se sim como faço para executar o Commint
não achei nada sobre isso na classe FbCommand
MARCELOKROL 08/06/2022 19:12:52
#500045
Resposta escolhida
Eu não faria desse modo, mas para resolver/sanar a sua dúvida, seria mais ou menos assim:
  
FbConnection connection = new FbConnection();
FbTransaction transaction = connection.BeginTransaction();

//metodos sql

transaction.Commit();



me desculpe agora que vi que é VB.net:

  
Dim connection As FbConnection = New FbConnection()
Dim transaction As FbTransaction = connection.BeginTransaction()

"métodos

transaction.Commit()
MFLAVIO 09/06/2022 16:47:13
#500047
Citação:

:
Eu não faria desse modo, mas para resolver/sanar a sua dúvida, seria mais ou menos assim:

  
FbConnection connection = new FbConnection();
FbTransaction transaction = connection.BeginTransaction();

//metodos sql

transaction.Commit();



me desculpe agora que vi que é VB.net:

  
Dim connection As FbConnection = New FbConnection()
Dim transaction As FbTransaction = connection.BeginTransaction()

"métodos

transaction.Commit()


duvida

BEGIN.TRANSACTION não seria a primeira transação aberta?
to perguntando porque o sistema roda em rede com multiusuarios

se begin e a primeira pode acontecer de executar COMMINT na transação de outro usuario
não tem como Identificar a Transação em questão e executar o Commint nela?
MARCELOKROL 09/06/2022 20:33:53
#500048
Sim o Begin inicia, e o commit confirma, ja o rollback cancela. Mas isso fica preso na conexão, não é por usuário, tanto é que, quem inicia a transação, é a connection: Exemplo: Dim transaction As FbTransaction = connection.BeginTransaction()
MFLAVIO 14/06/2022 14:07:20
#500062
Citação:

:
Sim o Begin inicia, e o commit confirma, ja o rollback cancela. Mas isso fica preso na conexão, não é por usuário, tanto é que, quem inicia a transação, é a connection: Exemplo: Dim transaction As FbTransaction = connection.BeginTransaction()




hum entendi
seguindo essa logica então e bom sempre fechar a conexão ao terminar de salvar o registro
Tópico encerrado , respostas não são mais permitidas