JDBC数据库编程(java实训报告)
文章目录
一、实验要求:
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和数据库建立连接成功是第一步,这个连接不成功则没办法继续进行。成功连接后需要编写对数据库增删改查的相关代码。过程虽然很艰辛,遇到了很多的问题,通过查询相关的知识点将问题解决。自己对知识的掌握有了进一步的提高。

JDBC数据库编程(java实训报告)的更多相关文章
- 2018 java实训总结(时间戳&&主键)
java实训题目:源管理系统. 答辩的时候被老师怼了以下几个的地方: 1.主键改变了 2.没时间戳却说自己的程序里有先后(这就是老师迂腐了,主键自增可以间接反馈出他加入的早晚,即使主键做出了改变但只是 ...
- Java实训:实训一 ——长春职业技术学院 16级网络工程
Java实训:实训一 本文会解释一些设计思路. 想看具体过程,请转:https://www.cnblogs.com/lxwlxw/p/10114187.html 笑维的码云项目命名不太对,所以我来:h ...
- Java JDBC数据库编程
课程 Java面向对象程序设计 一.实验目的 掌握数据库编程技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境,Microsoft SQL ...
- JDBC数据库编程:PreparedStatement接口
使用PreparedStatement进行数据库的更新及查询操作. PreparedStatement PreparedStatement是statement子接口.属于预处理. 使用statemen ...
- Java高级篇(三)——JDBC数据库编程
JDBC是连接数据库和Java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.本篇将介绍一下如何使用JDBC操作数据库(以MySQL为例). 一.JDBC JDBC制定了统一访问 ...
- Java ——JDBC数据库编程
数据库分类 关系型数据库:以表来存放数据的,数据与数据之间的关系通过表之间的连接体现 面向对象的数据库:保存的是对象本身 其它 数据库:数据库管理系统中创建一个个的保存数据的单位 数据是保存在数据库的 ...
- JDBC数据库编程
常识名词:ODBC ,JDBC,JDBC API ,JDBC Driver API 数据准备,续上节: JDBC编程流程 最基本的JDBC操作 本段内容主要完成JDBC的增删查改操作 packa ...
- JDBC数据库编程常用接口(转)
JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口(API),制定了统一的访问各种关系数据库的标准接口,为各个数据库厂商提供了标准接口的实现.这东西能够 ...
- JDBC数据库编程:callableStatement接口
了解MySQL存储过程建立, 了解存储过程中参数传递的三种方式 了解callablestatement调用存储过程操作. 因为在现在开发中,使用存储过程的地方越来越少,所以,对于存储过程使用,只需要了 ...
随机推荐
- 分享一款免费OPC UA服务器
OPC UA基于OPC基金会提供的新一代技术,提供安全,可靠和独立于厂商的,实现原始数据和预处理的信息从制造层级到生产计划或ERP层级的传输.通过OPC UA,所有需要的信息在任何时间,任何地点对每个 ...
- Apache DolphinScheduler 1.2.1 发布说明
Apache DolphinScheduler 于2020年2月24日正式发布 1.2.1 版,发布内容如下: 新特性: [#1497] 通过 API 创建的工作流在前端展示时自动调整布局. [#74 ...
- 057_末晨曦Vue技术_处理边界情况之强制更新($forceUpdate)与通过 v-once 创建低开销的静态组件
强制更新($forceUpdate) 点击打开视频讲解更加详细 在vue中,如果data中有基本数据类型变量:age,修改他,页面会自动更新. 但如果data中的变量为数组或对象(引用数据类型),我们 ...
- 2019 CSP-S Ⅱ 游记
day0(试机) 第零天,重新打了一遍头文件和读优,熟悉了一下就匆匆走了. day1 T1一看到先把二分打了,然后发现long long要爆,好慌 主要是基础知识不够扎实,不知道unsigned lo ...
- good thing
- Ubuntu locale设置
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) 解决方法: 1 sudo locale-gen &q ...
- Haproxy部署及控制台使用手册
一.介绍 1.简介 HAProxy是一个使用C语言编写开源软件,提供高可用,负载均衡,以及基于TCP(四层)和HTTP(七层)的应用程序代理: HAProxy特别适用于那些负载特大的web站点,这些站 ...
- KingbaseES 缺少库文件问题
在工作中大家经常会遇到找不到某个so 的问题,这类可能是so文件缺失,或者是由于LD_LIBRARY_PATH 环境变量设置不当的原因. 1.库文件 我们通常把一些公用函数制作成函数库,供其它程序使用 ...
- 基于 vite 创建 vue3 全家桶项目(vite + vue3 + tsx + pinia)
vite 最近非常火,它是 vue 作者尤大神发布前端构建工具,底层基于 Rollup,无论是启动速度还是热加载速度都非常快.vite 随 vue3 正式版一起发布,刚开始的时候与 vue 绑定在一起 ...
- Markdowm基础语法的使用(typora)
Mackdown学习 一级标题:一个#加空格 回车 二级标题:两个#加空格 回车 以此类推... 一级标题(Ctrl+1) 二级标题(Ctrl+2) 三级标题(Ctrl+3) 四级标题(Ctrl+4) ...