使用Java连接数据库

随着互联网的发展,数据的存储和处理变得越来越重要,因此学习如何使用Java连接数据库也变得越来越重要。Java是一种广泛使用的编程语言,具有跨平台性和易于学习的特点,同时也可以方便地连接数据库。

一、连接关系型数据库

Java可以与大多数关系型数据库进行连接,如Oracle、MySQL、PostgreSQL等。下面以MySQL为例介绍Java如何连接数据库。

首先需要下载该数据库的驱动程序,并将其添加到Java项目的类路径中。

Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/database";
Connection conn = DriverManager.getConnection(url,"root","password");

在代码中,首先使用Class.forName()方法加载MySQL的驱动程序,在连接字符串中指定连接的数据库和端口号。使用DriverManager.getConnection()方法连接数据库,并指定用户名和密码。

连接数据库成功后,可以通过Connection对象执行SQL语句。

Statement stmt = conn.createStatement();
String sql = "SELECT * FROM users;";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
    System.out.println(rs.getString("name"));
}

在以上代码中,使用Connection.createStatement()方法创建Statement对象,使用executeQuery()方法执行SQL查询,并使用ResultSet遍历结果集。

二、连接非关系型数据库

除了关系型数据库,Java还可以连接非关系型数据库,如MongoDB、Redis、Cassandra等。

下面以MongoDB为例介绍Java如何连接非关系型数据库。

首先需要下载该数据库的驱动程序,并将其添加到Java项目的类路径中。

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Properties properties = new Properties();
properties.load(classLoader.getResourceAsStream("mongo.properties"));
String host = properties.getProperty("host");
int port = Integer.parseInt(properties.getProperty("port"));
String databaseName = properties.getProperty("databaseName");

MongoClient mongoClient = new MongoClient(host, port);

MongoDatabase database = mongoClient.getDatabase(databaseName);

MongoCollection<Document> collection = database.getCollection("users");

FindIterable<Document> iterable = collection.find();

for(Document document : iterable) {
   System.out.println(document.toJson());
}

在以上代码中,通过加载属性文件的方式获取MongoDB的连接信息,并创建MongoClient连接。获取MongoDatabase对象和MongoCollection对象,使用find()方法查询文档,并使用Document.toJson()方法将结果转化为JSON格式输出。

三、连接池技术

连接池技术是一种提高数据库连接利用率的技术,通过提前创建连接对象,并将其存储在连接池中等待重用,避免了重复创建连接对象的性能开销。

下面以Druid连接池为例介绍Java如何使用连接池技术。

首先需要将Druid的依赖添加到项目中。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>

在代码中,使用DruidDataSource创建连接池对象,设置连接池的属性,并通过getConnection()方法获取连接对象。

//创建dataSource
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDbType("mysql");
dataSource.setUrl("jdbc:mysql://localhost:3306/database");
dataSource.setUsername("root");
dataSource.setPassword("password");

//获取连接对象
Connection conn = dataSource.getConnection();

在以上代码中,通过设置数据源的URL、用户名和密码等信息,使用dataSource.getConnection()方法获取连接对象,使用完毕后需要调用conn.close()方法归还连接池对象。

代码示例

完整的Java连接数据库的代码示例如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import com.alibaba.druid.pool.DruidDataSource;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

public class ConnectionDemo {
    //连接MySQL数据库
    public void mysqlConnectionDemo() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/database";
        Connection conn = DriverManager.getConnection(url,"root","password");

        Statement stmt = conn.createStatement();
        String sql = "SELECT * FROM users;";
        ResultSet rs = stmt.executeQuery(sql);
        while(rs.next()){
            System.out.println(rs.getString("name"));
        }

        conn.close();
    }

    //连接MongoDB数据库
    public void mongoConnectionDemo() throws Exception {
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        Properties properties = new Properties();
        properties.load(classLoader.getResourceAsStream("mongo.properties"));
        String host = properties.getProperty("host");
        int port = Integer.parseInt(properties.getProperty("port"));
        String databaseName = properties.getProperty("databaseName");

        MongoClient mongoClient = new MongoClient(host, port);

        MongoDatabase database = mongoClient.getDatabase(databaseName);

        MongoCollection collection = database.getCollection("users");

        FindIterable iterable = collection.find();

        for(Document document : iterable) {
            System.out.println(document.toJson());
        }

        mongoClient.close();
    }

    //使用Druid连接池连接MySQL数据库
    public void druidConnectionDemo() throws SQLException {
        //创建dataSource
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDbType("mysql");
        dataSource.setUrl("jdbc:mysql://localhost:3306/database");
        dataSource.setUsername("root");
        dataSource.setPassword("password");

        //获取连接对象
        Connection conn = dataSource.getConnection();

        conn.close();
    }
}

总结

本文从连接关系型数据库、连接非关系型数据库、连接池技术三个方面详细介绍了如何使用Java连接数据库,并提供了相应的代码示例。Java连接数据库是Java开发中的一个重要知识点,对于提高应用的性能和稳定性具有重要作用。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/248881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:30
下一篇 2024-12-12 13:30

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论