Java JDBC教程:核心对象与入门案例

需积分: 9 0 下载量 6 浏览量 更新于2024-08-05 收藏 45KB MD 举报
"Java数据库连接(JDBC)是Java编程语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC是Java平台的标准,允许开发人员使用Java来连接和操作各种关系型数据库。在本教程中,我们将深入探讨JDBC的核心概念、工作原理以及一个简单的入门案例。" JDBC概述: JDBC,全称Java Database Connectivity,是Java开发工具包(JDK)的一部分,旨在为不同类型的数据库提供标准的接口,以便于Java应用程序能够方便地访问数据库。JDBC通过一套Java API接口,使得开发者能够编写数据库无关性的代码,这意味着相同的代码可以在不同的数据库上运行,只要相应的数据库驱动存在。 JDBC规范的核心对象: 1. DriverManager:它是JDBC中的核心管理类,负责注册数据库驱动,建立与数据库的连接。开发人员通常会调用`DriverManager.getConnection()`方法来获取数据库连接。 2. Connection:代表与数据库的连接。一旦有了Connection对象,就可以执行SQL语句和数据库交互。连接对象提供了多种方法来创建Statement或PreparedStatement对象,以执行SQL命令。 3. Statement:这是执行SQL语句的对象,如SELECT、INSERT、UPDATE和DELETE等。Statement对象用于执行静态SQL语句并返回结果。 4. ResultSet:当Statement对象执行SQL查询时,返回的结果被封装在ResultSet对象中,它就像一个虚拟的表格,包含了查询的结果。 JDBC原理: JDBC是一个接口,实际的数据库操作是通过数据库供应商提供的驱动(实现类)来完成的。数据库厂商提供符合JDBC规范的驱动程序,使得Java应用程序可以通过这些驱动与特定的数据库进行通信。在使用JDBC时,首先需要加载驱动,然后建立到数据库的连接,接着创建Statement或PreparedStatement对象来执行SQL,最后处理ResultSet结果并关闭所有资源。 JDBC入门案例: 在准备好的数据库中,通常需要创建表、插入数据、查询、更新和删除数据。例如,创建一个名为`tb_user`的用户表,包含uid(主键,自增长)、username(唯一,非空)、password(非空)和nickname字段。然后可以通过JDBC API进行如下操作: - 插入数据:使用`PreparedStatement`预编译SQL语句,防止SQL注入,提高效率。 - 查询数据:创建Statement对象,执行SQL查询,获取ResultSet结果集。 - 更新数据:通过设置参数,更新指定行的数据。 - 删除数据:执行删除操作,删除符合条件的记录。 - 关闭资源:在完成数据库操作后,必须关闭Connection、Statement和ResultSet,释放数据库资源。 JDBC为Java开发者提供了一种强大而灵活的方式来操作数据库,无论是简单的CRUD操作还是复杂的事务处理和存储过程调用。通过熟练掌握JDBC,开发人员可以构建健壮、高效的数据库应用。

保留原本功能优化以下代码import pandas as pd import numpy as np import matplotlib.pyplot as plt # 1.读取并查看数据 bike_day = pd.read_csv("C:/Users/15020/Desktop/26.bike_day.csv") print(bike_day.head(5)) # 前5行 print(bike_day.tail(2)) #后2行 #2.处理数据并导出到文件 bike_day_user = bike_day[['instant','dteday','yr', 'casual', 'registered']].dropna() bike_day_user.to_csv('bike_day_user.txt', sep=' ',index=False, header=False) #3.读取数据并添加新列并导出到新文件 bike_day_user = pd.read_csv('bike_day_user.txt', sep=' ', header=None, names=['instant','dteday','yr', 'casual',"registered"]) bike_day_user['cnt'] = bike_day_user['casual'] + bike_day_user['registered'] bike_day_user.to_excel('bike_day_user_cnt.xlsx', index=False) #4.读取数据并进行统计 bike_day_user_cnt = pd.read_excel('bike_day_user_cnt.xlsx') print('cnt最大值:',bike_day_user_cnt['cnt'].max()) print('ent最小值:',bike_day_user_cnt['cnt'].min()) print('2011号cnt年平均值:',bike_day_user_cnt[bike_day_user_cnt['yr'] == 0]['cnt'].mean()) print('2012年cnt年平均值:',bike_day_user_cnt[bike_day_user_cnt['yr'] == 1]['cnt'].mean()) print('2011年月严始值:', bike_day_user_cnt[bike_day_user_cnt['yr'] == 0].groupby('mnth')['cnt'].mean()) print('2022年月平均值:', bike_day_user_cnt[bike_day_user_cnt['yr'] == 1].groupby('mnth')['cnt'].mean()) # 5.可视化并保存图像 fig, ax = plt.subplots() ax.barh(bike_day_user_cnt['mnth'], bike_day_user_cnt[bike_day_user_cnt['yr'] == 0].groupby('mnth')['cnt'].mean(), color='blue', label='2011') ax.barh(bike_day_user_cnt['mnth'], bike_day_user_cnt[bike_day_user_cnt['yr'] == 1].groupby('mnth')['cnt'].mean(), color='lightblue', label='2012') ax.set_yticks(np.arange(1,13)) ax.set_yticklabels(['Jan','Feb','Mar', 'Apr', 'May','Jun','Jul','Aug', 'sep', 'Oct','Nov','Dec']) ax.set_xlabel('Average number of shared bike users') ax.set_title('Monthly Average Number of Shared Bike Users in 2011-2012') ax.legend() fig.savefig('bike_day_user_cnt.png', dpi=300)

2023-06-03 上传