Jump to content
  • 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

Recommended Posts

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

Edited by Rechousa
Acrescentada sintaxe de código csharp

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Repara que estás a tentar concatenar strings com inteiros na linha:

sql = "Delete * FROM TipoDesporto Where Nome_TipoDesporto like '" + Convert.ToInt32 (textBox1.Text) + "'";

Será este o problema?


Pedro Martins

Sharing is Knowledge!

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

Share this post


Link to post
Share on other sites
MarioFilipe123

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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"?

Edited by nelsonr

Share this post


Link to post
Share on other 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();

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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."

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.