É com muitíssima vergonha que venho ao fórum pedir à alguma alma caridosa que me faça um exemplo de select no banco de dados, pois eu aqui não estou sabendo fazer, não sei se o problema que estou enfrentando é com SQL, ou com sintaxe Java. Mas assim, eu queria selecionar dois valores no banco, e não fazer um select em uma tabela inteira. Antes de pedir o exemplo aqui, eu pesquisei um pouco no google para ver se eu achava alguma coisa, mas não achei exemplos de select que quero.
Oi Mirrah esse seria um select que vc está querendo?! mat e sen serial uma variavel que estaria recebendo os valores informado pelo usuário ou a propria JTextField ou algo do tipo.
Qualquer duvida manda ai se puder ajudar ^^.
att
I
isaiaspf
Opa.
Ou você pode usar o PreparedStatement:String sql = "SELECT matricula, senha FROM funcionario WHERE matricula = \"" + mat + "\" AND senha =\"" + sen + "\"");
PreparedStatement preparedStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet resultSet = preparedStatement.executeQuery();Abraço.
P
pmlm
Pode não, DEVE!
Mas não dessa forma. Os parâmetros não devem ser colocados directamente no sql com concatenação de Strings.
String sql = "SELECT matricula, senha FROM funcionario WHERE matricula = ? AND senha = ?");
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, mat);
preparedStatement.setString(2, sen);
ResultSet resultSet = preparedStatement.executeQuery();
C
charlesbraw
Como o pmlm disse.
Use PreparedStatement.
Esse jeito de concatenar valores na query traz problemas futuros.
Por exemplo, coloque um date formatado ai para ser inserido no banco de dados e depois mude o idioma do servidor.
Tem outras vantagens ai que a galera deve citar…
R
ricktg
PreparedStatement com certeza.
Se seu select é executado muitas vezes e voce utilizado concatenando os valores no filtro, o banco de dados entende que é um select diferente do anterior e faz o PARSE de novo e depois o execute.
Se utilizar o PreparedStatement, o banco identifica o select como sempre o mesmo e não faz o PARSE novamente. Apenas executa. Isso faz com que seu sql retorne os dados com muito mais rapidez e não utilize tantos recursos do banco de dados para traze-los.
Abs
M
mirrah
pow gente valeu mesmo.
Pode não, DEVE!
Mas não dessa forma. Os parâmetros não devem ser colocados directamente no sql com concatenação de Strings.
view plaincopy to clipboardprint?
String sql = “SELECT matricula, senha FROM funcionario WHERE matricula = ? AND senha = ?”);
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, mat);
preparedStatement.setString(2, sen);
ResultSet resultSet = preparedStatement.executeQuery(); </blockquote>
Mas pmlm eu fiz exatamente como você descreveu ai e não funcionou, dispara a SQLExpecion. Bom vou dar mais uma vez no código, de repente foi um erro de digitação meu.
Mesmo assim valeu mesmo!
P
paty_trind
Ola,
Connectionconexao;Statementcomando;ResultSetresultado;try{
conexao=conecta.conectabanco();comando=conexao.createStatement();}
catch(Exceptione1){
JOptionPane.showMessageDialog(null,"Erro na conexÄo com o banco");e1.printStackTrace();}
try{
resultado=comando.executeQuery("SELECT matricula, senha FROM funcionario WHERE matricula = "+valorMatricula+" AND senha = "+valorSenha+" ");if(resultado.next()){//utilizaoresultadodapesquisa}
}
catch(Exceptiong){
JOptionPane.showMessageDialog(null,"Erro ao pesquisar.\nPor favor verifique!");g.printStackTrace();}