Método para Alterar BD no MySQL [RESOLVIDO]

8 respostas
AITech_IX

Olá Pessoal! Tenho o seguinte método:

//metodo para alterar uma tabela no MySQL
public void alterar (int opcao) throws SQLException {
		System.out.println ("");
		System.out.println ("Digite o numero correspondente a alteracao?");
		System.out.println ("0 - Endereco; 1 - CEP");
		System.out.println ("2 - Cidade; 3 - Estado;");
		System.out.println ("4 - Pais");
		opcao = input.nextInt();
	switch (opcao){
		case 0:
		{
			String a = "";
			String  endereco = "";
			System.out.println ("Qual é o novo endereco?");
			endereco = input.next();
			
			System.out.println(endereco);
			Statement st = con.createStatement();
			a += " Where idalunos 1";
			a += " Insert Into alunos(endereco) ";
			a += " values('endereco')";
			st.executeUpdate(a);
			return;
		}
		case ..........:

}

Entretanto, ele nao funciona pq, suspeito eu, o valor da variável “endereco” nao é enviado na linha 21, e também aparece o seguinte erro:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near Where idalunos 1 Insert Into alunos(endereco)  values(endereco) at line 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)

at com.mysql.jdbc.Connection.execSQL(Connection.java:3118)

at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1313)

at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1232)

at alunos.alterar(alunos.java:30)

Alguem, por favor, suspeita do que possa ser?

vlw

8 Respostas

R

where idalunos = 1 deve resolver

AITech_IX

Olá Roger.

Sim, rs… tinha esquecido do =
Realmente resolveu alguns dos erros, mas o problema ainda persiste… quando, na linha 21, ao inves da variavel eu coloco ‘algumaString’ ele escreve corretamente…mas quando eu coloco a variavel nada acontece, a nao ser os erros…

:roll:

R

AITech IX:
Olá Roger.

Sim, rs… tinha esquecido do =
Realmente resolveu alguns dos erros, mas o problema ainda persiste… quando, na linha 21, ao inves da variavel eu coloco ‘algumaString’ ele escreve corretamente…mas quando eu coloco a variavel nada acontece, a nao ser os erros…

:roll:

podería postar o código de como o código está?

AITech_IX

Claro!

Segue abaixo:

//classe alunos, que altera o BD

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;
import java.util.Scanner;
public class alunos {

	Connection con = Conexao.getConnection();
	Scanner input = new Scanner(System.in); 
	String p = "";
	public void alterar (int opcao) throws SQLException {
		System.out.println ("");
		System.out.println ("Digite o numero correspondente a alteracao?");
		System.out.println ("0 - Endereco; 1 - CEP");
		System.out.println ("2 - Cidade; 3 - Estado;");
		System.out.println ("4 - Pais");
		opcao = input.nextInt();
	switch (opcao){
		case 0:
		{
			String a = "";
			String  endereco = "";
			System.out.println ("Qual é o novo endereco?");
			endereco = input.next();
			
			System.out.println(endereco);
			Statement st = con.createStatement();
			a += " Where idalunos = 1"; //aqui dá problema, pois ele dá erro de sintaxe
			a += " Insert Into alunos(endereco) ";
			a += " values(endereco)"; //aqui é o grande problema, pois eu quero passar o conteúdo da variável endereço...
			st.executeUpdate(a);
			return;
		}
}
}
}
AITech_IX

//a classe que contem o main

import java.sql.SQLException;
import  java.util.Scanner;
public class Iniciar {

	public static void main (String[] args){

		Conexao.getConnection();
		alunos c = new alunos();
		Scanner input = new Scanner(System.in); 
		System.out.println(Conexao.status);
		int  opcao = 1;
		while (opcao != 4){
			System.out.println ("");
			System.out.println ("Digite o numero correspondente a tarefa?");
			System.out.println ("0 - Alterar; 1 - Excluir");
			System.out.println ("2 - Incluir; 3 - Buscar;");
			System.out.println ("4 - Sair");
			opcao = input.nextInt();

			switch (opcao){
			case 0 :
			{
				try {
					c.alterar(opcao);
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return;
			}
			case 1:
			{
				try {
					c.excluir(opcao);
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return;
			}
			case 2:
			{
				try {
					c.incluir(opcao);
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return;
			}
			case 3:
			{
				try {
					c.buscar(opcao);
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return;
			}
			}//fim switch

		}//fim while
	}
}
AITech_IX

e os erros…

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near Where idalunos = 1 at line 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)

at com.mysql.jdbc.Connection.execSQL(Connection.java:3118 )

at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1313)

at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1232)

at alunos.alterar(alunos.java:28)

at Iniciar.main(Iniciar.java:24)
R

Você está concatenando o sql de maneira errada, por isto a sintaxe está correta

a += " Where idalunos = 1"; //aqui  problema, pois ele  erro de sintaxe  
a += " Insert Into alunos(endereco) ";  
a += " values(endereco)"; //aqui é o grande problema, pois eu quero passar o conteúdo da variável endereço...

Vamos assumir que você tenha uma tabela chamada alunos e o campo a ser alterado é endereço…

Então o sql para isto seria: UPDATE alunos SET endereco = ‘blablabla’;

então modificando seu código seria algo do tipo:

a += " UPDATE alunos";
a += " SET endereco = '" + endereco + "'";  
a += " WHERE idalunos = 1;";

desta maneira o aluno com id = 1 terá o endereço atualizado

AITech_IX

Muito obrigado pelo tempo e pela ajuda Roger!!!

Funcionando perfeitamente agora!!! :smiley:

Abs

Criado 7 de maio de 2010
Ultima resposta 8 de mai. de 2010
Respostas 8
Participantes 2