Dúvida sobre SQLite

Boa tarde!

Recentemente precisei desenvolver uma aplicação pra deixar rodando na máquina de alguns clientes, porém como software não é minha área encontrei algumas dificuldades e preciso de uma luz dos amigos especialistas :slight_smile:

O software basicamente se conecta com o servidor a cada x segundos e salva as novas informações no DB caso haja, e fica nesse loop com um timer enquanto o software estiver em execução. Existe ainda um outro loop(também com timer a cada x segundos) que checa se o db tem novas informações para exibir na lista.

Já tive alguns problemas como SQL_BUSY, mas fiz algumas melhorias e o erro não aparece mais para mim.
A questão toda é, em 10 máquinas o software está perfeito, porém em 3 ele não funciona. Consigo fazer o login pelo software, ou seja, ele faz a requisição e salva no db, porém quando chega na parte dos loops ele simplesmente para de salvar as infos no db.

Então minha dúvida seria: ter esse loop checando o db toda hora pode ser prejudicial para algumas máquinas? Se sim, qual seria a boa prática para isso? O que pode acontecer de funcionar em algumas máquinas e em outras não sendo que é o mesmo sistema?

Um exemplo de um dos códigos do loop:

public void checkInfoDB() {
	
	try {
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:data.db");
        Statement stat = conn.createStatement();
        
        ResultSet rs = stat.executeQuery("SELECT * FROM info;");
		
		while (rs.next()) {
			// aqui é onde comparo com a lista
		}
					
		rs.close();
	    stat.close();
        conn.close();
				
		timer.schedule(new TimerTask() {
		  @Override
		  public void run() {
			  Platform.runLater(new Runnable() {
				  public void run() {
					  checkInfoDB();
				  }
			  });
		  }
		}, 2500);	
		
	} catch (Exception e) {
		System.out.println("Erro checkInfoDB(): " + e.getMessage());
	}

}

Desculpe se a questão ficou muito longa, mas qualquer orientação será muito bem vinda.

Um abraço a todos!

Voce omitiu a principal parte do código para sabermos o problema.

while (rs.next()) {
    // aqui é onde comparo com a lista
}

Essa parte não é o problema, isso já consegui verificar. Postei esse trecho mais para mostrar como faço a conexão com o db. Vi algumas coisas sobre DAO, mas não tive tempo de implementar ainda.

Pelo fato de eu usar o JavaFX, os loops ficam rodando simultaneamente, e é isso que não tenho certeza se é legal de se fazer. Como não consigo reproduzir o erro em minha máquina e em máquinas virtuais, não sei o que ocorre no cliente. Pode ser que esteja dando SQL_BUSY, mas não sei como resolver

Como assim simultaneamente? SQlite é mono usuário/mono acesso.

Deixo um loop rodando na inicialização da aplicação, depois abro outro stage que roda um loop também. Ou seja, pode ser que aconteça deles tentarem abrir junto

Faz uma execucao por vez.

        while (true) {  
            executaTodoProcesso();
            Thread.sleep(5000);
        }