Array
(
)

Update com C# em Access

Pricardo
   - 21 ago 2008

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,

Rfurlanbb
   - 30 ago 2008

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