Dividar texto do TextFild para pesquisar em duas colunas da tabela

Tenho uma tela de pesquisa com um TextFild para pesquisa. O que o usuario digitar nesse campo eu quero pesquisar em duas colunas de uma tabela.Algo parecido com isso.
SELECT * FROM TABELA WHERE COLUNA1 LIKE ‘%pesquisa%’ OR COLUNA2 LIKE '%pesquisa%'
No meu método pesquisar passo um paremetro para pesquisa, que quando chamo o metodo no botão, eu passo como parametro o que foi digitado no TextFild.
Como eu faço para pegar o que foi digitado no TextFild e fazer a consulta nas duas colunas?

Pegar o texto

String texto = jTextField.getText();

Para a consulta, sugiro utilizar PreparedStatement

String query = "SELECT * FROM TABELA WHERE COLUNA1 LIKE ? OR COLUNA2 LIKE ?";
PreparedStatement stm = connection.prepareStatement(query);
pstm.setString(1, "%" + texto + "%");
pstm.setString(2, "%" + texto + "%");
pstm.execute();
ResultSet rs = pstm.getResultSet();

Entendeu?

Esse é meu metodo atual, eu utilizando o OR porém a pesquisa não esta funcionando

public List pesquisarResitro(String nomeDisco){
Conexao con = new Conexao();
List discos = new ArrayList<>();
String sql = “SELECT * FROM “DISCO” “
+ “WHERE “NM_CANTOR” LIKE '%”+nomeDisco+”%’”
+ “OR “NM_DISCO” LIKE '%”+nomeDisco+"%’;";

	try {
		PreparedStatement ps = con.getConexao().prepareStatement(sql);			
		ResultSet rs = ps.executeQuery();
		
		while(rs.next()){
			Disco disco = new Disco();
			disco.setIdDisco(rs.getInt("ID_DISCO"));
			disco.setNomeDisco(rs.getString("NM_DISCO"));
			disco.setNomeCantor(rs.getString("NM_CANTOR"));
			disco.setNomeProdutor(rs.getString("NM_PRODUTOR"));
			disco.setNomeSelo(rs.getString("SELO"));
			disco.setNomeVertente(rs.getString("VERTENTE"));
			disco.setAnoProducao(rs.getString("ANO_PRODUCAO"));
			disco.setFormato(rs.getString("FORMATO"));
			disco.setObs(rs.getString("OBS"));
			
			discos.add(disco);
		}
		rs.close();
		ps.close();
		
	} catch (SQLException e) {
		throw new RuntimeException(e.getMessage());
	}
	
	return discos;
}

Não retorna nada ou dá algum erro?

E realmente,é melhor você usar o Prepared Statement, fica algo mais organizado seguindo os padrões de boa prática.

Mas eu estou usando o PreparedStatement.
Ele não retorna erro, ele so faz a pesquisa se uma das pesquisas está no banco, não as duas ao mesmo tempo.
por exemplo
se eu digito “cantor musica” ele retorna falando que não tem nenhum dado no banco
mas se eu digito “cantor” ou “musica” ele retorna o registro

Irão ser sempre dois valores separados por espaço?
Exemplo: valor1 valor2

E sempre o valor1 vai se referir e coluna1 e o valor2 a coluna2?

ahamm

Acho que é umas das coisas mais improvisadas que eu já fiz. haha

Deve haver outras formas bem mais fáceis e mais limpas de se fazer isso, mas essa resolve seu problema, só adaptar a lógica ao seu código.

String texto = "Valor1 Valor2";
        String s1 = "";
        String s2 = "";
        int i = 0;
        
        while(texto.charAt(i) != ' ') {
            s1 = s1 + texto.charAt(i);
            i++;
        }
        s2 = texto.substring(i+1);

        System.out.println(s1);
        System.out.println(s2);

Não me recordo direito, mas, a cláusula OR deveria permitir obter os resultados quando uma ou outra ou ambas as condições fossem atendidas.

O problema não é esse, ele queria uma coisa e disse outra.
O SQL funciona, só que o que está sendo passado como parâmetro que não corresponde ao que ele quer.

O que ele realmente quer:
Parâmetro sting: “valor1 valor2”

SELECT * FROM TABELA WHERE COLUNA1 LIKE '%valor1%' OR COLUNA2 LIKE '%valor2%'

O que está sendo passado:

SELECT * FROM TABELA WHERE COLUNA1 LIKE '%valor1 valor2%' OR COLUNA2 LIKE '%valor1 valor2%'

Aí, realmente não funciona.

realmente isso que esta acontecendo
como eu faço pra fazer da maneira certa?
o exemplo do amigo de cima nao consegui entender muito bem…

Pesquisa sobre full text search para o seu banco de dados. Exemplo em MySql: https://pt.blog.marceloaltmann.com/en-using-the-mysql-fulltext-index-search-pt-utilizando-mysql-fulltext/