preparedStatement.getString(int i,String str); --> o que é esse inteiro "int i"?

7 respostas
L

Pessoal,

tem pequenas informações muito difíceis de se encontrar.
Então, venho por meio desta, lhes perguntar: ao que se refere o inteiro aceito no parâmetro deste método? preparedStatement.getString(int i, String str); // Ao que se refere esse inteiro "int i"??? Valeu

7 Respostas

pmlm

A classe PreparedStatement não tem nenhum método getString.

E a API do java é muito fácil de encontrar.

Fexx

lucasribeiro:
Pessoal,

tem pequenas informações muito difíceis de se encontrar.
Então, venho por meio desta, lhes perguntar: ao que se refere o inteiro aceito no parâmetro deste método? preparedStatement.getString(int i, String str); // Ao que se refere esse inteiro "int i"??? Valeu

Na verdade, esse método seria:

preparedStatement.setString(int i, String str);

Onde o i é a posição das interrogações(Positional Parameter Notation) que tem em seu sql.
E a str: é a String que será passará como valor para a posição do i

Simples exemplo:

sql = insert into produto(nome, marca) values (?, ?)
preparedStatement.setString(1,  "Camiseta");
preparedStatement.setString(2,  "Polo");

Espero que tenha entendido.

Abraços.

Fica com DEUS.

L

Ué!

Eita! Tem razão, mas eu quis dizer “set” mesmo… Poxa, tô dormindo mesmo. Era só olhar na API…

Mas tem “setString()”, né? Olha esse post:
http://www.guj.com.br/java/107757-metodo-preparedstatement

Olha a descrição da API acessada através do eclipse (só tirei as throws):

void setString(int parameterIndex,String x)

Parameters:
parameterIndex - the first parameter is 1, the second is 2, …
x - the parameter value
Throws:
SQLException - if parameterIndex does not correspond to a parameter marker in the SQL statement; if a database access error occurs or this method is called on a closed PreparedStatement

É verdade. Valeu…

L

Pessoa(s),

depois disso, eu estou fazendo assim:
static String query =
		"INSERT INTO empresas(" +
			"captacao,razaoSocial,nomeFantasia," +
			"cnpj,aberturaCnpj,atividadePrincipal," +
			"atividadesSecundarias,endereco,situacaoCadastral," +
			"rlNome,rlEmail,rlFixo,rlCelular" +
		") value (" +
			"?,?,?,?,?,?,?,?,?,?,?,?,?)" +
		");";

	
	public static void adicionar(){
		try{
			conn = DriverManager.getConnection(DATABASE_URL, "SstAdmin","adminsst.123");
			prepared = conn.prepareStatement(query);
			prepared.setString(1,captacao);
            prepared.setString(2,razaoSocial);
            prepared.setString(3,nomeFantasia);
            prepared.setString(4,cnpj);
            prepared.setString(5,aberturaCnpj);
            prepared.setString(6,atividadePrincipal);
            prepared.setString(7,atividadesSecundarias);
            prepared.setString(8,endereco);
            prepared.setString(9,situacaoCadastral);
            prepared.setString(10,rlNome);
            prepared.setString(11,rlEmail);
            prepared.setString(12,rlFixo);
            prepared.setString(13,rlCelular);
            prepared.executeUpdate(query);
            prepared.close();
            conn.close();
		} catch(SQLException sqlException){
			sqlException.printStackTrace();
			System.exit(1);
		}
	}
Mas recebo a seguinte exception:
com.mysql.jdbc.exceptions.jdbc4.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 '?,?,?,?,?,?,?,?,?,?,?,?,?))' at line 1
Gostaria que me ajudassem (mas uma vez...)

Valeu

Fexx

Onde tem:

prepared.executeUpdate(query);

Troque por:

prepared.executeUpdate();

Verifique também os tipos que está passando para o prepared.setString, ou seja, verifique se todos os atributos realmente é do tipo String.

Testa ai.

L

Sim. Até que se faça necessário fazer diferente, estou usando string para todos, menos a chave primária…
Tá valendo. Poxa, quero começar a ajudar tbm…

L

Pessoal, agora foi! Tô feliz.
Valeu mesmo…

Criado 3 de maio de 2013
Ultima resposta 3 de mai. de 2013
Respostas 7
Participantes 3