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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 这篇文章是关于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
相关文章
|
8天前
|
Kubernetes 负载均衡 Java
k8s的出现解决了java并发编程胡问题了
Kubernetes通过提供自动化管理、资源管理、服务发现和负载均衡、持续交付等功能,有效地解决了Java并发编程中的许多复杂问题。它不仅简化了线程管理和资源共享,还提供了强大的负载均衡和故障恢复机制,确保应用程序在高并发环境下的高效运行和稳定性。通过合理配置和使用Kubernetes,开发者可以显著提高Java应用程序的性能和可靠性。
57 31
|
4天前
|
SQL Java 中间件
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
在BeetISQL 2.13.8版本中,客户使用batch insert向yashandb表插入数据并尝试获取自动生成的sequence id时,出现类型转换异常。原因是beetlsql在prepareStatement时未指定返回列,导致yashan JDBC驱动返回rowid(字符串),与Java Bean中的数字类型tid不匹配。此问题影响业务流程,使无法正确获取sequence id。解决方法包括:1) 在batchInsert时不返回自动生成的sequence id;2) 升级至BeetISQL 3,其已修正该问题。
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
|
9天前
|
Java 编译器 开发者
注解的艺术:Java编程的高级定制
注解是Java编程中的高级特性,通过内置注解、自定义注解及注解处理器,可以实现代码的高度定制和扩展。通过理解和掌握注解的使用方法,开发者可以提高代码的可读性、可维护性和开发效率。在实际应用中,注解广泛用于框架开发、代码生成和配置管理等方面,展示了其强大的功能和灵活性。
60 25
|
6天前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
48 17
|
4天前
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。
|
18天前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
49 19
|
1月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
99 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
1月前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
108 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
1月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
116 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
10天前
|
Java 开发工具
课时6:Java编程起步
课时6:Java编程起步,主讲人李兴华。课程摘要:介绍Java编程的第一个程序“Hello World”,讲解如何使用记事本或EditPlus编写、保存和编译Java源代码(*.java文件),并解释类定义、主方法(public static void main)及屏幕打印(System.out.println)。强调类名与文件名一致的重要性,以及Java程序的编译和执行过程。通过实例演示,帮助初学者掌握Java编程的基本步骤和常见问题。

热门文章

最新文章