Maison  >  Article  >  Java  >  Une brève introduction à JDBC en Java

Une brève introduction à JDBC en Java

黄舟
黄舟original
2017-07-20 14:01:071364parcourir

Qu'est-ce que JDBC ? Cet article vous donne une introduction détaillée à l'interface de programmation d'applications dans le langage Java qui est utilisée pour standardiser la façon dont les programmes clients accèdent à la base de données. Elle a une certaine valeur de référence. Les amis intéressés peuvent se référer à la préface

 : Qu'est-ce que c'est. JDBC

Introduction à Wikipédia :

La connectivité de base de données Java (JDBC en abrégé) est utilisée dans le langage Java pour standardiser la façon dont les programmes clients arrivent à L'interface de programmation d'application qui accède au La base de données fournit des méthodes telles que l'interrogation et la mise à jour des données dans la base de données. JDBC est également une marque commerciale de Sun Microsystems. JDBC est destiné aux bases de données relationnelles.

En termes simples, il s'agit d'un type d'API Java utilisé pour exécuter des instructions SQL. Grâce à JDBC, nous pouvons directement utiliser la programmation Java pour faire fonctionner des bases de données relationnelles. Grâce à l'encapsulation, les développeurs peuvent utiliser l'API Java pure pour terminer l'exécution SQL.

1. Préparation (1) : Configuration de l'installation de MySQL et apprentissage de base

L'image ci-dessous est la base de données que j'utiliserai pour la démonstration de la prochaine surface .

2. Préparation (2) : Téléchargez le package jar correspondant à la base de données et importez-le

Utiliser JDBC doit importer le package jar correspondant dans le projet. Méthode d'import sous Eclipse :
Faites un clic droit sur l'icône du projet, sélectionnez "Propriétés", sélectionnez "Ajouter des JAR externes..." dans "Java Bulid Path", et sélectionnez le package jar obtenu après téléchargement et décompression.

 

Si vous utilisez MySQL, l'importation suivante ne signalera pas d'erreur :


import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

De plus, vous avez également besoin du package JDBC, qui peut être importé directement.


import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

3. Opérations JDBC de base

Par souci de simplicité, liées aux bases de données. les opérations, les commandes et les paramètres sont tous codés en dur. Les lecteurs intéressés peuvent les explorer et réduire le couplage entre données et opérations.

Regardez d'abord le code spécifique et mettez-le en pratique. La cinquième partie de cet article fait une petite recherche sur l'API utilisée.

Toutes les méthodes et données membres ci-dessous se trouvent dans la classe publique JDBCOperation.

(1) Définir la classe enregistrée (facultatif)

Ceci est principalement fait pour faciliter le fonctionnement et la définition de l'interface est facultatif.


static class Student {
  private String Id;
  private String Name;
  private String Sex;
  private String Age;

  Student(String Name, String Sex, String Age) {
   this.Id = null; //default
   this.Name = Name;
   this.Sex = Sex;
   this.Age = Age;
  }

  public String getId() {
   return Id;
  }

  public void setId(String Id) {
   this.Id = Id;
  }

  public String getName() {
   return Name;
  }

  public void setName(String Name) {
   this.Name = Name;
  }

  public String getSex() {
   return Sex;
  }

  public void setSex(String Sex) {
   this.Sex = Sex;
  }

  public String getAge() {
   return Age;
  }

  public void setage(String Age) {
   this.Age = Age;
  }
}

(2) L'acquisition de la connexion

Doit être effectuée avant l'opération Obtenez une connexion à la base de données.


private static Connection getConn() {
 String driver = "com.mysql.jdbc.Driver";
 String url = "jdbc:mysql://localhost:3306/samp_db";
 String username = "root";
 String password = "";
 Connection conn = null;
 try {
  Class.forName(driver); //classLoader,加载对应驱动
  conn = (Connection) DriverManager.getConnection(url, username, password);
 } catch (ClassNotFoundException e) {
  e.printStackTrace();
 } catch (SQLException e) {
  e.printStackTrace();
 }
 return conn;
}

(3)insérer


private static int insert(Student student) {
 Connection conn = getConn();
 int i = 0;
 String sql = "insert into students (Name,Sex,Age) values(?,?,?)";
 PreparedStatement pstmt;
 try {
  pstmt = (PreparedStatement) conn.prepareStatement(sql);
  pstmt.setString(1, student.getName());
  pstmt.setString(2, student.getSex());
  pstmt.setString(3, student.getAge());
  i = pstmt.executeUpdate();
  pstmt.close();
  conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
 return i;
}

(4)mettre à jour


private static int update(Student student) {
 Connection conn = getConn();
 int i = 0;
 String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'";
 PreparedStatement pstmt;
 try {
  pstmt = (PreparedStatement) conn.prepareStatement(sql);
  i = pstmt.executeUpdate();
  System.out.println("resutl: " + i);
  pstmt.close();
  conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
 return i;
}

(5)sélectionner

Prenons select * from XXX comme exemple.


private static Integer getAll() {
 Connection conn = getConn();
 String sql = "select * from students";
 PreparedStatement pstmt;
 try {
  pstmt = (PreparedStatement)conn.prepareStatement(sql);
  ResultSet rs = pstmt.executeQuery();
  int col = rs.getMetaData().getColumnCount();
  System.out.println("============================");
  while (rs.next()) {
   for (int i = 1; i <= col; i++) {
    System.out.print(rs.getString(i) + "\t");
    if ((i == 2) && (rs.getString(i).length() < 8)) {
     System.out.print("\t");
    }
    }
   System.out.println("");
  }
   System.out.println("============================");
 } catch (SQLException e) {
  e.printStackTrace();
 }
 return null;
}

(6)supprimer


private static int delete(String name) {
 Connection conn = getConn();
 int i = 0;
 String sql = "delete from students where Name=&#39;" + name + "&#39;";
 PreparedStatement pstmt;
 try {
  pstmt = (PreparedStatement) conn.prepareStatement(sql);
  i = pstmt.executeUpdate();
  System.out.println("resutl: " + i);
  pstmt.close();
  conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
 return i;
}

4. Test

Avant de tester, vous devez ouvrir le service de la base de données correspondante dans le système. La commande de démarrage de MySQL sous Windows est net start mysql

Code de test


public static void main(String args[]) {
 JDBCOperation.getAll();
 JDBCOperation.insert(new Student("Achilles", "Male", "14"));
 JDBCOperation.getAll();
 JDBCOperation.update(new Student("Bean", "", "7"));
 JDBCOperation.delete("Achilles");
 JDBCOperation.getAll();
}

Sortie dans Eclipse

============================
1    Ender         mâle    8   
2    Bean         mâle    6   
3    Petra fema    9   
4    Peter         mâle     9   
5    _Graff        mâle    40   
6    DIEU         fema    255   
=================== ===== ====
============================
1    Ender         mâle    8   
2    Haricot         mâle    6   
3    Petra        fema    9   
4    Peter         mâle    9   
5    _Graff         mâle    40   
6    DIEU        fema    255   
7    Achille    Mâle    14   
============= ===============
résultat : 1
résultat : 1
===================== ========
1    Ender         mâle     8   
2    Bean         mâle     7   
3    Petra         fema    9   
4    Peter         mâle    9   
5    _Graff        mâle    40   
6    DIEU        fema    255
============================

五、代码分析

在上述对数据库进行增删改查的过程中,可以发现其共性部分,即通用的流程:

  (1)创建Connection对象、SQL查询命令字符串;
  (2)对Connection对象传入SQL查询命令,获得PreparedStatement对象;
  (3)对PreparedStatement对象执行executeUpdate() etexecuteQurey()获得结果;
  (4)先后关闭PreparedStatement对象Il s'agit d'une API Java pour Connection.

pour JDBC.手册可以了解其具体的意义和方法。

Wrapper

java.sql 

接口 Connexion
所有超级接口:
Wrapper

interface publique Connectionextends Wrapper 

与特定数据库的连接(会话)。在连接上下文中执Il s'agit d'une application SQL.
Connexion »息是使用 getMetaData 方法获得的。

PreparedStatemnt

java.sql 
接口 PreparedStatement
所有超级接口:

Déclaration, Wrapper


CallableStatement

interface publique PreparedStatementextends Statement
表示预编译的 SQL.
Utilisation de SQL编译并存储在 PreparedStatement 对象中.方法

boolean perform()
Exécute une instruction SQL dans cet objet PreparedStatement, qui peut être n'importe quel type d'instruction SQL.
ResultSet executeQuery()
Exécute une requête SQL dans cet objet PreparedStatement et renvoie l'objet ResultSet généré par la requête.
int executeUpdate()
Exécute une instruction SQL dans cet objet PreparedStatement. L'instruction doit être une instruction SQL Data Manipulation Language (DML), telle qu'une instruction INSERT, UPDATE ou DELETE ; Ou une instruction SQL sans contenu de retour, telle qu'une instruction DDL.

ResultSet

java.sql
Interface ResultSet
Toutes les super interfaces :
Wrapper
Tous les sous connus -interfaces Interface :
CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, RowSet, SyncResolver, WebRowSet

interface publique ResultSetextends Wrapper

signifie La table de données de l'ensemble de résultats de la base de données est généralement générée en exécutant une instruction pour interroger la base de données.

6. Questions à réfléchir

Chaque opération SQL doit établir et fermer une connexion, ce qui consommera inévitablement beaucoup de ressources. . Comment l'éviter ?
Analyse : vous pouvez utiliser un pool de connexions pour maintenir la connexion uniformément sans avoir à l'établir et à la fermer à chaque fois. En fait, cela est utilisé par de nombreux outils qui encapsulent JDBC.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn