La Red de Conocimientos Pedagógicos - Conocimientos universitarios - (Puntuación alta) Necesito urgentemente el código fuente del sistema de gestión de información estudiantil JAVA para conectarme a la base de datos.

(Puntuación alta) Necesito urgentemente el código fuente del sistema de gestión de información estudiantil JAVA para conectarme a la base de datos.

Conexión de base de datos (conexión)

Conexión de base de datos

Hay dos formas de obtener una conexión de base de datos, una es a través de la clase DriverManager y la otra es usar la interfaz DataSource. Ambos métodos proporcionan un método getConnection al que el usuario puede llamar para devolver la conexión a la base de datos después de procesarla en el programa.

Clase DriverManager

Interfaz de origen de datos

Interfaz de conexión

URL JDBC

Protocolo JDBC:& lt; & gt:& ltsubname & gt

Método de registro del conductor

(1) Llame al método Class.forName.

(2) Establecer las propiedades del sistema jdbc.drivers.

Métodos de Driver Manager

Todos los métodos de la clase DriverManager son métodos estáticos, por lo que cuando se utilizan métodos de la clase DriverManager, no es necesario generar una instancia.

Administrador de controladores

Método GetConnection

La función es obtener la conexión a la base de datos, el prototipo es el siguiente:

Conexión estática pública getConnection(String url)

Lanza SQLException

Conexión estática pública getConnection (string url, cadena de usuario, cadena de contraseña)

Lanza SQLException

Conexión estática pública getConnection (URL de cadena, información de atributos)

Lanza SQLException

Utilice el método getConnetion de DriverManager.

clase . forname(" sun . JDBC . odbc . controlador JDBC odbc ");

conexión conn = administrador de controladores

("jdbc: odbc:sqlserver", "sa", "sa");

Utilice el método para configurar la propiedad del sistema jdbc.drivers

Java-djdbc . drivers = sun . JDBC . odbc jdbcodbc driver test.java

Interfaz de fuente de datos

...

//Encuentre la fuente de datos del contexto y obtenga la conexión a la base de datos. .

contexto CTX = nuevo contexto inicial();

fuente de datos ds =(fuente de datos)CTX .búsqueda(" servidor SQL ");

conexión de conexión. = ds.getconnection();

//Consulta todos los registros de la base de datos.

declaración stmt = conn . crear declaración();

ResultSet RS = stmt ejecutar consulta(" SELECCIONAR * DEL estudiante "); /p>

Interfaz de conexión

La interfaz de conexión representa la conexión de base de datos establecida y es el contenido principal de todo el JDBC.

Según sus funciones, los métodos en la interfaz de conexión se pueden dividir en tres categorías:

Generar declaraciones de base de datos

Administrar transacciones de base de datos

Obtener información de base de datos

Generar declaraciones de base de datos

JDBC divide las declaraciones de base de datos en tres tipos:

Generar declaraciones de declaración:

Connection.createStatement()

Generar declaración de declaración preparada:

Contacto. preparestatement()

Generar declaración invocable:

Contacto. prepareCall()

Administrar transacciones de bases de datos

De forma predeterminada, JDBC trata las declaraciones de la base de datos como transacciones completas. Puede desactivar la gestión de transacciones predeterminada:

public void set auto commit (boolean auto commit) lanza SQLException

Establezca el valor de autoCommit en falso para desactivar el modo de gestión automática de transacciones .

Después de ejecutar la transacción, la transacción debe confirmarse:

public void commit() arroja SQLException

Puedes cancelar la transacción:

public void rollback() lanza SQLException

Conferencia 2 Parte 4

Declaración de base de datos

Declaración de base de datos

Hay tres tipos de Declaración de base de datos JDBC * * *:

Declaración:

La declaración de declaración se utiliza principalmente para incrustar declaraciones SQL generales, incluidas consultas, actualizaciones, inserción y eliminación, etc.

Preparación de informes:

PreparedStatement se denomina declaración preparada, que especifica temporalmente algunos parámetros en la declaración SQL, pero se unifica durante la ejecución.

Declaración invocable:

CallableStatement se utiliza para ejecutar el procedimiento almacenado de la base de datos.

Declaración

Método ExecuteQuery

Método ExecuteUpdate

Método de ejecución

Método Cerrar

Método ExecuteQuery

El método ExecuteQuery se utiliza principalmente para ejecutar declaraciones de consulta SQL (QL) que producen un único conjunto de resultados, es decir, declaraciones SELECT. El prototipo del método ejecutarQuery es el siguiente:

El conjunto público de resultados ejecutarQuery(String sql) provoca SQLException

Método ExecuteUpdate

El método ejecutarUpdate se utiliza principalmente para ejecutar las declaraciones INSERT, Update y DELETE, es decir, la declaración de manipulación de datos (DML) de SQL.

El método ejecutarUpdate también puede ejecutar sentencias del lenguaje de definición de datos (DDL) SQL similares a las sentencias CREATE TABLE y DROP TABLE.

El valor de retorno del método ejecutarUpdate es un número entero que indica el número de filas afectadas (es decir, el recuento de actualizaciones). Para declaraciones como CREATE TABLE o DROP TABLE que no operan en filas específicas, el valor de retorno de ejecutarUpdate es siempre cero.

Método de ejecución

El método de ejecución se utiliza para ejecutar:

Devolver múltiples conjuntos de resultados

Actualizar el recuento varias veces

O una combinación de ambos.

Método de ejecución

Devuelve múltiples conjuntos de resultados: primero llame al método getResultSet para obtener el primer conjunto de resultados y luego llame al método getter apropiado para obtener los valores que contiene. Para obtener el segundo conjunto de resultados, primero debe llamar al método getMoreResults y luego llamar al método getResultSet.

Devolver múltiples recuentos de actualizaciones: primero, llame al método getUpdateCount para obtener el primer recuento de actualizaciones. Luego llame a getMoreResults y getUpdateCount nuevamente para obtener el recuento de actualizaciones posteriores.

No sé qué devolver: si el resultado es un objeto ResultSet, el método de ejecución devuelve verdadero; si el resultado es de tipo int, significa que el resultado es un recuento de actualizaciones o el ejecutado; La declaración es un comando DDL.

Método de ejecución

Para ilustrar cómo procesar los resultados devueltos por el método de ejecución, el siguiente es un ejemplo de código:

stmt.execute (query );

while (true) {

int row = stmt . getupdatecount();

//Si es un recuento de actualizaciones

if(row & gt; 0) {

System.out.println("El número de filas actualizadas es: "+row ");

stmt . getmoresults() ;

Continuar ;

}

Método de ejecución

//Si es un comando DDL o 0 actualización

if (row == 0) {

System.out.println("¡No actualice, de lo contrario la declaración SQL será una declaración DDL!");

stmt. getmoresults();

Continuar;

p>

}

//Si es un conjunto de resultados

ResultSet rs = stmt.getResultSet

If (rs!= null) {

while (rs.next()) {

//Procesar el conjunto de resultados

.

}

stmt . getmoresults();

Continuar

}

Romper; >

}

Declaración preparada

Al iniciar sesión en el sitio web o foro:

Usar declaración declaración

declaración stmt = conn . create Statement();

ResultSet rs = stmt.executeQuery

("Seleccione la contraseña de la información del usuario

donde id = userId ");< / p>

Usar declaración PreparedStatement

declaración preparada pstmt = conn . declaración de preparación

("Seleccione la contraseña de la información del usuario

dónde id=? ") ;

pstmt.setString(1, userId);

Declaraciones de informes preparadas

Métodos de configuración comúnmente utilizados

public void set boolean( índice de parámetro int, booleano x) lanza SQLException

byte de conjunto vacío público (índice de parámetro int, byte x) lanza excepción SQL

conjunto vacío público corto (índice de parámetro int, x corto) lanza SQLException

public void setInt(int índice de parámetros, int x) lanza SQLException

public void setLong(int índice de parámetros, long x) lanza SQLException

public void set float(índice de parámetro int, float x) lanza SQLException

public void set double(índice de parámetro int, doble x) lanza SQLException

public void setBigDecimal(índice de parámetro int, BigDecimal x) ) lanza SQLException

public void setString(índice de parámetro int, cadena x) lanza SQLException

public void set bytes(índice de parámetro int, byte[] x) lanza SQLException

public void set Date(int índice de parámetros, Fecha x) lanza SQLException

public void setTime(int índice de parámetros, Time x) lanza SQLException;

public void setTimestamp(int índice de parámetro, marca de tiempo x) arroja SQLException

Declaración de informe preparado

La interfaz PreparedStatement es una extensión de la interfaz Statement, que anula el método ejecutarQuery, el método ejecutarUpdate y el método de ejecución.

El conjunto de resultados público ejecutarQuery() arroja SQLException

public int ejecutarUpdate() arroja SQLException

La ejecución pública booleana() arroja SQLException

Declaración invocable

La declaración CallableStatement se crea mediante el método prepareCall de la interfaz de conexión y se deben pasar parámetros de cadena al crear. El formato de estos parámetros es el siguiente:

{llamar nombre del procedimiento[(?, ?,...)]}

{?= llamar nombre_procedimiento[(?, ?, ...) )]}

{Nombre del procedimiento de llamada}

Declaración invocable

El signo de interrogación es un marcador de posición de parámetro y hay dos tipos de parámetros * * *:

Parámetros de escritura

Parámetros de salida

Los parámetros IN se configuran utilizando el método setter.

Utilice el método RegisterOutParameter para configurar el parámetro OUT.

Declaración invocable

Instrucción invocable cstmt = con . prepare call

("{call getTestData(?, ?)}");

cstmt.registerOutParameter

(1, Java. SQL. tipos. tinyint);

cstmt.registerOutParameter

(2, java.sql. Tipos); .DECIMAL, 3);

cs TMT . ejecutar consulta();

byte x = cstmt . BigDecimal n =

cstmt.getBigDecimal(2, 3);

Conferencia 2 Parte 5

Conjunto de resultados

Conjunto de resultados

Para facilitar el procesamiento de los resultados de la consulta, JDBC define específicamente una interfaz, que es la interfaz ResultSet. La interfaz ResultSet proporciona una forma de acceder a los resultados de la consulta de la base de datos. El objeto al que apunta esta interfaz generalmente se denomina conjunto de resultados.

Existen dos formas de obtener el conjunto de resultados. Una es ejecutar directamente la declaración de consulta y almacenar los resultados en el objeto del conjunto de resultados. El otro no es almacenar los resultados devueltos, sino llamar al método getResultSet de la declaración de la base de datos para devolver el conjunto de resultados cuando sea necesario.

Conjunto de resultados

Puntero del conjunto de resultados

Debido a que el conjunto de resultados devuelto puede contener varios registros de datos, la interfaz ResultSet proporciona un método para sondear los resultados Todos los registros de datos en el conjunto. El conjunto de resultados mantiene automáticamente un puntero al registro de datos actual, que inicialmente apunta a la posición anterior de la primera fila. El siguiente método se utiliza para mover el puntero hacia adelante.

Conjunto de resultados

Propiedades del conjunto de resultados

De forma predeterminada, el conjunto de resultados no se puede actualizar y el puntero del conjunto de resultados solo puede avanzar. Es decir, después de que el usuario obtiene un conjunto de resultados, solo puede leer hacia atrás en el orden desde el primer registro hasta el último registro, pero no puede saltar a ningún registro ni regresar al registro anterior. Además, este sondeo del conjunto de resultados solo se puede realizar una vez y el puntero no se puede restablecer a la posición inicial para múltiples sondeos.

Conjunto de resultados

Propiedades del conjunto de resultados

Tipo

Simultaneidad

Eficiencia

Las propiedades se establecen cuando se genera la declaración de la base de datos pasando los parámetros apropiados al método de generación, pero sus propiedades no se pueden cambiar cuando se devuelve el conjunto de resultados.

Hay tres formas de generar declaraciones a partir del conjunto de resultados.

La declaración pública createStatement() arroja SQLException

La declaración pública crea la declaración

(int resultSetType, int resultSetConcurrency)

Lanza SQLException

Declaración pública crear declaración

(int resultSetType, int resultSetConcurrency,

int resultSetHoldability)

Lanza SQLException

Conjunto de resultados

Hay seis formas de generar PreparedStatement * * *.

La declaración pública preparada prepara la declaración (String SQL) lanza SQLException

La declaración pública preparada prepara la declaración (String SQL, int autoGeneratedKeys)

Lanza SQLException

sentencia preparada pública preparar declaración (String SQL, int[] columnIndexes)

Lanza SQLException

sentencia pública preparada preparar declaración (String SQL, int resultSetType,

int resultSetConcurrency)

Lanza SQLException

declaración preparada pública preparar declaración (String SQL, int resultSetType,

int resultSetConcurrency,

int resultSetHoldability)

Lanza SQLException

declaración preparada pública preparar declaración (String sql. String[] nombre de columna)

Lanza SQLException

Conjunto de resultados

Hay tres formas de generar declaraciones CallableStatement * * *.

declaración pública invocable preparar llamada(String sql)

Lanza SQLException

Declaración pública invocable preparar llamada

(String sql, int resultSetType ,

int resultSetConcurrency)

Lanza SQLException

Declaración pública invocable preparada para llamar

(String sql, int resultSetType,

int resultSetConcurrency,

int resultSetHoldability)

lanza SQLException

conjunto de resultados

Tipos de conjuntos de resultados

Hay tres tipos de conjuntos de resultados * * *. El conjunto de resultados de TYPE_FORWARD_ONLY solo puede mover el puntero hacia adelante, y el conjunto de resultados de type_scroll_inductive y TYPE_SCROLL_SENSITIVE puede mover el puntero a voluntad.

La diferencia entre los dos últimos tipos es que el primero es insensible a modificaciones en otros lugares (estático) y el segundo es sensible a modificaciones en otros lugares (vista dinámica).

Conjunto de resultados

Tipo de conjunto de resultados

Para un conjunto de resultados que puede mover el puntero a voluntad, los métodos que se pueden utilizar para mover el puntero son:

Siguiente y Anterior:

Absoluto y Relativo: Los parámetros pueden ser positivos o negativos.

Después del último, antes del primero, último y primero:

Conjunto de resultados

Simultaneidad del conjunto de resultados

Hay dos tipos de simultaneidad del conjunto de resultados* * *. El conjunto de resultados de CONCUR_READ_ONLY es de solo lectura y no se puede actualizar. El conjunto de resultados de CONCUR_UPDATABLE se puede actualizar mediante el método de actualización.

La interfaz ResultSet proporciona un conjunto de métodos de actualización para actualizar los datos en el conjunto de resultados. Estos métodos son los mismos que los métodos de establecimiento definidos en la interfaz PreparedStatement y también corresponden al tipo. Todos los métodos de actualización comienzan con la actualización.

Todos los métodos de actualización tienen dos parámetros. El primer parámetro se utiliza para especificar la columna actualizada, que puede ser un nombre de columna o un número de serie de columna. El segundo parámetro indica que se actualizará el valor de la columna.

Conjunto de resultados

Simultaneidad del conjunto de resultados

Declaración stmt = conn.createStatement

(Conjunto de resultados. TYPE_SCROLL_SENSITIVE, ResultSet. CONCUR_can Update) ;

ResultSet RS = stmt . ejecutar consulta(" SELECT * FROM Student "+

"donde grado=2, matemáticas>60 y física>60 y "+

p>

"Química>60&inglés>60&chino>60");

while(rs.next()){

rs.updateString("grado ", " 3 "); . update row();

}

Conjunto de resultados

Validez del conjunto de resultados

p>

La validez del resultado. set se refiere a si el conjunto de resultados se cierra automáticamente después de llamar al método de confirmación de la interfaz de conexión. Entonces solo tiene dos valores opcionales, HOLD_CURSORS_OVER_COMMIT y CLOSE_CURSORS_AT_COMMIT. Lo primero significa que el conjunto de resultados no se cerrará después de llamar al método de confirmación; lo segundo significa que el conjunto de resultados se cerrará.

Conjunto de resultados

Método getter del conjunto de resultados

La interfaz ResultSet también proporciona un conjunto de métodos getter para devolver los valores de atributo del registro actual. Todos comienzan con get, seguido del tipo de datos. Por ejemplo, si desea devolver un valor de columna de tipo flotante, debe llamar al método getFloat. Cada tipo de método getter tiene dos formularios con el mismo nombre pero con parámetros diferentes. Ambas formas de métodos getter tienen un solo parámetro. La primera forma de parámetro del método getter es de tipo Cadena, que se utiliza para especificar el nombre de la columna. Otra forma de parámetro del método getter es el tipo int, que se utiliza para especificar el número de serie de la columna.