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调用存储过程操作. 因为在现在开发中,使用存储过程的地方越来越少,所以,对于存储过程使用,只需要了 ...
随机推荐
- 在Linux下源码编译安装GreatSQL/MySQL
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 本 ...
- 集成 Spring Doc 接口文档和 knife4j-SpringBoot 2.7.2 实战基础
优雅哥 SpringBoot 2.7.2 实战基础 - 04 -集成 Spring Doc 接口文档和 knife4j 前面已经集成 MyBatis Plus.Druid 数据源,开发了 5 个接口. ...
- 处理化学SDF文件出现乱码的解决经验
近期,在VS2019中用WTL编写一个处理化学SDF文件的程序,遇到多处数据出现乱码的问题,典型一处情况如下:在原始SDF文件的一个字段中,有个形如下面的文字信息: https://product.p ...
- PyCharm 2022.2 发布了,支持最新 Python 3.11 和 PyScript 框架!
来源:Jet Brains官网:翻译:Python猫 原文:https://blog.jetbrains.com/pycharm/2022/07/2022-2 通常而言,使用新潮的或者快速发展的技术, ...
- Java学习--流程控制
Java学习 流程控制 用户交互Scanner Scanner对象 Java通过Scanner类获取用户的输入 基本语法: Scanner scanner = new Scanner(System.i ...
- python包合集-shutil
一.简介 shutil是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查看等方法,还提供了对文件以及目录的路径操作.shutil模块提供了移动 ...
- Golang基础教程
以下使用goland的IDE演示,包含总计的golang基础功能共20个章节 一.go语言结构: 二.go基础语法: 三.变量 四.常量 五.运算符 六.条件语句 七.循环 八.函数 九.变量作用域 ...
- JavaScript 基础知识(二):闭包
首先来思考一下下面的案例: function unclosure() { let count = 0 return count++ } for (let index = 0; index < 1 ...
- 演示RabbitMQ的交换类型
一.Direct exchange 新建一个名为direct_exchange的Direct exchange 添加队列direct_queue1 添加队列direct_queue2 direct_e ...
- 【读书笔记】C#高级编程 第二十一章 任务、线程和同步
(一)概述 所有需要等待的操作,例如,因为文件.数据库或网络访问都需要一定的时间,此时就可以启动一个新的线程,同时完成其他任务. 线程是程序中独立的指令流. (二)Paraller类 Paraller ...