(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
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 p>
.
}
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 p>
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.