Boa tarde galera, é o seguinte… tenho esse código aqui:
public void salvar(String texto111, String texto222) -> //estas variáveis puxando os valores do textfield de outra tela
{
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1/test", "root", "senha");
String sql = "insert into teste (texto1, texto2) values('texto111', 'texto222')"; -> //aqui, porém salva só texto111 e texto222
Statement st = conexao.createStatement();
st.execute(sql);
st.close();
conexao.close();
JOptionPane.showMessageDialog(null, "Registro salvo com sucesso !","",JOptionPane.INFORMATION_MESSAGE);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, e);
}
então, eu quero pegar os valores pra inserir no banco em outro método, passando as variáveis texto111 e texto222 por parâmetro, só q na hora de inserir grava o texto111 e texto222 e não o valor da textfield da outra tela. Já tentei tirar os ’ ’ mas dá erro. Não faço idéia como faz…
Certifique-se do valor das variáveis texto111 e texto222 passadas ao método. Além disso, quando tiver problemas com sql, algo que você pode fazer é plotar a String sql e a escrever diretamente no banco para encontrar o erro mais facilmente… Até mais.
nossa… valeu cara, funcionou do jeito que você tinha falado… fiz outro programa de testes aqui e esqueci de fazer o getText no textfield, por isso estava vazio…rs
Se depois você quiser recuperar os dois separadamente você pode usar a função split da classe String.
//endereco e logradouro passados pelo método
// Tá concatenando os dois campos separando por -
String sql = "insert into teste (endereco) values('" + endereco + "-" + logradouro + "')";
Se depois você quiser recuperar os dois separadamente você pode usar a função split da classe String.
//endereco e logradouro passados pelo método
// Tá concatenando os dois campos separando por -
String sql = "insert into teste (endereco) values('" + endereco + "-" + logradouro + "')";
[/quote]
cara, consegui assim:
[code],'"+variavel1+"' '"+variavel2"', //só colocando o espaço entre as duas variáveis sem separá-las por vírgula...
Repare nos ? no sql. Os campos serão substituídos de acordo com a ordem que você puser no setString. Outros tipos de dados tb estão disponíveis, como setInt, setLong, setDouble, etc.
O problema de você colocar só separando por caracter vazio é que se depois você quiser pegar as informações separadamente vai ter problemas, pois possivelmente o endereco e logradouro já possuirão caracteres vazios… e outra coisa, você parece que está colocando aspas simples demais aí no teu código.
É bom você entender que as aspas duplas são “interpretadas” pelo Java para definir a string, as aspas simples serão “interpretadas” pelo banco MySQL (fazem parte da sintaxe).
//Isso aqui já funcionaria separando por caracter vazio
String sql = "insert into teste (endereco) values ('" + endereco + " " + logradouro + "')";
Pois é, prepareStatement é uma boa solução. Até mais.