Contenu principal:
1. JDBC Connexion Base de données (Modifier) (il y a principalement six étapes)
1. Enregistrez le pilote: class.forname ("com.mysql.jdbc.driver"); Charge affichée dans le JVM
2. Obtenez la connexion: (1) Param1: l'URL pour se connecter à la base de données -----》 String url = "jdbc: mysql: // localhost: 3306 / test?" + "Useunicode = true & caractèrescoding = utf8"; //
Param2: nom d'utilisateur pour se connecter à la base de données--》 String user = "h4";
Param3: mot de passe pour se connecter à la base de données ----》 String Pass = "111";
Connection Conn = driverManager.getConnection (URL, utilisateur, pass); // Méthodes sous DriverManager: getConnection (URL de chaîne, nom d'utilisateur de chaîne, mot de passe de chaîne)
(2) Ensuite, nous analysons l'URL: "JDBC (ce protocole commence par JDBC): MySQL (il s'agit d'un sous-protocole, nom du système de gestion de la base de données): // LocalHost (Adresse source de la base de données): 3306 (port cible) / test (table de table à interrogation)?"
"useunicode = true & caractèrescoding = utf8"; Ceci est ajouté pour empêcher le code brouillé, et il est spécifié d'utiliser des jeux de caractères Unicode et de les modifier à l'aide de UTF-8.
3. Créer un objet de déclaration d'instruction (trois méthodes principales): instruction stmt = conn.createStatement (); // Méthodes sous l'interface de connexion: instruction CreateStatement ()
Préparé Pstmt = Conn.PreparedStatement ();
CallableStatement cstmt = conn.preparecall ("{appel démosp (?,?)}");
Analysons-les ci-dessous: (1) la différence entre la déclaration et les objets PréparedStatement, qui peuvent définir dynamiquement les paramètres de requête
(2) Méthode pour régler les paramètres préparés. Si le type de paramètre de base de données est VARCHAR, SetString est utilisé. Si le type de paramètre est entier, SetInt est utilisé.
(3) callableStatement.setxxxx (paramètreIndex, valeur) // Définir la valeur dans l'ordre des paramètres
CallableStatement.setxxxx (paramètre, valeur) // Définissez la valeur en fonction du nom du paramètre. Ce nom est le nom du paramètre formel lors de la définition de la procédure stockée.
(4) La méthode callableStatement.RegisteroutParameter est utilisée pour déclarer un paramètre du type de sortie d'une procédure stockée pour recevoir la valeur de sortie de la procédure stockée
4. Exécuter l'instruction SQL: resultSet rs = stmt.ExecuteQuery (SQL); Sauf pour l'instruction de requête, EXECUTEQUERY (); Tout le reste est exécuté en update ();
Méthodes sous Interface de déclaration:
booléen exécute (String SQL): Exécuter l'instruction SQL, true si la valeur de retour est le jeu de résultats, sinon faux
ResultSet executeQuery (String SQL): Exécuter l'instruction SQL, la valeur de retour est ResultSet
int ExecuteUpDate (String SQL): Exécuter l'instruction SQL, la valeur de retour est le nombre de lignes affectées
5. Set de résultat de processus: La méthode Getxxxx de l'objet de résultat dépend du type du champ dans la table dans la base de données. Par exemple: varchar2 correspond à getString, s'il est entier, la méthode correspondante est getint / getLong
While (Rs.Next ()) {Rs.GetInt (ColumnIndex); // Obtenez la valeur du champ via le numéro de colonne Rs.GetString (Columnname); // Obtenez la valeur du champ via le nom de colonne Méthodes communes sous l'interface de résultat: avant First (); Déplacez le curseur vers le premier enregistrement (devant) dans le résultat AfterLast (); Déplacez le curseur vers le dernier enregistrement (après) dans le résultat) absolu (intcolumn): déplacez le curseur vers la ligne spécifiée par rapport à la première ligne, et le nombre négatif est relatif au dernier enregistrement précédent (): déplacez le curseur dans une ligne suivant (): Déplacer le curseur en bas de la ligne. et ne peut pas être modifié.6. Fermez la ressource: une fois l'opération terminée, vous devez fermer JDBC pour publier les ressources JDBC. Mais l'ordre devrait être l'opposé lorsque vous définissez l'objet, tout comme la fermeture de la porte, la fermant d'abord de l'intérieur et la fermant vers l'extérieur.
L'exemple suivant:
if (rs! = null) {// 1. Fermez le jeu de résultats try {Rs.close (); } catch (sqlexception e) {e.printStackTrace (); }} if (stmt! = null) {// 2. Fermez l'objet déclaré try {stmt.close (); } catch (sqlexception e) {e.printStackTrace (); }} if (conn! = null) {// 3. Fermez la connexion (n'oubliez pas de fermer le 1.2 précédent d'abord. Puis fermez la connexion) essayez {conn.close (); } catch (exception e) {e.printStackTrace (); }}2. Vous trouverez ci-dessous un exemple de données de requête simple (détaillé)
Package Javacore1; // Il s'agit d'un nom de package que vous avez construit. import java.sql.callableStatement; import java.sql.connection; import java.sql.driverManager; import java.sql.preparedstatement; import java.sql.resultSet; // Les cinq à gauche sont les noms de packages que vous souhaitez importer lors de la rédaction d'un programme. N'oubliez pas d'être des packages sous Java.sql. import java.sql.sqlexception; import java.sql.statement; classe publique jdbc {// définir une classe publique static void main (string [] args) {// méthode principale try {string driver = "com.mysql.jdbc.driver"; // 1. Définissez le conducteur du pilote comme le pilote comme com.mysql.jdbc.driver string url = "jdbc: mysql: // localhost: 3306 / test?" // 2. Définir l'URL; JDBC est le protocole; MySQL est le sous-protocole: représente le nom de gestion du système de base de données; LocalHost: 3306 est l'adresse et le port cible de votre source de base de données; Le test est l'emplacement du tableau que j'ai construit moi-même et vous utilisez le vôtre comme norme. + "useunicode = true & caractèrescoding = utf8"; // empêcher le code brouillé; useunicode = true signifie utilisant un jeu de caractères Unicode; CaracterEncoding = UTF8 signifie utiliser UTF-8 pour l'édition. String User = "H4"; // 3. Définissez le nom d'utilisateur et écrivez l'utilisateur auquel vous souhaitez vous connecter. String pass = "111"; // 4. Mot de passe utilisateur. String Querysql = "SELECT * FROM EMPLOYES"; // 5. Le nom de la table que vous souhaitez rechercher. Class.forname (pilote); // 6. Enregistrez le pilote et utilisez class.froname () dans la classe de classe sous le package java.lang; Le pilote est ici le pilote défini dans 1, ou class.forname ("com.mysql.jdbc.driver"); Connection Conn = driverManager.getConnection (URL, utilisateur, pass); // 7. Obtenez la connexion de la base de données et utilisez le getConnectin (URL de chaîne, nom d'utilisateur de chaîne, mot de passe de chaîne) de DriverManager dans Java.sql pour terminer // L'URL, l'utilisateur, les supports sont les crochets sont les 2, 3 et 4 étapes définies ci-dessus; Instruction stmt = conn.createStatement (); // 8. Construisez un objet d'instruction pour exécuter l'instruction SQL: il existe principalement trois instances d'instruction, de préparation et de callableStatement pour implémenter // les trois méthodes d'implémentation sont: instruction stmt = con.creatEstatement (); // préparé Pstmt = Conn.PrepareStatement (SQL); // callableStatement cstmt = conn.preparecall ("{appel démosp (?,?)}"); ResultSet rs = stmt.ExecuteQuery (QueysQl); // 9. Exécuter SQL et le renvoyer à la fin; ResultSet executeQuery (String SQLString): Utilisé pour renvoyer un objet SET SET (résultat). tandis que (Rs.Next ()) {//10.Transfer le Set System System.out.out.println ("" Numéro de personnel: "+ Rs.getString (" Employee_ID ") +" Salaire: "+ Rs.getString (" Salaire ") +" Nom: "+ Rs.GetString (" Last_name ")); // Utiliser la méthode getString () pour obtenir le nom de données dans votre tableau} if (R. ! = null) {// 11.closez le jeu d'enregistrements try {Rs.close (); } catch (sqlexception e) {e.printStackTrace (); }} if (stmt! = null) {// 12.close l'objet déclaré try {stmt.close (); } catch (sqlexception e) {e.printStackTrace (); }} if (stmt! = null) {// 12.close l'objet déclaré try {stmt.close (); } catch (sqlexception e) {e.printStackTrace (); }} if (conn! = null) {// 13. Fermez la connexion (n'oubliez pas de fermer le 11.12 précédent d'abord. Ensuite, fermez la connexion, tout comme fermer la porte, fermez l'intérieur en premier, et enfin fermez le plus à l'extérieur) essayez {conn.close (); } catch (sqlexception e) {e.printStackTrace (); }}} catch (exception e) {e.printStackTrace (); }}}}3. Pour être plus intuitif, nous encapsulons l'acquisition de connexions de base de données et libérons les connexions dans la méthode pour faciliter un meilleur fonctionnement plus tard.
package javacore1; import java.sql.connection; import java.sql.driverManager; public class jdbc {public static void main (string [] args) {connection conn = getConnection ("h4", "111"); // Obtenez une base de données connexion/*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, String pass) {connexion conn = null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: mysql: // localhost: 3306 / test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Libérez la connexion de la base de données publique STATIC void releaseconnection (connexion Conn) {try {if (conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}4. Implémentez les fonctions de onze de traitement des informations de base de données telles que la requête, l'insertion, la suppression et la mise à jour.
1. Données de requête
package javacore1; import java.sql.connection; import java.sql.DiverManager; import java.sql.resultSet; import java.sql.sqlexception; import java.sql.statement; Classe publique Query {public static Void Main (String [] args) {Connection Connen Obtenez la question de connexion de la base de données (CONN); // Nom de la méthode appelle la connexion de la base de données Releaseconnection (CONN); // Release Database Connection} // Données de requête, définissez la méthode de requête Public Static Void Query (connexion Conn) {String Sql = "SELECT * FROM EMPLOYEMENTS"; try {instruction stmt = conn.creatEstatement (); // Vous pouvez également utiliser PrevedStatement pour faire des résultats RS = STMT.Executequery (SQL); // Exécuter l'instruction SQL et renvoyer la fin While (Rs.Next ()) {// Transférer le jeu de résultats et passer à la ligne suivante System.out.println ("Personnel Number:" + Rs.GetString ("Employee_ID") + "Salary:" Salary: "Salary: Salary:" Salary: "Salary:" Salary: "Salary:" Salary: "Salary:" Salary: "Salary:" Salary: "Salary:" Salary: "Salary:" Salary: "Salary:" + rs.GetStStStrst); } if (rs! = null) {try {Rs.close (); } catch (sqlexception e) {e.printStackTrace (); }} if (stmt! = null) {try {stmt.close (); } catch (sqlexception e) {e.printStackTrace (); }} if (conn! = null) {try {conn.close (); } catch (sqlexception e) {e.printStackTrace (); }}} catch (exception e) {e.printStackTrace (); }} // Connexion de base de données Connexion statique GetConnection (String User, String Pass) {Connection Conn = Null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: MySql: // LocalHost: 3306 / Test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Release Database Connection Public Static void releaseconnection (connexion Conn) {try {if (Conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}} // interroger les données, et les résultats sont affichés dans l'ordre inverse, le package d'ordre arrière Javacore1; Importer Java.sql.Connection; Importer Java.Sql.DriverManager; Importer Java.Sql.ResultSet; Importer Java.sql.Sqlexception; Importer Java.Sql.Statement; Connexion Connex = getConnection ("H4", "111"); // Get Database Connection Query (Conn); // Le nom de la méthode appelle la connexion de la base de données ReleaseConnection (CONN); // Relexe la connexion de la base de données} // interroger les données, définir la méthode de requête publique statique void requête (connexion Conn) {String sql = "select * dans les employés"; try {instruction stmt = conn.creatEstatement (); // Vous pouvez également utiliser PrevedStatement pour faire des résultats RS = STMT.ExecuteQuery (SQL); // Exécuter l'instruction SQL et renvoyer la fin Rs.AfterLast (); // Passez à la dernière ligne d'abord while (Rs.Revious ()) {// Transférer la définition du résultat et la ligne de ligne System.out.println ("numéro de personnel:" + Rs.GetString ("employee_id") + "Salaire:" + Rs.GetString ("Salaire")); } if (rs! = null) {try {Rs.close (); } catch (sqlexception e) {e.printStackTrace (); }} if (stmt! = null) {try {stmt.close (); } catch (sqlexception e) {e.printStackTrace (); }} if (conn! = null) {try {conn.close (); } catch (sqlexception e) {e.printStackTrace (); }}}} catch (exception e) {e.printStackTrace (); }} // Connexion de base de données Connexion statique GetConnection (String User, String Pass) {Connection Conn = Null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: MySql: // LocalHost: 3306 / Test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Release Database Connection Public Static void releaseconnection (connexion Conn) {try {if (Conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}2. Insérer des données
package javacore1; importer java.sql.connection; import java.sql.drivermerManager; import java.sql.sqlexception; import java.sql.statement; public class insert {public static void main (string [] args) {connection conn = getConnection ("h3", "11111"); // obtient l'insert de connexion de la base de données (CONN); // Nom de la méthode appelle la connexion de la base de données ReleaseConnection (CONN); // Release Database Connection} // INSERT DATA PUBLIC STATIC VOID INSERT (Connexion Conn) {Try {String SQL = "INSERT INTO EMPLOYEMENTS (EMPLYEE_ID, LAST_NAME, SALAIRE, DEPARTAGE_ID, USERID)" + "VALEURS ('100010', 'XIAOGOU', '7000', '004', '9')"; // Instruction SQL pour l'insertion de l'instruction de données stmt1 = conn.CreateStatement (); // Créer un objet d'instruction pour l'exécution de l'instruction SQL statique int count = stmt1.executeupdate (sql); // Instruction SQL pour effectuer un fonctionnement d'insertion et renvoyer le nombre de données insérées System.out.println ("insérée" + Count + "Data"); // Sortie du résultat de l'opération d'insertion conn.close (); // Fermez la connexion de la base de données} catch (sqlexception e) {e.printStackTrace (); }} // Connexion de base de données Connexion statique GetConnection (String User, String Pass) {Connection Conn = Null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: MySql: // LocalHost: 3306 / Test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) le pilote connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Libérez la connexion de la base de données publique STATIC void releaseconnection (connexion Conn) {try {if (conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}3. Supprimer les données
package javacore1; import java.sql.connection; import java.sql.drivermerManager; import java.sql.sqlexception; import java.sql.statement; public class delete {public static void main (string [] args) {connection conn = getConnection ("h3", "11111"); // Obtenez la connexion de la base de données delete (CONN); // Nom de la méthode appelle la connexion de la base de données; ReleaseConnection (Conn); // Release Database Connection} // Delete Data Public Static void Delete (Connection Conn) {String Sql = "Supprimer des employés où Employee_ID = 100009"; try {instruction stmt = conn.createStatement (); // ou utilisez la méthode de préparation stmt.ExecuteUpDate (sql); // exécuter l'instruction sql if (stmt! = null) {try {stmt.close (); } catch (sqlexception e) {e.printStackTrace (); }}} catch (sqlexception e) {e.printStackTrace (); }}} // Connexion de base de données publique Connexion statique getConnection (chaîne utilisateur, chaîne pass) {connexion conn = null; // Déclare l'objet de connexion String driver = "com.mysql.jdbc.driver"; // Nom de classe de pilote Url = "jdbc: mysql: // localhost: 3306 / test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Libérez la connexion de la base de données publique STATIC void releaseconnection (connexion Conn) {try {if (conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}4. Mettre à jour les données
package javacore1; import java.sql.connection; import java.sql.drivermerManager; import java.sql.sqlexception; import java.sql.statement; public class update {public static void main (string [] args) {connection conn = getConnection ("h3", "11111"); // Obtenez la mise à jour de la connexion de la base de données (CONN); // Nom de la méthode appelle la connexion de la base de données Releaseconnection (CONN); // Release Database Connection} // Update Data Public Static void Update (Connection Conn) {String SQL = "Update Employey Set Salary = 8000 Where Employee_ID = 100005"; try {instruction stmt1 = conn.createStatement (); // ou utilisez la méthode de préparation stmt1.executeupdate (sql); // exécuter l'instruction sql if (stmt1! = null) {try {stmt1.close (); } catch (sqlexception e) {e.printStackTrace (); }}} catch (sqlexception e) {e.printStackTrace (); }} // Connexion de base de données Connexion statique GetConnection (String User, String Pass) {Connection Conn = Null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: MySql: // LocalHost: 3306 / Test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Libérez la connexion de la base de données publique STATIC void releaseconnection (connexion Conn) {try {if (conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}5. Transfert (transactions)
JDBC gère les transactions grâce à la validation automatique des connexions de clôture:
Connection.setAutoCommit (false);
Soumettre la transaction:
Connection.Commit ();
Pièce de recul de la transaction en arrière:
Connection.rollback (sauvegarde);
Roulez tout:
Connection.rollback ();
package javacore1; import java.sql.connection; import java.sql.drivermerManager; import java.sql.statement; classe publique transcash {public static void main (string [] args) {connexion conn = getConnection ("h3", "11111"); // get the database connection transcash (Conn); // Nom de la méthode appelle la connexion de la base de données ReleaseConnection (CONN); // Libérez la connexion de la base de données} // transfert (conversion de données) (les données d'origine étaient de 100 et 500, mais après implémentation de cette fonction, il devient 500 et 100. En fait, pour le mettre franchement, il s'agit de mettre à jour les données et de modifier les données) public static Void transcash (connexion CONC) {Statut stmt = null; essayez {conn.setautoCommit (false); // ferme la chaîne de soumission automatique sql = "Update les employés set salarial = 500 où employee_id = 100001"; STMT = Conn.CreateStatement (); STMT.ExecuteUpdate (SQL); SQL = "Mettre à jour les employés définissent salaire = 100 où employee_id = 100002"; STMT.ExecuteUpdate (SQL); // Exécuter l'instruction SQL, les deux salaires ci-dessus seront échangés // int i = 1/0; Si c'est le cas, la tâche ne sera pas terminée, car c'est une chose complète, et s'il y a un peu d'échec, tout échouera Conn.Commit (); // Commit Transaction} Catch (Exception E) {e.printStackTrace (); } enfin {try {if (stmt! = null) {stmt.close (); } catch (exception e) {e.printStackTrace (); }}} // Connexion de base de données publique Connexion statique getConnection (chaîne utilisateur, chaîne pass) {connexion conn = null; // Déclare l'objet de connexion String driver = "com.mysql.jdbc.driver"; // Nom de classe de pilote Url = "jdbc: mysql: // localhost: 3306 / test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Release Database Connection Public Static void releaseconnection (connexion Conn) {try {if (Conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}6. Trouvez les procédures stockées sans paramètres
package javacore1; import java.sql.callableStatement; import java.sql.connection; import java.sql.driverManager; import java.sql.sqlexception; public class execproc {public static void main (string [] args) {connection Conn = getConnection ("h3", "1111"); // Obtenez la connexion de la base de données Execproc (CONN); // Nom de la méthode Appels de la base de données Connexion ReleaseConnection (CONN); // Release Database Connection} // Appelez la procédure stockée non argumentée; public static void execproc (connexion conn) {String sql = "{appel rauseAlary}"; essayez {callableStatement cstmt = conn.PrepareCall (sql); cstmt.executeupdate (); } catch (sqlexception e) {e.printStackTrace (); }} // Connexion de base de données Connexion statique GetConnection (String User, String Pass) {Connection Conn = Null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: MySql: // LocalHost: 3306 / Test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Release Database Connection Public Static void releaseconnection (connexion Conn) {try {if (Conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}7. Trouvez des procédures stockées avec des paramètres
package javacore1; import java.sql.callableStatement; import java.sql.connection; import java.sql.drivermanager; import java.sql.types; public class getMulti {public static void main (string [] args) {connexion conn = getConnection ("h3", "1111"); // Obtenez la connexion de la base de données int cnt = getMulti (Conn); // trouver des procédures stockées; System.out.println ("Numéro de personnes:" + CNT); ReleaseConnection (Conn); // Release la connexion de la base de données} // Le processus de recherche a des paramètres publics static int getMulti (connexion conn) {int dept_id = 100001; int cnt = 0; String sql = "{appel calc_emp_count (?,?)}"; essayez {callableStatement cstmt = conn.preparecall (sql); // initialiser l'objet de l'instruction cstmt.sentInt (1, dept_id); // callableStatement.setxxx (paramètre, valeur) ou (nombre, valeur), et préparéStatement.setxxx (nombre, valeur) ne peut être que ce cstmt.setInt (2, cnt); // cStmt.RegisterOutParameter (2, types.integer); // Déclarez le paramètre de sortie CSTMT.ExecuTupDate (); // Exécuter l'instruction SQL CNT = CSTMT.GETINT (2); e.printStackTrace (); } return CNT; } // Connexion de la base de données Connexion statique GetConnection (chaîne Utilisateur, String Pass) {connexion conn = null; // Déclare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote String Url = "JDBC: mysql: // localhost: 3306 / test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Release Database Connection Public Static void releaseconnection (connexion Conn) {try {if (Conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}8. Traitement ordinaire
Package Javacore1; Importer java.sql.connection; import java.sql.date; import java.sql.drivermanager; import java.sql.preparedstatement; import Java.sql.sqlexception; "111111"); // Obtenez la connexion de la base de données PlanInsert (CONN); // Nom de la méthode appelle la connexion de la base de données ReleaseConnection (CONN); // Release Database Connection} // Traitement ordinaire de Public Static void PlanInsert (Connection Conn) {try {String SQL = "INSERT IN Test_User1 (UserId, nom d'utilisateur, chargement)" + "valeurs (? ,?)"; // Instruction SQL pour insérer des données préparées PSTMT = Conn.Preparestatement (SQL); Long startTime = System.CurrentTimemillis (); pour (int i = 0; i <1000; i ++) {pstmt.setLong (1, i); PSTMT.SETSTRING (2, "User" + I); PSTMT.SetDate (3, nouvelle date (System.CurrentTimemillis ())); pstmt.ExecuteUpdate (); } System.out.println ("Temps total pris:" + (System.Currenttimemillis () - starttime)); pstmt.close (); // Fermez la connexion de la base de données} catch (sqlexception e) {e.printStackTrace (); }} // Connexion de base de données Connexion statique GetConnection (String User, String Pass) {Connection Conn = Null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: MySql: // LocalHost: 3306 / Test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Release Database Connection Public Static void releaseconnection (connexion Conn) {try {if (Conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}9. Traitement par lots
Obtenez le modèle de transaction JDBC d'origine:
booléen currentTransactionModle = con.getAutoCommit ();
Défini en mode transaction (Off Automatic Commit):
con.setAutoCommit (false);
Instruction stm = con.createStatement ();
Trois déclarations hétérogènes SQL:
String sql1 = "Supprimer de l'utilisateur où id = 8";
String sql2 = "Update User set name = 'java' où id = 7";
String sql3 = "Insérer dans l'utilisateur (nom, mot de passe) valeurs ('JDBC', 'JDBC')";
Ajouter au tampon de traitement par lots de l'instruction:
STM.AddBatch (SQL1);
STM.AddBatch (SQL2);
STM.AddBatch (SQL3);
Effectuer des mises à jour par lots:
STM.ExecuteBatch ();
Soumettre les transactions pour cette mise à jour par lots:
Con.Commit ();
Répondre au mode de transaction d'origine:
con.setAutoCommit (courantTransactionModle);
Package Javacore1; Importer Java.Sql.Connection; Importer Java.Sql.Date; Importer Java.Sql.DriverManager; Importer Java.Sql.PreparedStatement; Importer Java.Sql.Sqlexception; "111111"); // Obtenez BatchInsert de connexion de base de données (CONN); // Nom de la méthode appelle la connexion de la base de données ReleaseConnection (CONN); // Release Database Connection} // La vitesse de l'insertion par lots est plus rapide que celle du traitement ordinaire public static void batchInsert (Connection Conn) {try {String sql = "insérer dans test_user1 (userId, nom d'utilisateur, chargement)" + "valeurs (? ,?)"; // L'instruction SQL qui inserte les données préparées PSTMT = Conn.Preparestatement (SQL); Long startTime = System.CurrentTimemillis (); pour (int i = 0; i <1000; i ++) {pstmt.setLong (1, i); PSTMT.SETSTRING (2, "User" + I); PSTMT.SetDate (3, nouvelle date (System.CurrentTimemillis ())); pstmt.addbatch (); // ajouter au traitement par lots} int [] result = pstmt.ExecuteBatch (); System.out.println ("Temps total pris:" + (System.Currenttimemillis () - Starmtime)); pstmt.close (); // Fermez la connexion de la base de données} catch (sqlexception e) {e.printStackTrace (); }} // Connexion de base de données Connexion statique GetConnection (String User, String Pass) {Connection Conn = Null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: MySql: // LocalHost: 3306 / Test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Release Database Connection Public Static void releaseconnection (connexion Conn) {try {if (Conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}10. Affichage de la pagination
Package Javacore1; Importer Java.Sql.Connection; Importer Java.Sql.DiverManager; Importer Java.Sql.PreparedStation; Importer Java.Sql.ResultSet; Importer Java.Sql.Sqlexception; Class public Paging {public Static Void Main (String [] args) {Connexion Conn = GetConnex "111111"); // Obtenir la pagination de connexion de la base de données (Conn, 1,3); // Nom de la méthode appelle la connexion de la base de données et définissez la ligne à afficher à quelle ligne releaseconnection (CONN); // relâche la connexion de la base de données} // Page Query Public Static void paging * SELECT * EMPLOYEMENT LIMIT? Préparé Pstmt = Conn.PrepareStatement (SQL); pstmt.sentInt (1, startIndex); pstmt.sentInt (2, total); ResultSet rs = pstmt.ExecuteQuery (); while (Rs.Next ()) {System.out.print ("Numéro de travail:" + Rs.GetInt (1)); System.out.println ("Numéro de département:" + Rs.GetInt ("Department_id")); } Rs.Close (); pstmt.close (); } catch (sqlexception e) {e.printStackTrace (); }} // Connexion de base de données Connexion statique GetConnection (String User, String Pass) {Connection Conn = Null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: MySql: // LocalHost: 3306 / Test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Release Database Connection Public Static void releaseconnection (connexion Conn) {try {if (Conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}11. L'ensemble de résultats peut être défilé
Package Javacore1; Importer Java.Sql.Connection; Importer Java.Sql.DriverManager; Importer Java.Sql.PreparedStation; Importer Java.Sql.ResultSet; Importer Java.Sql.Sqlexception; Connexion publique Scpllresult {public STATIC VOID MAIN (String [] args) {Connexion Connect "111111"); // Obtenez la connexion de la base de données SCRPLLRESULT (CONN); // Nom de la méthode Appels Database Connection ReleasEConnection (CONN); // Release la connexion de la base de données} // Faites défiler le jeu de résultats pour afficher le public Static Void ScrollResult (connexion Conn) {try {String sql = "SELECT * à partir des employés"; // Scroll peut être défilé // concurrence, le jeu de résultats est en lecture seule et le statement préparé ne peut pas être modifié. PréparéStatement PSTMT = Conn.PrepareStatement (SQL, resultSet.Type_Scroll_Sensitive, resultSet.CUCUR_READ_ONLY); ResultSet rs = pstmt.ExecuteQuery (); while (Rs.Next ()) {// Travel System.out.print ("Numéro de travail:" + Rs.GetLong (1)); System.out.println ("name" + rs.getString ("last_name")); } while (Rs.Revious ()) {// Travel System.out.print ("Numéro de travail:" + Rs.GetLong (1)); System.out.println ("Numéro de travail:" + Rs.GetLong (1)); } Rs.Absolute (6); // Voyage directement vers la ligne if (Rs.Next ()) {System.out.print ("Numéro de travail:" + Rs.GetLong (1)); System.out.println ("......... Numéro de département:" + Rs.GetString ("Department_id")); } Rs.Close (); pstmt.close (); } catch (sqlexception e) {e.printStackTrace (); }} // Connexion de base de données Connexion statique GetConnection (String User, String Pass) {Connection Conn = Null; // Declare l'objet de connexion String Driver = "com.mysql.jdbc.Driver"; // Nom de classe de pilote Url = "JDBC: MySql: // LocalHost: 3306 / Test?" // URL de la base de données + "useunicode = true & caractèrescoding = utf8"; // empêcher Bribbled Try {class.forname (pilote); // registre (charger) conducteur connu = driverManager.getConnection (URL, utilisateur, pass); // obtenir la connexion de la base de données} catch (exception e) {e.printStackTrace (); } return conn; } // Release Database Connection Public Static void releaseconnection (connexion Conn) {try {if (Conn! = Null) Conn.close (); } catch (exception e) {e.printStackTrace (); }}}五.把上面十一个放在一起当然最方便省事。(需要用谁,只需把前面的注释打开便行)
package javacore1;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.Date;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Statement;import java.sql.Types;public class jdbcMySql {public static void main(String[] args) { Connection conn = getConnection("h3", "111111"); // Get database connection //query(conn); //1. Query data //insert(conn); //2. Insert data //delete(conn); //3. Delete data //update(conn); //4. Update data //transCash(conn); //5. Transfer//execProc(conn); //6. Find stored procedures without parameters //int cnt = getMulti(conn); //7. Find stored procedures with parameters //System.out.println("People number: " + cnt); //Find stored procedures with parameters //planInsert(conn); //8. Ordinary processing //batchInsert(conn); //9. Batch processing // paging(conn,1,3);//10. Pagination display//scrpllResult(conn);//11. The result set can be scrolled to releaseConnection(conn);// Release database connection}//1. Query data, define query method public static void query(Connection conn){ String Sql="select * from employees"; try{ Statement stmt=conn.createStatement(); // You can also use PreparedStatement to do ResultSet rs=stmt.executeQuery(Sql);//Execute the sql statement and return the end while(rs.next()){//Transfer the result set System.out.println("People number:"+rs.getString("employee_id")+"Salary:"+rs.getString("salary")); } if(rs !=null){ try{ rs.close(); } catch (SQLException e){ e.printStackTrace(); } } if(stmt !=null){ try{ stmt.close(); } catch(SQLException e){ e.printStackTrace(); } } if(conn !=null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } catch(Exception e){ e.printStackTrace(); }}//2. Insert data public static void insert(Connection conn) { try { String sql = "insert into employees(employee_id,last_name,salary,department_id,userid)" + " values ('100010', 'xiaogou', '7000','004','9')"; // SQL statement Statement stmt1 =conn.createStatement(); // Create a Statement object for executing static SQL statements int count = stmt1.executeUpdate(sql); // Execute the SQL statement for insertion operation and return the number of inserted data System.out.println("Inserted" + count + "bar of data" into biao); //Output the processing result of the insertion operation conn.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } }//3. Delete data public static void delete(Connection conn){ String Sql = "delete from employees where employee_id=100009"; try { Statement stmt = conn.createStatement();// Or use the PreparedStatement method stmt.executeUpdate(Sql);// Execute the sql statement if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } catch (SQLException e) { e.printStackTrace(); } } }//4. Update data public static void update(Connection conn){ String Sql = "update employees set salary=8000 where employee_id=100005"; try { Statement stmt1 = conn.createStatement();//Or use PreparedStatement method stmt1.executeUpdate(Sql);//Execute the sql statement if (stmt1 != null) { try { stmt1.close(); } catch (SQLException e) { e.printStackTrace(); } } catch (SQLException e) { e.printStackTrace(); } } //5. Transfer (data exchange) (The original data was 100 and 500, but after implementing this function, it becomes 500 and 100. In fact, to put it bluntly, it is to update the data and change the data) public static void transCash(Connection conn){ Statement stmt = null; try{ conn.setAutoCommit(false);//Close automatic submission String sql = "update employees set salary=500 where employee_id=100001"; stmt = conn.createStatement(); stmt.executeUpdate(sql); sql = "update employees set salary=100 where employee_id=100001"; stmt = conn.createStatement(); stmt.executeUpdate(sql); sql = "update employees set salary=100 where employee_id=100002"; stmt.executeUpdate(sql);//Execute the sql statement, and the above two salaries will be replaced by conn.commit();//Commit transaction}catch(Exception e){ e.printStackTrace(); } finally{ try{ if(stmt != null)stmt.close(); } catch(Exception e){ e.printStackTrace(); } } } }//6. Call the stored procedure without a parameter; public static void execProc(Connection conn){ String sql = "{call raisesalary}"; try { CallableStatement cstmt = conn.prepareCall(sql); cstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } //7. Find stored procedures with parameters public static int getMulti(Connection conn) { int dept_id = 100001; int cnt = 0; String sql = "{call calc_emp_count(?,?)}"; try { CallableStatement cstmt = conn.prepareCall(sql);//Initialize the Statement object cstmt.setInt(1, dept_id);//CallableStatement.setxxx(parameter, value) or (number, value), and PreparedStatement.setxxx(number, value) can only be like this cstmt.setInt(2, cnt); // cstmt.registerOutParameter(2, Types.INTEGER);//Declare the output parameter cstmt.executeUpdate();//Execute the sql statement cnt = cstmt.getInt(2);//Get the result if (cstmt != null) { cstmt.close();//Release the Statement object} } catch (Exception e) { e.printStackTrace(); } return cnt; }//8. Normal processing public static void planInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // SQL statement to insert data PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.executeUpdate(); } System.out.println("Total time taken: "+(System.currentTimeMillis() - startTime)); pstmt.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } } //9. The speed of batch insertion is faster than that of ordinary processing public static void batchInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // SQL statement that inserts data PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.addBatch();//Add to batch processing} int[] result=pstmt.executeBatch(); System.out.println("Total time consumed: "+(System.currentTimeMillis() - startTime)); pstmt.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } }//10. Pagination query public static void paging(Connection conn,int startIndex,int total){ try{ String sql="select * from employees limit ?,?"; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setInt(1, startIndex); pstmt.setInt(2, total); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ System.out.print("work number: "+rs.getInt(1)); System.out.println("Department number: "+rs.getInt("department_id")); }rs.close(); pstmt.close(); }catch(SQLException e){ e.printStackTrace(); } }//11. The result set scrolls to display public static void scrollResult(Connection conn){ try{ String sql="select * from employees"; //The result set can be scrolled//concurrency, the result set is read-only, and the PreparedStatement pstmt=conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ //Travel System.out.print("work number: "+rs.getLong(1)); System.out.println("name"+rs.getString("last_name")); }while(rs.previous()){//Travel System.out.print("work number: "+rs.getLong(1)); System.out.println("salary"+rs.getInt("salary")); } rs.absolute(6);//Indicate which line to jump directly to if(rs.next()){ System.out.print("work number: "+rs.getLong(1)); System.out.println("........Department number: "+rs.getString("department_id")); } rs.close(); pstmt.close(); } catch(SQLException e){ e.printStackTrace(); } } //Database connection public static Connection getConnection(String user, String pass) { Connection conn = null;//Declare the connection object String driver = "com.mysql.jdbc.Driver";// Driver class name String url = "jdbc:mysql://localhost:3306/test?" // Database URL + "useUnicode=true&characterEncoding=UTF8";// Prevent garbled try { Class.forName(driver);// Register (load) driver conn = DriverManager.getConnection(url, user, pass);// Get database connection} catch (Exception e) { e.printStackTrace(); } return conn; }// Release database connection public static void releaseConnection(Connection conn) { try { if (conn != null) conn.close(); } catch (exception e) {e.printStackTrace (); }}}六.安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(但是安装方法都是一样的)
在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是
打开eclipse
1.右击要导入jar包的项目,点properties
2.左边选择java build path,右边选择libraries
3.选择add External jars
4.选择jar包的按照路径下的确定后就行了。
Java连接MySQL的最新驱动包下载地址
http://www.mysql.com/downloads/connector/j
1.鼠标放在你建的根目录上面。右击,然后选择最下面的properties。
2.然后左边选择java build path,右边选择libraries ,在选择右边的add External jars ,选择jar包的路径,点击确定就可以了
3.装好后,图如下出现你要添加的包。