Actualización de liña de código

Programación en Java

contra unha base de datos que podemos Executa diferentes tipos de declaracións, desde unha simple consulta, a través de insercións masivas, ata unha declaración que aumenta os permisos dun grupo de usuarios.

Pero agora imos centrarnos nas consultas (SELECT) con Java JDBC. Estes tipos de declaracións utilizalos para recuperar un conxunto de datos da base de datos. Neles, normal, é seleccionar un conxunto de campos dunha táboa e amosarlles na pantalla.

Clear é que cando deixamos o exemplo básico da táboa de 10 rexistros e facemos táboas de millóns de persoas E millóns de datos, debemos, que veñen, que sería bastante recomendable, realizar algún tipo de filtro. Creo que calquera xestor de bases de datos podería chegar ás mans connosco se executamos unha consulta sobre unha táboa cliente se non inclúen ningún filtro. Agora, que si só filtramos por cidade igual a “Ávila”, creo tamén.

Ben, o que imos. Temos diferentes xeitos de realizar filtros nunha consulta. O primeiro enfoque é codificar directamente os valores da frase. Algo así como …

SELECT nombre, edad, profesión, ciudadFROM personasWHERE ciudad = 'Ávila'AND edad BETWEEN 24 AND 32

que si, esperemos que o noso xefe non nos diga que el quere un informe onde introducir unha cidade e dúas idades que tomamos fóra do conxunto de persoas que cumpren estes requisitos.

A se como estamos moi previstas, diriximos a seguinte consulta onde os parámetros van variables. Manter algo así …

String sCiudad, sEdad1, sEdad2;String sSQL = "SELECT nombre, edad, profesión, ciudad FROM personas WHERE ciudad = '" + sCiudad + "' AND edad BETWEEN " + sEdad1 + " AND " + sEdad1 + ";"

Porque este é un dos maiores erros que podemos facer e é que a concatenación de cadeas pode levar ao seguinte ( Se non, tomamos as precaucións necesarias e se ocorre que temos un pouco alarmado usuario).

sCiudad = "Avila";sEdad1 = "20";sEdad2 = "28; DELETE FROM cuentas";

permanece executando a seguinte consulta:

SELECT nombre, edad, profesión, ciudadFROM personasWHERE ciudad = 'Ávila'AND edad BETWEEN 24 AND 32;DELETE FROM cuentas

e creo que é se non vai gusta de gustar o noso xefe nada.

Digamos que este é un caso excepcional e que non debería ocorrer. É coñecido como inxección de código SQL. Aínda así, a forma máis correcta de facelo sería inserir parámetros.

Inicialmente, en Java JDBC, debemos poñer un interrogatorio en cada sitio onde queremos poñer un valor dinámico. A continuación, substituiremos cada interrogatorio por un valor usando o método STXXXX da preparación. Onde XXX será o tipo de valor que queremos inserir: cadea, int, data, … así que teremos SetString, Sterint, Setarray, Setbyte, …

Como saber por que o interrogatorio substitúe O valor? Ben, porque, o primeiro parámetro do método é o número de preguntas a ser substituído (a partir de 1).

stmt = con.prepareStatement("SELECT nombre, edad, profesion, ciudad FROM Personas WHERE edad > ? AND ciudad = ?");stmt.setInt(1,25);stmt.setString(2,"Salamanca");
19 Compartir

Leave a Comment

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *