Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

MarioFilipe123

Eliminar dados da BD a partir do Visual Studio

Mensagens Recomendadas

MarioFilipe123

Boa Tarde. Eu estou a fazer um projecto em que tenho que Ligar a BD a um programa feito no Visual Studio, onde tenho de inserir, eliminar, consultar e actualizar dados.

Mas eu estou com um erro no eliminar dados e nao consigo encontrar o erro.

O codigo que tenho no eliminar é este:

OleDbDataAdapter da = new OleDbDataAdapter();
string ligar = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\SuperMario\\Desktop\\Escola\\Trabalho Final LP\\Programa\\BDDesportos11-016.accdb;Persist Security Info= False;"; OleDbConnection myCon = new OleDbConnection(ligar);
string sql = "";
sql = "Delete * FROM TipoDesporto Where Nome_TipoDesporto like '" + Convert.ToInt32 (textBox1.Text) + "'";
da = new OleDbDataAdapter(sql, ligar);
DataTable dt = new DataTable();
da.Fill(dt);
this.Close();

Quando vou a compilar aparece me este erro:

Cadeia de caracteres de entrada com formato incorrecto.

Nao consigo encontrar a origem do erro. Quem souber agradeço que me digam

Editado por Rechousa
Acrescentada sintaxe de código csharp

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MarioFilipe123

Sim, é exactamente esse o erro. Como posso resolve-lo. Eu admito que nao percebo muito desta linguagem.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Se o conteúdo da textBox1 é directo do utilizador, filtra para não permitir inserir conteúdo indesejado.

E se o conteúdo for um número, não é melhor usar o "=" em vez do "LIKE"?

Tens de ter em atenção, se o utilizador deixa o campo a vazio, elimina tudo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MarioFilipe123

Eu agora mudei o codigo.

O codigo esta assim:

OleDbDataAdapter da = new OleDbDataAdapter();

string ligar = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\SuperMario\\Desktop\\Escola\\Trabalho Final LP\\Programa\\BDDesportos11-016.accdb;Persist Security Info= False;";

OleDbConnection myCon = new OleDbConnection(ligar);

string sql = "";

sql = "Delete * FROM Desporto Where NomeDesporto = '" + (textBox1.Text) + "'";

da = new OleDbDataAdapter(sql, ligar);

DataTable dt = new DataTable();

da.Fill(dt);

this.Close();

Mas agora da me este erro:

Não foi fornecido nenhum valor para um ou mais parâmetros necessários.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Em que linha dá o erro?

E o que estás a por na textBox1?

E será que o que pretendes não é fazer um SELECT em vez do DELETE (já que estás a guardar o resultado numa DataTable) ?

Na base de dados existe a tabela "Desporto" e tem um campo de texto com o nome "NomeDesporto"?

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MarioFilipe123

Ja resolvi o erro. Agora quero alterar os dados mas nao sei qual e o codigo. Tipo o eliminar é (Delete ...) mas qual e o de alterar?

Alguem sabe?

Eu ja tentei UPDATE mas diz que esta mal que nao pode ser esse codigo. A nao ser que esteja a fazer mal o resto

eu tnh assim :

OleDbDataAdapter da = new OleDbDataAdapter();

string ligar = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\SuperMario\\Desktop\\Escola\\Trabalho Final LP\\Programa\\BDDesportos11-016.accdb;Persist Security Info= False;";

OleDbConnection myCon = new OleDbConnection(ligar);

string sql = "";

sql = "Update * FROM Desporto Where NomeDesporto LIKE '" + textBox1.Text + "'";

da = new OleDbDataAdapter(sql, ligar);

DataTable dt = new DataTable();

da.Fill(dt);

this.Close();

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rechousa

Olá,

A tua sintaxe do UPDATE está errada.

Uma sintaxe correcta é:

UPDATE Desporto SET TipoDesporto='Matrecos', NumeroParticipantes=4, Observacoes='Requer uma mesa apropriada' WHERE idDesporto = 125;

Espero ter ajudado,


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruiribeiro

Cuidado com este tipo de código:

sql = "Delete * FROM Desporto Where NomeDesporto = '" + (textBox1.Text) + "'";

textbox1.text="anything' OR 'x'='x"

o que é que achas que vai ser apagado ?????


Rui Ribeiro

.NET/T-SQL, JAVA, PHP, Javascript Developer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

E utilizar Prepared statement?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruiribeiro

O ideal é utilizar stored procedures e parametros, e evitar ao máximo execuções dinamicas de sql...


Rui Ribeiro

.NET/T-SQL, JAVA, PHP, Javascript Developer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.