Update com C# em Access
21/08/2008
0
Salve!
Numa aplicação Web que estou fazendo, uso o Access como repositório dos dados (fazer o quê? É o que tenho aqui.).
A aplicação está sendo feita em n-camadas. Na camada de persistência dos dados (que chamei de DAL) tenho o método para atualizar um registro. Esse método recebe como parâmetro um objeto do tipo que está listado numa gridview. Nesse método coloquei o CommandType como StoredProcedure, pois criei uma consulta do tipo atualização no Access para fazer a atualização (aquela estória de evitar SQL Injection), conforme código abaixo:
public void AtualizarEquipamento(DTO.clsEquipamento oEquipamento)
{
OleDbConnection con = new OleDbConnection(ConStr);
string SQL = ´AtualizarEquipamento´;
OleDbCommand cmd = new OleDbCommand(SQL, con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(´p_idEquipamento´, oEquipamento.IdEquipamento);
cmd.Parameters.AddWithValue(´p_dcEquipamento´, oEquipamento.DcEquipamento);
cmd.Parameters.AddWithValue(´p_blnTensao´, oEquipamento.BlnTensao);
cmd.Parameters.AddWithValue(´p_blnPotencia´, oEquipamento.BlnPotencia);
con.Open();
try
{
cmd.ExecuteNonQuery();
}
finally
{
con.Close();
}
}
Ao rodar a aplicação e tentar a atualização na gridview aparece uma mensagem informando que uma exceção foi gerada.
Agora, se ao invés de usar a ´StoredProcedure´ eu uso o CommandType do tipo Text e executo, tudo funciona normalmente. Consigo atualizar o registro.
Creio ser alguma coisa na ´StoredProcedure´ que é como descrita abaixo:
UPDATE Equipamentos SET dcEquipamento = p_dcEquipamento, blnTensao = p_blnTensao, blnPotencia = p_blnPotencia
WHERE idEquipamento=p_idEquipamento;
Os campos blnTensao e blnPotencia são definidos como Sim/Não no formato Verdadeiro/Falso no Access. E as propriedades BlnTensao e BlnPotencia da classe clsEquipamento são do tipo bool.
O que pode estar errado na StoredProcedure que não permite que eu consiga atualizar?
Agradeço a atenção de todos,
Numa aplicação Web que estou fazendo, uso o Access como repositório dos dados (fazer o quê? É o que tenho aqui.).
A aplicação está sendo feita em n-camadas. Na camada de persistência dos dados (que chamei de DAL) tenho o método para atualizar um registro. Esse método recebe como parâmetro um objeto do tipo que está listado numa gridview. Nesse método coloquei o CommandType como StoredProcedure, pois criei uma consulta do tipo atualização no Access para fazer a atualização (aquela estória de evitar SQL Injection), conforme código abaixo:
public void AtualizarEquipamento(DTO.clsEquipamento oEquipamento)
{
OleDbConnection con = new OleDbConnection(ConStr);
string SQL = ´AtualizarEquipamento´;
OleDbCommand cmd = new OleDbCommand(SQL, con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(´p_idEquipamento´, oEquipamento.IdEquipamento);
cmd.Parameters.AddWithValue(´p_dcEquipamento´, oEquipamento.DcEquipamento);
cmd.Parameters.AddWithValue(´p_blnTensao´, oEquipamento.BlnTensao);
cmd.Parameters.AddWithValue(´p_blnPotencia´, oEquipamento.BlnPotencia);
con.Open();
try
{
cmd.ExecuteNonQuery();
}
finally
{
con.Close();
}
}
Ao rodar a aplicação e tentar a atualização na gridview aparece uma mensagem informando que uma exceção foi gerada.
Agora, se ao invés de usar a ´StoredProcedure´ eu uso o CommandType do tipo Text e executo, tudo funciona normalmente. Consigo atualizar o registro.
Creio ser alguma coisa na ´StoredProcedure´ que é como descrita abaixo:
UPDATE Equipamentos SET dcEquipamento = p_dcEquipamento, blnTensao = p_blnTensao, blnPotencia = p_blnPotencia
WHERE idEquipamento=p_idEquipamento;
Os campos blnTensao e blnPotencia são definidos como Sim/Não no formato Verdadeiro/Falso no Access. E as propriedades BlnTensao e BlnPotencia da classe clsEquipamento são do tipo bool.
O que pode estar errado na StoredProcedure que não permite que eu consiga atualizar?
Agradeço a atenção de todos,
Pricardo
Curtir tópico
+ 0
Responder
Posts
30/08/2008
Rfurlanbb
experimente definir os campos do banco de dados que tem tipo sim/nao, como texto(1) ai vc grava S ou N. podeser por isso estã falando.
espero ter ajudado
espero ter ajudado
Responder
Clique aqui para fazer login e interagir na Comunidade :)