JDBC数据库编程(java实训报告)

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 这篇文章是关于JDBC数据库编程的实训报告,涵盖了实验要求、实验环境、实验内容和总结。文中详细介绍了如何使用Java JDBC技术连接数据库,并进行增删改查等基本操作。实验内容包括建立数据库连接、查询、添加、删除和修改数据,每个部分都提供了相应的Java代码示例和操作测试结果截图。作者在总结中分享了在实验过程中遇到的问题和解决方案,以及对Java与数据库连接操作的掌握情况。

文章目录

  • 一、实验要求:
  • 二、实验环境:
  • 三、实验内容:
    • 1、建立数据库连接
    • 2、查询数据
      • 2.1 测试结果
    • 3、添加数据
      • 3.1、测试结果
    • 4、删除数据
      • 4.1、测试结果
    • 5、修改数据
      • 5.1 测试结果
    • 四、总结

一、实验要求:

1、掌握数据库访问技术。
2、掌握JDBC连接数据库的方法。
3、掌握JDBC基本操作、包括查找、修改、删除、增加等。

二、实验环境:

1、硬件设备要求:PC及其联网环境;
2、软件设备要求:Windows操作系统;Sqlserver数据库管理系统;Eclipse集成开发工具。

三、实验内容:

编写程序实现对图书信息表的增删改查操作。
需求分析:现有图书信息表bookinfo(序号,图书编号,图书名称,作者,出版社,单价,出版日期,ISBN,库存数量)。写程序实现对该表的增删改查操作。

1、建立数据库连接

package bao_1;

import java.sql.*;

public class JdbcConnection {
    private static Connection conn = null;

    public static Connection dbConnection() {
        try {
            // 连接驱动程序
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            //访问sqlserver的url
            String url = "jdbc:sqlserver://localhost:1433;databbaseName=MyDatabase";
            String user="sa";
            String password="123";
            //获得数据连接
            conn = DriverManager.getConnection(url, user, password);
            System.out.println("数据库连接成功\n\n\n");
        } catch (Exception e) {
            e.printStackTrace();
        }

        return conn;
    }

}

2、查询数据

package bao_1;

import java.sql.*;

public class QueryExam {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            //获得连接对象
            Connection conn=new JdbcConnection().dbConnection();
            //创建语句对象

            Statement sql=conn.createStatement();
            //执行数据库查询操作,返回一个Resultset 结果集
            ResultSet rs=sql.executeQuery("select *from MyDatabase..student");
            System.out.println("\t\t显示数据的所有信息:\n");
            //循环获得所有数据
            while(rs.next()) {
                int index =rs.getInt(1);//获取表中第1列序号信息
                String name=rs.getString(2);//......第二列图书名称
                float price=rs.getFloat(3);//.......第三列图书价格
                int number =rs.getInt(4);  //........第四列图书数量
                String author=rs.getString(5);//......第五列图书作者
                System.out.print("  序号:"+index);
                System.out.print("  名称:"+name);
                System.out.print("  价格:"+price);
                System.out.print("  数量:"+number);
                System.out.print("  作者:"+author);
                System.out.println("\n");

                }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

2.1 测试结果

在这里插入图片描述

3、添加数据

package bao_1;

import java.sql.*;

public class InsertExam {

    public static void main(String[] args) {

        try {
            Connection conn=new JdbcConnection().dbConnection();
            Statement sql=conn.createStatement();
            //定义插入数据的SQL语句
            String inserStr="insert into MyDatabase..student values(5,'程序设计',38,24,'小黑')";
            sql.executeUpdate(inserStr);//调用executeUpdate()方法,更新数据
            ResultSet rs=sql.executeQuery("select *from MyDatabase..student");
            System.out.println("\t\t插入数据:\n\n");
            while (rs.next()) {
                int index = rs.getInt(1);// 获取表中第1列序号信息
                String name = rs.getString(2);// ......第二列图书名称
                float price = rs.getFloat(3);// .......第三列图书价格
                int number = rs.getInt(4); // ........第四列图书数量
                String author = rs.getString(5);// ......第五列图书作者
                System.out.print("  序号:"+index);
                System.out.print("  名称:" + name);
                System.out.print("  价格:" + price);
                System.out.print("  数量:" + number);
                System.out.print("  作者:" + author);
                System.out.println("\n");
            }
            } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

3.1、测试结果

在这里插入图片描述

4、删除数据

package bao_1;

import java.sql.*;

public class DeleteExample {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            Connection conn = new JdbcConnection().dbConnection();
            Statement sql = conn.createStatement();
            // 删除数据的SQL语句
            String deleteStr = "delete from MyDatabase..student where id=2";
            sql.executeUpdate(deleteStr);// 更新数据表
            ResultSet rs = sql.executeQuery("select * from MyDatabase..student ");
              System.out.println("\t\t删除数据:\n");
            while (rs.next()) {
                int index = rs.getInt(1);// 获取表中第1列序号信息
                String name = rs.getString(2);// ......第二列图书名称
                float price = rs.getFloat(3);// .......第三列图书价格
                int number = rs.getInt(4); // ........第四列图书数量
                String author = rs.getString(5);// ......第五列图书作者
                System.out.print("  序号:"+index);
                System.out.print("  名称:" + name);
                System.out.print("  价格:" + price);
                System.out.print("  数量:" + number);
                System.out.print("  作者:" + author);
                System.out.println("\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

4.1、测试结果

在这里插入图片描述

5、修改数据

package bao_1;

import java.sql.*;

public class UpdateExam {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            Connection conn = new JdbcConnection().dbConnection();
            Statement sql = conn.createStatement();
            // 更新数据的sql
            String updateStr = "Update MyDatabase..student set author='李刚' where id=3";
            sql.executeUpdate(updateStr);
            ResultSet rs = sql.executeQuery("select * from MyDatabase..student");
            System.out.println("\t\t更改数据信息:\n");
            while (rs.next()) {
                int index = rs.getInt(1);// 获取表中第1列序号信息
                String name = rs.getString(2);// ......第二列图书名称
                float price = rs.getFloat(3);// .......第三列图书价格
                int number = rs.getInt(4); // ........第四列图书数量
                String author = rs.getString(5);// ......第五列图书作者
                System.out.print("  序号:"+index);
                System.out.print("  名称:"+name);
                System.out.print("  价格:"+price);
                System.out.print("  数量:"+number);
                System.out.print("  作者:"+author);
                System.out.println("\n");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

5.1 测试结果

在这里插入图片描述

四、总结

实验总结:通过本次实验,我基本掌握了java和数据库的连接,通过在java中编写程序直接对数据库里边的数据进行一系列的操作。在进行java和数据库连接中遇到的问题是下载的驱动程序要怎样加入到java项目中,在数据库建立表的过程中,防火墙的设置始终不能成功,导致数据库中编写时不能正常的运行。经过多次的尝试才能运行。从数据库中本地编写代码实现数据的增删改查较为容易。Java和数据库建立连接成功是第一步,这个连接不成功则没办法继续进行。成功连接后需要编写对数据库增删改查的相关代码。过程虽然很艰辛,遇到了很多的问题,通过查询相关的知识点将问题解决。自己对知识的掌握有了进一步的提高。
在这里插入图片描述

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
Java 数据库连接 API
2025 更新必看:Java 编程基础入门级超级完整版指南
本教程为2025更新版Java编程基础入门指南,涵盖开发环境搭建(SDKMAN!管理JDK、VS Code配置)、Java 17+新特性(文本块、Switch表达式增强、Record类)、面向对象编程(接口默认方法、抽象类与模板方法)、集合框架深度应用(Stream API高级操作、并发集合)、模式匹配与密封类等。还包括学生成绩管理系统实战项目,涉及Maven构建、Lombok简化代码、JDBC数据库操作及JavaFX界面开发。同时提供JUnit测试、日志框架使用技巧及进阶学习资源推荐,助你掌握Java核心技术并迈向高级开发。
141 5
|
2月前
|
JavaScript 前端开发 Java
Java 编程进阶实操中工具集整合组件封装方法与使用指南详解
本文详细介绍Hutool工具集和图书管理系统相关组件的封装方法及使用示例。通过通用工具类封装(如日期格式化、字符串处理、加密等)、数据库操作封装(结合Hutool DbUtil与MyBatis)、前端Vue组件封装(图书列表与借阅表单)以及后端服务层封装(业务逻辑实现与REST API设计),帮助开发者提升代码复用性与可维护性。同时,提供最佳实践建议,如单一职责原则、高内聚低耦合、参数配置化等,助力高效开发。适用于Java编程进阶学习与实际项目应用。
111 10
|
1月前
|
Oracle Java 关系型数据库
java 编程基础入门级超级完整版教程详解
这份文档是针对Java编程入门学习者的超级完整版教程,涵盖了从环境搭建到实际项目应用的全方位内容。首先介绍了Java的基本概念与开发环境配置方法,随后深入讲解了基础语法、控制流程、面向对象编程的核心思想,并配以具体代码示例。接着探讨了常用类库与API的应用,如字符串操作、集合框架及文件处理等。最后通过一个学生成绩管理系统的实例,帮助读者将理论知识应用于实践。此外,还提供了进阶学习建议,引导学员逐步掌握更复杂的Java技术。适合初学者系统性学习Java编程。资源地址:[点击访问](https://pan.quark.cn/s/14fcf913bae6)。
137 2
|
2月前
|
前端开发 Java 数据库连接
Java 编程进阶实操之工具集整合应用指南
本文聚焦Java编程进阶实操,涵盖并发编程、性能优化及数据库操作优化等核心知识点,并结合Hutool、Postman、Git等实用工具,提供从理论到实践的学习路径。通过小型图书管理系统实战项目,详细解析技术选型与实现步骤,助力开发者掌握Spring Boot、MyBatis等框架应用。同时展望Java新特性与技术趋势,为职业发展奠定基础。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
67 1
|
2月前
|
Java 开发者
Java编程实用技巧:提升代码质量与开发效率
Java作为一门成熟且广泛应用的编程语言,掌握一些实用技巧可以显著提高开发效率和代码质量。以下是值得Java开发者掌握的实用技巧:
60 6
|
27天前
|
缓存 安全 算法
2025 年 Java 秋招面试必看 Java 并发编程面试题实操篇
Java并发编程是Java技术栈中非常重要的一部分,也是面试中的高频考点。本文从基础概念、关键机制、工具类、高级技术等多个方面进行了介绍,并提供了丰富的实操示例。希望通过本文的学习,你能够掌握Java并发编程的核心知识,在面试中取得好成绩。同时,在实际工作中,也能够运用这些知识设计和实现高效、稳定的并发系统。
40 0
|
27天前
|
存储 安全 Java
2025 年 Java 秋招面试必看的 Java 并发编程面试题汇总
文章摘要: 本文系统梳理Java并发编程核心知识点,助力2025年秋招面试。内容涵盖:1)基础概念,包括线程/进程区别、创建线程的3种方式(Thread/Runnable/Callable)、6种线程状态及转换;2)关键机制,对比sleep()与wait()的锁行为差异,解释start()而非run()启动线程的原因;3)工具类与典型应用场景。通过技术原理与代码示例结合的方式,帮助开发者深入理解并发模型、线程同步等核心问题,为高并发系统设计打下坚实基础。(150字)
67 0
|
1月前
|
人工智能 Java API
Java并发编程之Future与FutureTask
本文深入解析了Future接口及其实现类FutureTask的原理与使用。Future接口定义了获取任务结果、取消任务及查询任务状态的规范,而FutureTask作为其核心实现类,结合了Runnable与Future的功能。文章通过分析FutureTask的成员变量、状态流转、关键方法(如run、set、get、cancel等)的源码,展示了异步任务的执行与结果处理机制。最后,通过示例代码演示了FutureTask的简单用法,帮助读者更直观地理解其工作原理。适合希望深入了解Java异步编程机制的开发者阅读。
|
2月前
|
网络协议 Java 大数据
【高薪程序员必看】万字长文拆解Java并发编程!(1)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
57 0

热门文章

最新文章