La position actuelle:Accueil du site>Programmation JDBC pour MySQL
Programmation JDBC pour MySQL
2022-07-23 21:59:02【Zzt. Opkk】
MySQLDeJDBCProgrammation
1. Conditions de programmation de la base de données
- Langage de programmation: Java,C,C++,Python…
- Base de données: Oracle,MySQL,SQLServer…
- Paquet pilote de base de données: Différentes bases de données,Différents paquets de pilotes de base de données sont disponibles pour différents langages de programmation,
- Par exemple::MySQLOffreJavaDrive pack formysql-connector-java,Doit être basé surJavaFonctionnementMySQLCe paquet d'entraînement est nécessaire.La même chose.,
À partir deJavaFonctionnementOracleLa base de données nécessiteOraclePaquet de pilotes de base de données pourojdbc .
- Par exemple::MySQLOffreJavaDrive pack formysql-connector-java,Doit être basé surJavaFonctionnementMySQLCe paquet d'entraînement est nécessaire.La même chose.,
2. JDBCProgrammation
JDBC,C'est - à - dire:Java Database Connectivity,javaConnexion à la base de données ,C'est un moyen d'exécuterSQLStatementJava API(Un terme assez largement utilisé dans les ordinateursApplication Programming InterfaceQuelques fonctions sont fournies/Méthodes/Catégorie,Peut être appelé directement par le programmeur pour remplir certaines fonctions),Appelé"Base de donnéesSDK"(software development kit, SDKUn concept plus large,En plus de fournirAPIAu - delà,Quelques programmes exécutables sont également disponibles(Outils)Développement auxiliaire/Mise en service…),Pour pouvoir utiliser cesAPIUn accès plus facile au serveur de base de données.
PourMySQL/Oracle/SQLServerC'est un client./Programmes pour la structure du serveur, La base de données des opérations est Par l'intermédiaire d'un client en ligne de commande officiellement fourni /Interface graphique/Code Lequel d'entre eux ? Aujourd'hui, la base de données principale est gérée par Code .
Dans les premières bases de données disponibles APITout est différent, Très hostile aux programmeurs ,Et donc,JavaFournir un ensemble"Critères" Système d'interface pour , Laissez ces fournisseurs de bases de données .FourniAPITout le monde.Java Adaptation dans ce système d'interface , Donc le programmeur a juste besoin de maîtriser JavaCelui - ciAPI Pour s'adapter à toutes les bases de données courantes .Java De cette base de données opérationnelle API,Ça s'appelleJDBC.
3. JDBCComment ça marche
JDBC Fournit un accès uniforme à une variété de bases de données relationnelles,Accès en tant que base de données propre au fournisseurAPIUne abstraction avancée de,Il contient principalement des classes d'interface communes
JDBCAccéder à la hiérarchie des bases de données:
JDBCAvantages:
- JavaLe fonctionnement de la base de données d'accès linguistique est entièrement orienté vers la programmation d'interface abstraite
- Le développement d'applications de base de données n'est pas limité à un fournisseur de base de données spécifiqueAPI
- La portabilité des programmes s'est considérablement améliorée
4. JDBCUtilisation de
4.1 Fonctionnement de la base de données - Insérer
Pour manipuler la base de données, Connectez - vous d'abord à la base de données , Pour se connecter à la base de données , Il faut décrire l'emplacement de la base de données .InJDBCMoyenne,UtiliserDataSource Cette classe décrit MySQLEmplacement du serveur,
//DataSourceC'est uninterface,Impossible d'instancier directement.EtMysqlDataSourceC'est ce qui s'est passéDataSource, Cette classe vient d'un paquet d'entraînement . //Cette opération est - La transition vers le haut DataSource dataSource = new MysqlDataSource(); //Connexion au serveur - Vers le bas ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java104?characterEncoding=utf8&useSSL=false");
Il y aura des questions ici , Pourquoi ne pas l'utiliser directement MysqlDataSource Pour instancier l'objet ? Ce n'est pas très pratique ?
MysqlDataSource dataSource = new MysqlDataSource(); dataSource.setUrl();
Bien qu'il n'y ait pas de différence entre les deux styles . Mais dans le développement réel, il est possible de voir plus de la première écriture .
- Dans la première écriture ,Je l'ai.La source des données est DataSourceType. Écrivez d'autres codes plus tard ,Méthodes/Catégorie, Si vous utilisez une source de données , Le type de détention est également DataSourceType,DataSource- Oui.Type générique, Peut se référer à n'importe quelle base de données . Quand l'avenir sera nécessaire Remplacer la base de données, Les modifications de code sont très mineures , Il suffit de changer ce petit morceau de code d'Instanciation , Aucun autre code n'a besoin d'être modifié .
- La deuxième écriture, La source de données obtenue est MysqlDataSourceType. Autres codes suivants ,Méthodes/Catégorie, Si une source de données est utilisée , Le type de détention est MysqlDataSource,EtMysqlDataSourceUniquement pourMySQLType de. Une fois la base de données remplacée , Il faudra peut - être disperser le Code MysqIDataSourceType modifié.
La première écriture améliore considérablement la maintenabilité du Code ,Extensibilité.
//MySQLConnexion de donnéesURLLe format des paramètres est le suivant: jdbc:mysql://Adresse du serveur:Port/Nom de la base de données?Nom du paramètre=Valeur du paramètre
Saisissez le nom d'utilisateur et le mot de passe:
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
Donc à traversIPAdresse,Numéro de port,Nom de la base de données, Le nom d'utilisateur et le mot de passe décrivent l'emplacement de la base de données .
- Créer une connexion au serveur de base de données
Dans la communication réseau,Il y a deux styles,L'un est’Connecté’,équivalent à"Appelle";L'autre est’Pas de connexion’,équivalent à"Envoyer Wechat".
Les données sont "Connecté"De la façon dont, Surtout avant la communication , Vérifiez d'abord si le lien de communication est lisse , Il y a un inconvénient. , La connexion doit être gérée , Les connexions inutilisées doivent être libérées à temps (Comme au téléphone., Oublie de raccrocher , Impossible de déconnecter , Les frais de téléphone restent ~~).
// Importerimport java.sql.ConnectionEnveloppéConnectionCatégorie
Connection connection = dataSource.getConnection();
System.out.println(connection);
// Si l'objet de sortie est [email protected] Description de la connexion réussie
// Et attention à lancer une exception Importerimport java.sql.SQLException;
- Fonctionnement de la base de données
UtiliserSQLDéclarations,UtilisationJDBCPour exploiter la base de données,Essence ou utilisationSQLPour exploiter la base de données
// Créer une base de données
create table student(id int primary key, name varchar(20));
String sql = "insert into student values(1, 'Zhang San');";
AdoptionPreparedStatement L'objet est venu dire SQLDéclarations exécutées,De cet objetSQL Ça vient de cette chaîne .
PreparedStatement statement = connection.prepareStatement(sql);
Vous pouvez également le remplir de la façon suivante :
Scanner in = new Scanner(System.in);
System.out.println("Veuillez saisir le numéro d'étudiant:");
int id = in.nextInt();
System.out.println("Veuillez saisir un nom:");
String name = in.next();
String sql = "insert into student values(?, ?);";//? Pour le substituant
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, id); // Par défaut à partir de1C'est parti.
statement.setString(2, name);
- Mise en œuvreSQLDéclarations
int n = statement.executeUpdate();
System.out.println(n);
Ici.insert,update,deleteC'est par executeUpdate Pour mettre en œuvre, La valeur de retour est un entier, Indique que cette opération affecte plusieurs lignes ,select C'est par executeQuery Pour mettre en œuvre.
- Déconnecter
statement.close();
connection.close();
Note:: La première version créée plus tard
4.2 Fonctionnement
4.2.1 Modifier l'enregistrement
public static void main(String[] args) throws SQLException {
//1. Source des données trouvée
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java_learn?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
//2. Établir une connexion
Connection connection = dataSource.getConnection();
//3. Saisissez les informations de modification
Scanner in = new Scanner(System.in);
System.out.println(" Veuillez saisir le numéro d'étudiant modifié :");
int id = in.nextInt();
System.out.println(" Nom modifié de l'étudiant :");
String name = in.next();
//3. ConstruireSQLDéclarations
String sql = "update student set name = ? where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2, name);
//4. Mise en œuvreSQL
int n = statement.executeUpdate();
System.out.println(n);
//5. Fermer la ressource
statement.close();
connection.close();
}
4.2.2 Supprimer l'enregistrement
public static void main(String[] args) throws SQLException {
//1. Source des données trouvée
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java_learn?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
//2. Créer une connexion
Connection connection = dataSource.getConnection();
//3. Saisissez les informations d'enregistrement pour supprimer la paire
Scanner in = new Scanner(System.in);
System.out.println(" Veuillez entrer pour supprimer le numéro d'étudiant :");
int id = in.nextInt();
//4. ConstruireSQL
String sql = "delete from student where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, id);
//5. Mise en œuvreSQL
int n = statement.executeUpdate();
System.out.println(n);
//6. Fermer la ressource
statement.close();
connection.close();
}
4.2.3 Trouver des enregistrements
public static void main(String[] args) throws SQLException {
//1. Créer une source de données
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java_learn?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
//2. Connexion à la base de données
Connection connection = dataSource.getConnection();
//3. Aucune entrée requise
//4. ConstruireSQL
String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);
//5. Mise en œuvreSQL
//executeQueryLa valeur de retour pour estResultSetObjet, On peut le considérer comme un Tableau provisoire
ResultSet resultSet = statement.executeQuery();
//6. Traverser l'ensemble de résultats
//Prends ça. resultSet En tant qu'Itérateur
while (resultSet.next()) {
// AdoptiongetXXX Méthodes, Pour obtenir
// Prends - le.id, idLe type estint, UtilisergetInt
int id = resultSet.getInt("id");
//Prends - le.name, Le type estString UtilisergetString
String name = resultSet.getString("name");
System.out.println(id + ":" + name);
}
//7. Fermer la ressource
statement.close();
connection.close();
}
4.2.4 Insérer un enregistrement
public static void main(String[] args) throws SQLException {
//1. Obtenir l'emplacement de la base de données
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java_learn?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
//2. Connexion à la base de données
Connection connection = dataSource.getConnection();
System.out.println(connection);
//3. UtiliserSQLDéclarations,UtilisationJDBCPour exploiter la base de données,L'essence ou parSQLPour opérer
/*String sql = "insert into student values(3, 'Zhang San');";*/
Scanner in = new Scanner(System.in);
System.out.println("Veuillez saisir le numéro d'étudiant:");
int id = in.nextInt();
System.out.println("Veuillez saisir un nom:");
String name = in.next();
String sql = "insert into student values(?, ?);";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, id);
statement.setString(2, name);
//4. Mise en œuvreSQLDéclarations
// insert,update,deleteC'est par executeUpdate Pour mettre en œuvre
// select C'est par executeQuery Pour mettre en œuvre
// La valeur de retour est un entier, Indique que cette opération affecte plusieurs lignes
int n = statement.executeUpdate();
System.out.println(n);
//5. Déconnecter
statement.close();
connection.close();
}
4.3 Connexion à la base de données
ConnectionLa classe de mise en œuvre de l'interface est fournie par la base de données,AccèsConnectionLes objets ont généralement deux façons :
- AdoptionDriverManager(Drive Management class)Méthode statique pour obtenir
// ChargementJDBCPilote
Class.forName("com.mysql.jdbc.Driver");
// Créer une connexion à la base de données
Connection connection = DriverManager.getConnection(url);
- AdoptionDataSource(Source des données)Acquisition d'objets.Dans la pratiqueDataSourceObjet
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("url");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
Connection connection = dataSource.getConnection();
Différence:
- DriverManagerClasse pour obtenirConnectionConnexion,- Oui.Impossible de réutiliserDe,Chaque fois qu'une ressource est libérée après utilisation,Adoptionconnection.close()C'est la fermeture des connexions physiques.
- DataSourcePrise en charge des pools de connexion.Le pool de connexions crée un certain nombre de connexions à la base de données lors de l'initialisation,Ces connexions sontRéutilisable,Chaque fois que la connexion à la base de données est terminée,Libérez l'appel de ressourcesconnection.close()Tous.Oui.ConncetionRecyclage des objets connectés.
4.4 StatementObjet
StatementL'objet principal est deSQLInstruction envoyée à la base de données.JDBC APIIl existe trois types principauxStatementObjet
Ce qui est le plus souvent utilisé dans le développement réelPreparedStatementObjet,Voici un résumé :
Valeur de retour:
- executeQuery() Renvoie un seul Ensemble de résultats,Généralement utilisé pourselectDéclarations
- executeUpdate()La valeur de retour de la méthode estUn entier,Indique le nombre de lignes touchées,Généralement utilisé pourupdate、insert、deleteDéclarations
4.5 ResultSetObjet
ResultSetObjet il s'appelle l'ensemble de résultats,Il représente la conformité avecSQLToutes les lignes d'une condition d'instruction,Et ça passe par un ensemble degetXXXMéthodes disponibles
Accès aux données de ces lignes .
=“C:\Users\a\AppData\Roaming\Typora\typora-user-images\image-20220717203426690.png” alt=“image-20220717203426690” style=“zoom:50%;” />
Valeur de retour:
- executeQuery() Renvoie un seul Ensemble de résultats,Généralement utilisé pourselectDéclarations
- executeUpdate()La valeur de retour de la méthode estUn entier,Indique le nombre de lignes touchées,Généralement utilisé pourupdate、insert、deleteDéclarations
4.5 ResultSetObjet
ResultSetObjet il s'appelle l'ensemble de résultats,Il représente la conformité avecSQLToutes les lignes d'une condition d'instruction,Et ça passe par un ensemble degetXXXMéthodes disponibles
Accès aux données de ces lignes .
ResultSetLes données sont disposées ligne par ligne,Plusieurs champs par ligne,Et il y a Un pointeur d'enregistrement ,La ligne de données à laquelle se réfère le pointeur est appelée la ligne de données courante,Nous Ne peut fonctionner que sur la ligne de données courante .Si nous voulons obtenir un enregistrement,On va l'utiliser.ResultSetDenext()Méthodes ,Si nous voulonsResultSetÀ l'intérieur.Tous les enregistrements,Il aurait dûUtiliserwhileCycle
Mentions de copyright
Auteur de cet article [Zzt. Opkk],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/204/202207232157186784.html
Recommandé par sidebar
- Transplantation de systèmes embarqués
- Saisissez une chaîne de caractères à partir du clavier et affichez différents caractères et le nombre d'occurrences de chaque caractère. (la sortie n'est pas séquentielle) résoudre le problème en utilisant la méthode commune de la classe de chaîne
- 2019 Bar _ Aaai ICCN
- Conditions affectant la vitesse de requête de l'interface
- Stack et file d'attente de l'adaptateur STL
- Analyse de la stratégie de lecture et d'écriture du cache
- Classes et objets (1)
- Expérience II Yuv
- Comment synchroniser
- [arxiv2022] grouptransnet: Group transformer Network for RGB - D Salient Object Detection
Devinez que vous aimez
Avantages de la salle des machines bgp
La fosse Piétinée par l'homme vous dit d'éviter les 10 erreurs courantes dans les tests automatisés
Déterminer s'il s'agit d'un type vide
Langue C - quelques exercices classiques de langue C
Openvino Datawhale
Question 300 Leçon 6 type quadratique
Analyse du code source et de la conception de redis - - 7. Liste rapide
Concepts et différences de bits, bits, octets et mots
Déploiement du projet (version abrégée)
JDBC Learning and simple Encapsulation
Recommandé au hasard
- [Python flask note 5] Blueprint simple à utiliser
- Composants web - cycle de vie des éléments personnalisés
- Entrepôt de données 4.0 Notes - acquisition de données commerciales
- Entrepôt de données 4.0 Notes - acquisition de données sur le comportement de l'utilisateur II
- Affichage itératif des fichiers.h5, opérations de données h5py
- Résumé des connaissances mathématiques communes
- Comment se développe le serveur GPU refroidi à l'eau dans le Centre de données dans le cadre de l'informatique est - Ouest?
- Connaissance du matériel 1 - schéma et type d'interface (basé sur le tutoriel vidéo complet de l'exploitation du matériel de baiman)
- Examen des principes fondamentaux de la structure en acier
- Unity3d: ugui source, Rebuild Optimization
- Solution rapide: xshell ne peut pas glisser dans un dossier ou un paquet
- Rhcsa - - parcourir le contenu du fichier, couper, uniq, trier, utiliser les commandes.tr
- Intégrité du signal (si) intégrité de l'alimentation électrique (PI) notes d'apprentissage (32) Réseau de distribution d'énergie (4)
- Quelle est la raison pour laquelle la plate - forme easygbs ne peut pas lire l'enregistrement vidéo et a un phénomène de streaming répété rtmp?
- Notes du jour 7
- 【 Visual Dispatching Software】 Shanghai Dow Ning apporte netronic download, Trial, tutoriel pour l'Organisation SMB
- 2. Les règles quantitatives
- Événements courants de la souris et du clavier
- C #: in, out, ref Keywords
- Connaissance détaillée du GRE, du mgre; Connaissance de la configuration de base de l'OSPF
- Comment creo 9.0 modifie - t - il rapidement le système de coordonnées Cao?
- Notes du jour 5
- Renforcement de l'apprentissage - points de compréhension du gradient stratégique
- Le shell a besoin de connaître les commandes
- Okrk3399 Development Board Reserved i2c4 Mounting EEPROM
- Optimisation du serveur Cloud Huawei avec connexion clé
- Chapitre 2 requête de base et tri
- 【 langage c】 devinez jeux numériques + applet d'arrêt
- Qu'est - ce que le codage par titre?
- Feignclient utilise un tutoriel détaillé (illustration)
- Kettle implémente une connexion de base de données partagée et insère une instance de composant de mise à jour
- Simulation de modulation et de démodulation du signal CBOC basée sur MATLAB, sortie de corrélation, spectre de puissance et suivi de décalage de fréquence
- Les raccourcis clavier liés à l'onglet ne peuvent pas être utilisés après la mise à jour du vscode
- Expression du suffixe (une question par jour pendant les vacances d'été 4)
- Idées de conception sur l'initialisation des paramètres d'entrée de page
- Éléments de base de la validation des haricots - 04
- Une solution complète au problème du sac à dos dans la programmation dynamique
- Récursion des bosses 1: formule récursive
- Explication détaillée de l'injection aveugle d'erreur SQL
- Données chronologiques dans l'Internet industriel des objets