一、实验要求:

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实训报告)的更多相关文章

  1. 2018 java实训总结(时间戳&&主键)

    java实训题目:源管理系统. 答辩的时候被老师怼了以下几个的地方: 1.主键改变了 2.没时间戳却说自己的程序里有先后(这就是老师迂腐了,主键自增可以间接反馈出他加入的早晚,即使主键做出了改变但只是 ...

  2. Java实训:实训一 ——长春职业技术学院 16级网络工程

    Java实训:实训一 本文会解释一些设计思路. 想看具体过程,请转:https://www.cnblogs.com/lxwlxw/p/10114187.html 笑维的码云项目命名不太对,所以我来:h ...

  3. Java JDBC数据库编程

    课程  Java面向对象程序设计 一.实验目的 掌握数据库编程技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境,Microsoft SQL  ...

  4. JDBC数据库编程:PreparedStatement接口

    使用PreparedStatement进行数据库的更新及查询操作. PreparedStatement PreparedStatement是statement子接口.属于预处理. 使用statemen ...

  5. Java高级篇(三)——JDBC数据库编程

    JDBC是连接数据库和Java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.本篇将介绍一下如何使用JDBC操作数据库(以MySQL为例). 一.JDBC JDBC制定了统一访问 ...

  6. Java ——JDBC数据库编程

    数据库分类 关系型数据库:以表来存放数据的,数据与数据之间的关系通过表之间的连接体现 面向对象的数据库:保存的是对象本身 其它 数据库:数据库管理系统中创建一个个的保存数据的单位 数据是保存在数据库的 ...

  7. JDBC数据库编程

    常识名词:ODBC ,JDBC,JDBC API ,JDBC Driver API  数据准备,续上节:   JDBC编程流程 最基本的JDBC操作 本段内容主要完成JDBC的增删查改操作 packa ...

  8. JDBC数据库编程常用接口(转)

    JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口(API),制定了统一的访问各种关系数据库的标准接口,为各个数据库厂商提供了标准接口的实现.这东西能够 ...

  9. JDBC数据库编程:callableStatement接口

    了解MySQL存储过程建立, 了解存储过程中参数传递的三种方式 了解callablestatement调用存储过程操作. 因为在现在开发中,使用存储过程的地方越来越少,所以,对于存储过程使用,只需要了 ...

随机推荐

  1. 飞书前端提到的竞态问题,在 Android 上怎么解决?

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  2. 服务器时间同步架构与实现chrony

    实验背景 模拟企业局域服务器时间同步,保障各服务器系统准确性和时间一致性. 时间服务器系统搭建 实验架构图 环境设备 设备IP规划 国内互联网NTP服务器 ntp.aliyun.com #阿里云NTP ...

  3. 一次客户需求引发的K8S网络探究

    前言 在本次案例中,我们的中台技术工程师遇到了来自客户提出的打破k8s产品功能限制的特殊需求,面对这个极具挑战的任务,攻城狮最终是否克服了重重困难,帮助客户完美实现了需求?且看本期K8S技术案例分享! ...

  4. Little Girl and Problem on Trees

    题意 给定一棵无边权的树,最多只有一个点度数超过2,有两种操作 1)(0 u x d)将距离u节点d距离之内的节点的值加上x 2)(1 u)询问u节点的值 n<=100000,q<=100 ...

  5. JWT漏洞学习

    JWT漏洞学习 什么是JWT? JWT是JSON Web Token的缩写,它是一串带有声明信息的字符串,由服务端使用加密算法对信息签名,以保证其完整性和不可伪造性.Token里可以包含所有必要的信息 ...

  6. 【Manim】关于add_updater的基本使用方法

    add_updater(update_function,index=None,call_update=False) 后面两个参数可以不写. update_function更新函数一般填入一个lambd ...

  7. 【读书笔记】C#高级编程 第六章 数组

    (一)同一类型和不同类型的多个对象 如果需要使用同一类型的多个对象,就可以使用数组或集合(后面章讲). 如果需要使用不同类型的多个对象,可以使用Tuple(元组)类型. (二)简单数组 如果需要使用同 ...

  8. [apue] 标准 I/O 库那些事儿

    前言 标准 IO 库自 1975 年诞生以来,至今接近 50 年了,令人惊讶的是,这期间只对它做了非常小的修改.除了耳熟能详的 printf/scanf,回过头来对它做个全方位的审视,看看到底优秀在哪 ...

  9. 关于Elasticsearch使用java的说明

    从Elastic 7.0开始,我们可以不安装JAVA.安装包包含一个相匹配的JAVA版本在里面. Elasticsearch包含来自JDK维护者(GPLv2 + CE)的捆绑版OpenJDK. 要使用 ...

  10. 20. 使用Fluentd发送告警邮件

    告警是预防系统故障的一个重要工具,目前已经有许多成熟的方案通过监控系统运行指标来进行阈值预警.今天简单了解一下如何使用Fluentd实现邮件告警功能. Fluentd的告警是基于日志分析实现的,通过监 ...