Java程序设计教程(第三版)课件 项目十三 使用JDBC实现超市进销存管理_第1页
Java程序设计教程(第三版)课件 项目十三 使用JDBC实现超市进销存管理_第2页
Java程序设计教程(第三版)课件 项目十三 使用JDBC实现超市进销存管理_第3页
Java程序设计教程(第三版)课件 项目十三 使用JDBC实现超市进销存管理_第4页
Java程序设计教程(第三版)课件 项目十三 使用JDBC实现超市进销存管理_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目十三使用JDBC实现超市进销存管理采用JDBC实现超市进销存系统,其功能包括商品的添加、删除、修改、查询等操作。【项目描述】

1.JDBC编程环境的搭建。2.采用Statement完成数据库的增删改查。3.采用PreparedStatement完成数据库的增删改查。【任务分解】

任务一JDBC编程环境的搭建【任务描述】

在进行数据库开发之前,需要获得不同数据库环境下的JDBC数据库连接。任务一集合类的选择

【必备知识】1.JDBC简介JDBC的全称是JavaDataBaseConnectivity(java数据库连接),它有两个含义。首先,对于使用Java编写数据库访问程序的程序员来说,JDBC是一组Java用于执行SQL语句的API,Java程序通过JDBCAPI操作到关系数据库,实现数据库数据的查询和更新。其次,对于各大数据库厂商来说,JDBC为数据库访问提供了一个统一的接口标准,不同的数据库厂商都实现这个统一的接口。2.JDBC驱动程序JDBC为数据库的厂商提供了一个统一的接口,是由各数据库厂商根据各自不同的底层数据库和中间件来设计接口的实现类,这些实现类就是JDBC驱动程序。常用的数据库以及其JDBC驱动包见表13-1。任务一集合类的选择

3.3.DriverManager类和Connection类DriverManager管理一组JDBC驱动程序的基本服务。所有Driver类都必须包含有一个静态部分。它创建该类的实例,然后在加载该实例时DriverManager类进行注册。加载Driver类,然后自动在DriverManager中注册的方式有两种:通过调用方法Class.forName。这将显式地加载驱动程序类。加载Driver类并在DriverManager类中注册后,它们即可用来与数据库建立连接。当调用DriverManager.getConnection方法发出连接请求时,DriverManager将检查每个驱动程序,查看它是否可以建立连接。任务一JDBC编程环境的搭建【解题思路】 程序员在使用JDBC编程的时候,只需要面向标准的JDBCAPI编程即可,通过在工程中引进不同的数据库驱动程序来使用不同的数据库。搭建数据库环境如下步骤:1、安装MYSQL数据库。2、设计超市进销存管理系统的数据库。3、测试使用JDBC连接数据库。4.常用的数据库介绍(1)MySQL(2)SQLServer(3)OracleDatabase(4)DB25.常用的SQL语句举例创建数据库:CREATEDATABASEdatabase-name删除数据库:dropdatabasedbname创建新表:createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)删除新表:droptabletabname增加一个列:Altertabletabnameaddcolumncoltype添加主键:Altertabletabnameaddprimarykey(col)删除主键:Altertabletabnamedropprimarykey(col)创建索引:create[unique]indexidxnameontabname(col….)删除索引:dropindexidxname创建视图:createviewviewnameasselectstatement删除视图:dropviewviewname

几个简单的表的数据操作的sql语句:选择:select*fromtable1where范围插入:insertintotable1(field1,field2)values(value1,value2)删除:deletefromtable1where范围更新:updatetable1setfield1=value1where范围查找:select*fromtable1wherefield1like’%value1%’排序:select*fromtable1orderbyfield1,field2[desc]总数:selectcountastotalcountfromtable1求和:selectsum(field1)assumvaluefromtable1平均:selectavg(field1)asavgvaluefromtable1最大:selectmax(field1)asmaxvaluefromtable1最小:selectmin(field1)asminvaluefromtable1

任务一JDBC编程环境的搭建【解题思路】 程序员在使用JDBC编程的时候,只需要面向标准的JDBCAPI编程即可,通过在工程中引进不同的数据库驱动程序来使用不同的数据库。搭建数据库环境如下步骤:1、安装MYSQL数据库。2、设计超市进销存管理系统的数据库。3、测试使用JDBC连接数据库。

【任务透析】

从网站上获取MySQL安装程序后,按安装向导步骤进行安装。(详见教材)。

进销存系统E-R图CREATETABLEIFNOTEXISTS`client`(`id`int(10)NOTNULLAUTO_INCREMENT,`code`varchar(50)DEFAULT'0',`name`varchar(50)DEFAULT'0',`address`varchar(50)DEFAULT'0',`telephone`varchar(50)DEFAULT'0',`email`varchar(50)DEFAULT'0',PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;创建客户表SQL语句:创建商品表SQL语句:CREATETABLEIFNOTEXISTS`goods`(`id`int(10)NOTNULLAUTO_INCREMENT,`code`varchar(50)DEFAULTNULL,`name`varchar(50)DEFAULTNULL,`jc`varchar(50)DEFAULTNULL,`cd`varchar(50)DEFAULTNULL,

`dw`varchar(50)DEFAULTNULL,`gg`varchar(50)DEFAULTNULL,`bz`varchar(50)DEFAULTNULL,`ph`varchar(50)DEFAULTNULL,`pzwh`varchar(50)DEFAULTNULL,`memo`varchar(50)DEFAULTNULL,

`dj`doubleDEFAULTNULL,`sl`int(11)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=8DEFAULTCHARSET=utf8;按照相似的语句创建其它表。接下来,我们可以使用JDBC对它进行连接了:packageedu.gdkm.sql;importjava.sql.*;publicclassDBConnection{ publicstaticConnectiongetConnection(){ Connectioncon=null; try{ Class.forName("com.mysql.jdbc.Driver"); System.out.println("成功加载mysql驱动程序"); }catch(ClassNotFoundExceptione){ System.out.println("无法找到mysql驱动程序,请检查jar包是否导入项目中!"); }StringdbURL=newString("jdbc:mysql://127.0.0.1:3306/gdkmjxc"); try{ con=DriverManager.getConnection(dbURL,"root","root"); System.out.println("数据库连接成功"); }catch(SQLExceptione){ System.out.println("数据库连接失败"); } returncon; }}packageedu.gdkm.ui;

importedu.gdkm.sql.DBConnection;

public

classTestMain{

public

static

voidmain(String[]args){ DBConnection.getConnection(); }}测试,数据库连接成功:任务一集合类的选择

【课堂提问】1.在一个已完成的信息管理系统中,如果需要采用其他厂商的数据库,需要改动程序业务逻辑吗?为什么?哪些是需要改动的地方?【现场演练】尝试连接msssql2005。任务二采用Statement完成数据库的增删改查

【任务描述】超市进销存系统中商品信息的管理。任务二采用List派生集合管理有序数据【必备知识】1.Statement类Statement对象用于将不带参数的简单SQL语句发送到数据库,该对象提供了3种执行SQL语句的方法:executeQuery,executeUpdate和execute,具体使用哪种方法由SQL语句所产生的内容决定。2.ResultSet结果集

ResultSet对象是执行Statement对象的方法后返回的一个对象,包括了符合SQL语句中条件的数据库所有行,可以通过一套get方法(getString()、getInt()等)对这些行的数据进行访问,通过next方法用于访问结果集中的各行。3.3.JDBC编程一般步骤(1)通过带参数调用Class.forName()方法,将DriverManager类实例化、加载驱动程序。(2)调用DriverManager.getConnection()方法取得一个Connection对象,以此连接到数据库。(3)通过Connection.createStatement()方法创建一个Statement对象,以此来访问数据库表中的记录。(4)通过Statement.executeQuery()方法或Statement.executeUpdate()方法来查询或更新数据库记录。(5)如果执行了一个查询,可以通过处理Statement.executeQuery()方法所返回的ResultSet对象,通过该对象可以进行数据库记录的浏览、新增、删除和修改。(6)完成数据库操作后,依次调用各个对象的Close()方法,关闭数据库连接,释放JDBC资源。任务二【解题思路】 超市进销存系统中商品信息的管理,其中包括商品信息列表查询,商品的添加、修改和删除,我们可以利用statement对象实现数据库的访问,将SQL语句传输到数据库,并得到对应的处理。处理步骤如下:1、定义一个业务接口GoodsService用于完成商品信息业务操作,并在里面定义查询、添加、修改、删除等方法。2、利用Statement对象结合SQL语句,在GoodsServiceImpl类中实现该接口定义的若干方法。3、将数据体现到窗口显示。【任务透析】参见程序代码。任务二采用List派生集合管理有序数据【课堂提问】★简述使用JDBC操作数据库的步骤。★使用Statement操作数据库时,可以使用哪些方法,这些方法分别针对数据库的哪些操作?★数据库注入攻击是一种很常见的黑客手段,那么使用JDBC操作数据库会不会出现这种安全隐患,有什么方法可以避免吗?【现场演练】

1.尝试完成供货商的信息管理功能。2.尝试完成员工的信息管理功能。任务三

采用PreparedStatement完成数据库的增删改查【任务描述】

使用PreparedStatement实现商品信息的管理。任务三采用PreparedStatement完成数据库的增删改查【必备知识】1.PreparedStatement简介PreparedStatement接口继承与Statement,但是两者有很大的不同之处:PreparedStatement对象在初始化时包含了已经编译好的需要执行的SQL语句,由于它的预编译特性,所以该对象执行的速度要快于Statement对象,适用于需要多次执行的SQL语句。【必备知识】2.常用派生类HashSet类HashSet是Set集合的典型实现,它按hash算法来存储集合中的元素。名称概述clearParameters()立即清除当前参数值executeQuery()执行SQL查询,返回结果集executeUpdate()执行SQL更新语句setString()将指定参数设置为字符串的值setDouble()将指定参数设置为双精度值setInt()将指定参数设置为整数值PreparedStatement对象的常用方法任务三采用PreparedStatement完成数据库的增删改查【解题思路】 因为需要实现的功能与任务二一致,我们只需要将任务二中使用Statement的部分使用对应的PreparedStatement替换即可。

public

booleansearch(Stringcondition,Stringvalues){ GoodInfoQueryUi.a=newObject[18][10]; PreparedStatementpstmt; ResultSetrs; Connectioncon=DBConnection.getConnection();

try{ StringinputStr=null,recode;

intn=0;

if(condition=="商品全称") inputStr="name=?";

if(condition=="商品编号") inputStr="code=?";

if(condition=="产地") inputStr="cd=?"; recode="SELECT*FROMgoodsWHERE"+inputStr; pstmt=con.prepareStatement(recode); pstmt.setString(1,values); rs=pstmt.executeQuery();

while(rs.next()){ GoodInfoQueryUi.a[n][0]=rs.getInt(1); GoodInfoQueryUi.a[n][1]=rs.getString(3); GoodInfoQueryUi.a[n][2]=rs.getString(2); GoodInfoQueryUi.a[n][3]=rs.getString(5); GoodInfoQueryUi.a[n][4]=rs.getString(6); GoodInfoQueryUi.a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论