本文共 7806 字,大约阅读时间需要 26 分钟。
三、项目案例:《自来水公司收费系统》
(一)项目介绍与需求分析XXX 市自来水公司为更好地对自来水收费进行规范化管理,决定委托传智播客.黑马程序员开发《自来水公司收费系统》。考虑到自来水业务数量庞大, 数据并发量高,决定数据库采用 ORACLE 数据库。主要功能包括:1.、基础信息管理:(1)业主类型设置(2)价格设置(3)区域设置(4)收费员设置(5)地址设置2、业主信息管理:(1)业主信息维护(2)业主信息查询3、收费管理:(1)抄表登记(2)收费登记(3)收费记录查询(4)欠费用户清单4、统计分析:(1)收费日报单(2)收费月报表.......(二)表结构设计(三)创建表空间
create tablespace waterboss datafile 'c:\waterboss.dbf' size 100mautoextend on next 10m
解释:
waterboss 为表空间名称datafile 用于设置物理文件名称size 用于设置表空间的初始大小autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容next 用于设置扩容的空间大小(四)创建用户create user wateruser identified by itcastdefault tablespace waterboss
wateruser 为创建的用户名
identified by 用于设置用户的密码default tablesapce 用于指定默认表空间名称(五)用户赋权grant dba to wateruser
给用户 wateruser 赋予 DBA 权限后即可登陆
四、表的创建、修改与删除(一)创建表语法:
CREATE TABLE 表名称(字段名 类型(长度) primary key,字段名 类型(长度),.......);
数据类型:
create table t_owners (id number primary key, name varchar2(30), addressid number, housenumber varchar2(30), watermeter varchar2(30), adddate date,ownertypeid number);
其它表的创建见资料“自来水收费系统建表语句.txt”
(二)修改表ALTER TABLE 表名称 ADD(列名 1 类型 [DEFAULT 默认值],列名 1 类型[DEFAULT 默认值]...)
为业主表增加两个字段,语句:
--追加字段ALTER TABLE T_OWNERS ADD (REMARK VARCHAR2(20), OUTDATE DATE)
2.修改字段语法:
ALTER TABLE 表名称 MODIFY(列名 1 类型 [DEFAULT 默认值],列名 1 类型[DEFAULT 默认值]...)
修改两个字段的类型,语句:
--修改字段ALTER TABLE T_OWNERS MODIFY (REMARK CHAR(20), OUTDATE TIMESTAMP)
ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名
语句:
ALTER TABLE T_OWNERS RENAME COLUMN OUTDATE TO EXITDATE
4.删除字段名
--删除一个字段ALTER TABLE 表名称 DROP COLUMN 列名--删除多个字段ALTER TABLE 表名称 DROP (列名 1,列名 2...)
语句:
--删除字段ALTER TABLE T_OWNERS DROP COLUMN REMARK
(三)删除表
语法:DROP TABLE 表名称
五、数据增删改(
一)插入数据语法:INSERT INTO 表名[(列名 1,列名 2,...)]VALUES(值 1,值 2,...)
执行 INSERT 后一定要再执行 commit 提交事务向业主表插入数据:
insert into T_OWNERS VALUES (2,'赵大侃',1,'2-3','9876',sysdate,1);[/size][/font][/align][font=微软雅黑][size=3]commit;
(二)修改数据
语法:UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....WHERE 修改条件;
执行 UPDATE 后一定要再执行 commit 提交事务
需求:将 ID 为 1 的业主的登记日期更改为三天前的日期update T_OWNERS set adddate=adddate-3 where id=1;[/size][/font][/align][font=微软雅黑][size=3]commit;
(三)删除数据
语法 1:DELETE FROM 表名 WHERE 删除条件;
执行 DELETE 后一定要再执行 commit 提交事务需求:删除业主 ID 为 2 的业主信息
delete from T_OWNERS where id=2; commit;
TRUNCATE TABLE 表名称
比较 truncat 与 delete 实现数据删除?
创建 java 工程 waterboss,建立 lib 文件夹,将 ojdbc.jar 拷贝到此文件夹,然后 add
build path
package cn.itcast.waterboss.dao;import java.sql.SQLException;/***基本数据访问类*@author Administrator**/public class BaseDao {//加载驱动static{try { Class.forName("oracle.jdbc.driver.OracleDriver");} catch (ClassNotFoundException e) { e.printStackTrace();}}/***获取数据库连接*@return*@throws SQLException*/public static java.sql.Connection getConnection() throwsSQLException{return java.sql.DriverManager.getConnection("jdbc:oracle:thin:@192.168.80.10:1521:orcl", "wateruser", "itcast");}/***关闭资源*@param rs*@param stmt*@param conn*/public static void closeAll(java.sql.ResultSet rs, java.sql.Statement stmt,java.sql.Connection conn){//关闭结果集if(rs!=null){ try {rs.close();} catch (SQLException e) { e.printStackTrace();}}//关闭执行对象if(stmt!=null){ try {stmt.close();} catch (SQLException e) { e.printStackTrace();}}//关闭执行对象if(conn!=null){ try {conn.close();} catch (SQLException e) { e.printStackTrace();}}}}
JDBC 驱动为:
oracle.jdbc.OracleDriver连接字符串( 瘦连接 ):jdbc:oracle:thin:@虚拟机的 IP:1521:orcl(三)业主增删改代码编写1.创建实体类package cn.itcast.waterboss.entity;[/size][/font][/align][font=微软雅黑][size=3]import java.util.Date;/***业主实体类*@author Administrator**/public class Owners {private Long id;//编号private String name;//业主名称private Long addressid;//地址编号private String housenumber;//门牌号private String watermeter;//水表编号private Date adddate;//登记日期private Long ownertypeid;//业主类型 IDpublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Long getAddressid() {return addressid;}public void setAddressid(Long addressid) {this.addressid = addressid;}public String getHousenumber() {return housenumber;}public void setHousenumber(String housenumber) {this.housenumber = housenumber;}public String getWatermeter() {return watermeter;}public void setWatermeter(String watermeter) {this.watermeter = watermeter;}public Date getAdddate() {return adddate;}public void setAdddate(Date adddate) {this.adddate = adddate;}public Long getOwnertypeid() {return ownertypeid;}public void setOwnertypeid(Long ownertypeid) {this.ownertypeid = ownertypeid;}
2.创建 Dao 类实现增删改
package cn.itcast.waterboss.dao;import java.sql.SQLException;import cn.itcast.waterboss.entity.Owners;/***业主数据访问类*@author Administrator**/public class OwnersDao {/***新增业主*@param owners*/public static void add(Owners owners){java.sql.Connection conn=null; java.sql.PreparedStatement stmt=null;try { conn=BaseDao.getConnection();stmt=conn.prepareStatement("insert into T_OWNERS values(?,?,?,?,?,?,?)");stmt.setLong(1, owners.getId()); stmt.setString(2, owners.getName()); stmt.setLong(3, owners.getAddressid()); stmt.setString(4, owners.getHousenumber()); stmt.setString(5, owners.getWatermeter()); stmt.setDate(6, newjava.sql.Date(owners.getAdddate().getTime())); stmt.setLong(7, owners.getOwnertypeid()); stmt.execute();} catch (SQLException e) {e.printStackTrace();}finally {BaseDao.closeAll(null, stmt, conn);}}/***修改业主*@param owners*/public static void update(Owners owners){java.sql.Connection conn=null; java.sql.PreparedStatement stmt=null;try { conn=BaseDao.getConnection();stmt=conn.prepareStatement("update T_OWNERS set name=?,addressid=?,housenumber=?,"+ "watermeter=?,adddate=?, ownertypeid=? whereid=?");stmt.setString(1, owners.getName()); stmt.setLong(2, owners.getAddressid()); stmt.setString(3, owners.getHousenumber()); stmt.setString(4, owners.getWatermeter()); stmt.setDate(5, newjava.sql.Date(owners.getAdddate().getTime())); stmt.setLong(6, owners.getOwnertypeid()); stmt.setLong(7, owners.getId()); stmt.execute();} catch (SQLException e) {e.printStackTrace();}finally {BaseDao.closeAll(null, stmt, conn);}}/***删除业主*@param owners*/public static void delete(Long id){java.sql.Connection conn=null; java.sql.PreparedStatement stmt=null;try { conn=BaseDao.getConnection();stmt=conn.prepareStatement("delete from T_OWNERS whereid=?");stmt.setLong(1, id); stmt.execute();} catch (SQLException e) {e.printStackTrace();}finally {BaseDao.closeAll(null, stmt, conn);}}}
七、数据导出与导入
当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于 计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影 响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库 中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库 该处理称为数据库恢复,而要进行数据库的恢复必须要有数据库的备份工作。(一)整库导出与导入整库导出命令exp system/itcast full=y
添加参数 full=y 就是整库导出
exp system/itcast file=文件名 full=y
imp system/itcast full=y
此命令如果不指定 file 参数,则默认用备份文件 EXPDAT.DMP 进行导入如果指定 file 参数,则按照 file 指定的备份文件进行恢复
imp system/itcast full=y file=water.dmp
(二)按用户导出与导入按用户导出
exp system/itcast owner=wateruser file=wateruser.dmp
按用户导入
imp system/itcast file=wateruser.dmp fromuser=wateruser
exp wateruser/itcast file=a.dmp tables=t_account,a_area
用 tables 参数指定需要导出的表,如果有多个表用逗号分割即可按表导入
imp wateruser/itcast file=a.dmp tables=t_account,a_area
转载于:https://blog.51cto.com/13587708/2122345