Java访问数据库实例详解

Java访问数据库实例详解

本文将详细讲解如何使用Java语言访问数据库,包括连接数据库、增删改查等基本操作。

连接数据库

Java程序可以通过JDBC(Java Database Connectivity) API来连接数据库,同样也需要使用数据库驱动程序。下面是一个使用MySQL数据库连接的示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectDatabase {
    public static void main(String[] args) {
        Connection conn = null;
        try {
            // 加载MySQL数据库驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            // 建立数据库连接
            conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8",
                "root",
                "password"
            );
            // 连接成功后执行操作
            // ...
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

上述代码可以连接MySQL数据库,其中URL参数中的test为数据库名字,root为用户名,password为密码,可以根据实际情况修改。在连接成功之后,即可执行后续的SQL操作。

增删改查

通过连接数据库后,可以执行以下基本SQL语句:

插入数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertData {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            // 加载MySQL数据库驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            // 建立数据库连接
            conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8",
                "root",
                "password"
            );
            // 插入数据
            String sql = "INSERT INTO user VALUES (?, ?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, "张三");
            pstmt.setInt(2, 20);
            pstmt.executeUpdate();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (pstmt != null) {
                    pstmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

更新数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class UpdateData {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            // 加载MySQL数据库驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            // 建立数据库连接
            conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8",
                "root",
                "password"
            );
            // 更新数据
            String sql = "UPDATE user SET age=? WHERE name=?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, 21);
            pstmt.setString(2, "张三");
            pstmt.executeUpdate();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (pstmt != null) {
                    pstmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

删除数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DeleteData {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            // 加载MySQL数据库驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            // 建立数据库连接
            conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8",
                "root",
                "password"
            );
            // 删除数据
            String sql = "DELETE FROM user WHERE name=?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, "张三");
            pstmt.executeUpdate();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (pstmt != null) {
                    pstmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

查询数据

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

public class QueryData {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            // 加载MySQL数据库驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            // 建立数据库连接
            conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8",
                "root",
                "password"
            );
            // 查询数据
            String sql = "SELECT * FROM user";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("name: " + name + ", age: " + age);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (pstmt != null) {
                    pstmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

小结

本文详细讲解了如何连接数据库和执行简单的增删改查操作,可以根据实际情况进行修改和扩展。通过掌握这些基本操作,可以在Java项目中使用数据库存储数据,提高代码的可扩展性和性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java访问数据库实例详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • LINQ to XML的编程基础

    LINQ to XML 是用于处理 XML 文档的 API,它允许我们通过 LINQ 查询语言来查询和对 XML 文档进行操作,相比传统 DOM 模型和 SAX 模型的 XML 处理方式,LINQ to XML 更具有灵活性和易用性。下面就是 LINQ to XML 的编程基础攻略: 1. 首先,需要引用相应的命名空间 使用 LINQ to XML,需要引用…

    Java 2023年5月19日
    00
  • java高效文件流读写操作详解

    Java高效文件流读写操作详解 在Java中,文件读取和写入是非常常见和基础的操作。但是,对于大文件、多线程以及高并发的场景,如果采用普通的文件读取和写入方式,可能会出现性能瓶颈和资源浪费,这时就需要采用高效的文件读写方式。 本篇文章将详细讲解Java高效文件流读写操作的攻略,包括字节流和字符流两种类型。下面将分别针对字节流和字符流进行讲解。 字节流 一、F…

    Java 2023年5月20日
    00
  • SpringSecurity导致SpringBoot跨域失效的问题解决

    首先需要明确的是,Spring Boot是默认开启CSRF保护的。而Spring Security也是默认开启CSRF保护的。当二者共存时,常常会产生CSRF保护机制引起的跨域问题。那么如何解决SpringSecurity导致SpringBoot跨域失效的问题呢?下面给出完整攻略。 1. 禁用Spring Security的CSRF保护 第一种解决方式是禁用…

    Java 2023年5月20日
    00
  • Java日常练习题,每天进步一点点(32)

    首先我们需要了解这个题目的基本信息,可以看到这是“Java日常练习题,每天进步一点点”系列中的第32题,很有可能是一道适合初学者的小练习,能够帮助我们巩固一些Java基础知识和编程技巧。 在开始解答之前,我们需要明确这道题目的要求和背景信息。以下是题目的原始描述: 「题目描述」给你一个字符串 s 和一个非负整数 k,请你找出 s 中的最长子串,要求该子串中的…

    Java 2023年5月20日
    00
  • SpringBoot集成Spring Security的方法

    SpringBoot集成SpringSecurity的方法 Spring Security是一个强大的Java安全框架,可以提供身份验证、授权、加密和会话管理等功能。在本文中,将介绍如何使用SpringBoot集成Spring Security,以便在我们的应用程序中实现安全性。 步骤一:添加Spring Security依赖 我们需要在pom.xml文件中…

    Java 2023年5月15日
    00
  • Java Stopwatch类,性能与时间计时器案例详解

    Java Stopwatch类,性能与时间计时器案例详解 在Java开发中,我们有时候需要统计代码的执行时间及性能等指标信息,这时候我们可以使用Java中的Stopwatch类来实现。本文将详细讲解Stopwatch类的使用以及示例。 1. Stopwatch类的使用 Stopwatch类是Google Guava库中提供的计时器类,可以实现启动、停止和恢复…

    Java 2023年5月19日
    00
  • 常见的Java安全漏洞有哪些?

    常见的Java安全漏洞 Java在发展过程中,也出现了很多安全漏洞。下面是一些常见的Java安全漏洞: 1. SQL注入漏洞 SQL注入漏洞指的是攻击者利用应用程序中没有对用户输入的SQL语句参数进行验证或转义,从而在应用程序中执行恶意的SQL语句。 示例: 假设有一个查询用户姓名的SQL语句: String sql = "SELECT * FRO…

    Java 2023年5月11日
    00
  • ASP.NET微信公众号添加菜单

    下面我将为您详细讲解“ASP.NET微信公众号添加菜单”的完整攻略。 1. 准备工作 首先,在进行微信公众号开发之前,我们需要准备以下工作: 申请微信公众号账号,并获取到对应的AppID和AppSecret。 下载微信公众号开发者工具,该工具可帮助我们进行调试和预览。 创建一个ASP.NET项目,并引入微信公众平台SDK。 2. 添加菜单 在准备工作完成后,…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部