当前位置:文档之家› 数据库

数据库

数据库
数据库

要求:

使用ACCESS、SQL SERVER、ORACLE、MYSQL等作后台数据库,选择ASP、VB、VC、JAVA 等作为前台开发工具设计一个小型管理系统。所设计的小型管理系统应包含输入输出、查询、插入、删除等基本功能,功能越强大越好。根据题目的基本需求,设计数据库、编写程序,并写出详细的设计说明书。

每班以2人为一组自由分组,由班长将分组情况报到指导教师处;

需要提交的文档资料:设计说明书每人一份(包括:参考资料的阅读心得,功能需求说明,设计思路,数据表结构及作用,数据关系图,存储过程代码及相关注释,设计体会);电子文档:可运行的,能实现全部或者主要基本功能的小型系统。

课程设计说明书编写规范 :

a.需求分析:题目要求达到的功能,所提供的原始数据,需要输出的数据及样式等。

b.数据库设计:根据要求设计数据库的结构,包括:表、数据完整性、关系、视图。

c.开发方案选择:主要是前端开发平台的选择与方案的比较,至少比较两套方案。

d.安全性设计:登录用户、数据库用户、数据库角色、命令许可等方面。

e.前台应用程序设计:要求至少完成通过前台程序实现对后台数据库的数据查询、插入、删除与更新。涉及到数据的所有操作要求采用存储过程的方式进行。

f.附录或参考资料:参考资料来源,阅读心得。

参考资料阅读心得:

参考资料(老师提供):

2、教材信息数据库

高校的教材管理需要相应的数据库环境,请根据如下系统需求定义数据表结构及关系,并通过编写存储过程来实现其中的两项功能:

1)、教材出入库

(1)教材入库

将教材内部识别号、入库时间,入库数,适用对象等信息输入到教材入库记录表中,并更新在库教材信息表。教材入库后把教材征订单相应项目做教材收到标记。(暂不处理订单中某教材只入库其中一部分的情况,即缺货情况。)

(2)教材出库

教师或学生或班级或其它人员领用教材,需要把教材内部编号,教材代号,出库时间,出库数量,使用单位(指班级或教师,可多个班级或教师),用途,经办人等信息输入到教材出库记录表中。并同时更新教材信息表中的在库数量。为便于教材信息的录入,可通过班级名称、课程名称或教材名称查询到要出库的教材信息表中相应教材的内部编号。

(3)教材信息录入

将教材的内部识别号(由本系统自动维护),代号,书名,编著者,出版社,版次,定价,入库时间,入库数,适用对象等信息录入到系统的数据库中。

2)、教材查询

(1)在库教材查询

查询教材在库情况:

可按书名、代号等查询,可查询某班级使用的教材及在库数量,可查询某课程使用的教材及在库数量。可查询指定教材的在库数量,价值总额。

可查询教材在库的统计信息:在库教材总数、种类总数、价值总额。

(2)教材出库查询

教材出库信息查询:

按教材代号等信息查询教材出库情况,可查询某使用对象(包括班级、教师、部门、其他人员)的教材出库情况。可查询某时间范围内(学期、学年等)的教材出库情况。

(3)教材历史查询

查询指定书的在库及出入库的历史信息,也可按时间或时间范围查询教材入库情况。便于管理员掌握教材出入库情况。

3)、教材订购

(1)、生成教材订单

根据输入的各专业班级课程教材选用信息、教材出版社信息生成订单。

(2)、教材订单状态管理

订单状态管理:可标记各订单为有效(款项发出),图书入库后标记订单为到货,图书退回标记为退换货。

4)、教材订单查询

可查询指定学期教材订单的到货、缺货情况,查询订单未到教材的订货公司信息包括它的银行帐号、地址、联系人、联系方法等,以便与其联系。

5)、其他相关数据:学生相关、课程相关、教师相关、班级相关、系部相关

阅读心得:

我们的选题是仓库管理系统,和教材信息数据库大致相同,实现的功能略作添加;

我们需要完成的任务:

(1).这个实验本质就是设置合理的操作界面,实现对数据库的数据读取、修改、删除、更新等操作;

(2). 系统的完备性和操作的安全性,是完善软件的关键,其中包括:

插入相同信息;

数据库中物品数量不足;

管理员编号不存在;

安全登录;

不同角色的对数据库的操作权限;

等等问题,都是我们需要解决的基本问题;

(3)界面的美化和操作的快捷性和正确性;

界面是给客户的第一感触,尽量的新颖并且符合客户要求:

(这里我们是学习,争取掌握多一点处理界面的函数,没有系统的规划)

如果美化界面是尽量的完善,那么操作的快捷性和正确性是必须要实现的,给客户一个合理的操作是成功的必备条件;

(4)分工与合作

我们两个人都是java的初级学习者,不断的学习,分别设计不同的界面,相互交流实现效果的的经验;

关于数据库的知识和SQL语言的学习,都是我们要重新学习的;

(5)文档的处理和制作,也是我们要完成的重要任务,我们也是分工完成;概述

1.设计思路:

(1).仓库管理系统,实现功能:

入库登记:商品入库记录;

出库登记:库存商品出库;

在库商品查询:库存物品查询;

出库入库信息查询:按时间,操作管理员查询操作信息;

管理员信息管理:管理员的登记,查询,删除;

(2).附加实现功能:

登录界面 : 实现管理员员和客户的不同角色登录;

界面的转换 : 分别创建不同的窗口,并及时删除浏览过的窗口;

分角色设定使用权限:管理员和客户的使用权限不同;

(3).异常处理:

操作错误:信息输入错误等;

常规错误:仓库物品数量不足等;

2.运用技术:

(1)界面实现: java语言;

(2)数据路操作实现:使用Access2003,运用SQL语言进行操作;

实现及操作

根据分析,一共设计9个类,如下图,其中:

数据库操作类:

DBAccess :实现连接,查询修改等分步操作;

GetDBInfo :实现查询结果集的返回;

操作界面类:

Enter :登录界面

Select : 功能选择界面

InStoreHouse : 物品入库操作界面

OutStoreHouse : 物品出库操作界面

SearchGoods : 物品查询界面

OutIn : 出入库查询界面

ManagerInfo : 管理员信息管理界面

分步实现说明:

1.DBAccess类

public Statement getStatement(String dbPath) throws Exception:

返回连接数据库的状态;

public ResultSet executeQuery(Statement stmt,String query) throws Exception :

返回查询结果集;

public void executeUpdate(Statement stmt,String query) throws SQLException :

更新数据库;

public void close() throws SQLException :

关闭数据库的连接;

2.GetDBInfo类

private Vector> rows ; 记录查询返回元组

private Vector columnHeads ; 记录查询返回结果的标题

//获取表头VolumnHeads

public Vector getColumnHeads() ;

//获取表中内容

public Vector getRows() ;

// 更新数据库

public void executeUpdate(Statement stmt,String query) throws SQLException ;

3.Enter类

private JFrame frame ;

private JButton enterButton ;

private JButton resetButton;

用于标识登陆角色的单选按钮

private JRadioButton radioButton1 ;

private JRadioButton radioButton2 ;

private JTextField nameText ;

private JPasswordField passwordText ;

表示登录身份:public static boolean isManager = false ;

实现效果:

基本实现:

(1)图片载入:

JLabel label4 = new JLabel();

ImageIcon icon = new ImageIcon("E:\\study\\java\\workspace\\StoreHouse\\abc.jpg");

label4.setIcon(icon);

(2)单选按钮:

ButtonGroup group = new ButtonGroup();

radioButton1 = new JRadioButton("管理员",false);

radioButton2 = new JRadioButton("客户",true);

group.add(radioButton1) ;

group.add(radioButton2) ;

4.InStoreHouse类

基本成员变量:

private JFrame frame ;

输入信息的11个文本框: private JTextField text1 - 11;

private JTextField infoText ;

private JButton okButton ;

private JButton backButton ;

设置日期格式:private static final String YYYMMDDHHMMSS = "yyyy/MM/dd HH:mm:ss"; 基本函数:

//SQL语句生成

public String getSQL()

//自动生成插入时间

public String insertTime()

//自动生成入库ID

public String inHouseID()

//清除文本框

public void clear()

实现效果:

基本功能实现:

监听器的设定:

public void actionPerformed(ActionEvent e){

Object source = e.getSource() ;

if(source == okButton){

try{

DBAccess db=new DBAccess();

String

dbPath="E:\\study\\java\\workspace\\StoreHouse\\StoreHouse.mdb";

Statement stmt=db.getStatement(dbPath);

String query = getSQL();

db.executeUpdate(stmt,query) ;

query = insertSQL() ;

db.executeUpdate(stmt,query) ;

stmt.close();

db.close() ;

infoText.setText("存储成功");

clear() ;

}catch (Exception ex){

ex.printStackTrace() ;

}

}else if(source == backButton){

frame.dispose() ;

new Select() ;

}

}

5.OutStoreHouse类

基本成员变量:

private JFrame frame ;

private JButton okButton ;

private JButton backButton ;

private JTextField text1;

private JTextField text2;

private JTextField text3;

private JTextField text4;

private static final String YYYMMDDHHMMSS = "yyyy/MM/dd HH:mm:ss";

private Integer num ; //修改数据里中数量的临时变量

基本函数:同InStoreHouse雷同

实现效果:

基本功能实现:

处理物品编号不存在,以及数量不足的问题:

public void actionPerformed(ActionEvent e){

Object source = e.getSource() ;

if(source == okButton){

try{

DBAccess db=new DBAccess();

String

dbPath="E:\\study\\java\\workspace\\StoreHouse\\StoreHouse.mdb";

String query=getGoodsSQL();

Statement stmt=db.getStatement(dbPath);

ResultSet rs=db.executeQuery(stmt, query);

if(!(rs.next()))//判断数据库中是否有内容

{

JOptionPane.showMessageDialog(null, "输入货物编号不存在", "提示信息",https://www.doczj.com/doc/5812814993.html,RMATION_MESSAGE);

text3.setText("操作失败");

clear() ;

}else{

//判断仓库物品是否够

//这里实验了很多次为什么只有num = 放在这里才可以呢

if((num = Integer.valueOf(rs.getString(1)).intValue() - Integer.valueOf(text2.getText()).intValue()) < 0){

JOptionPane.showMessageDialog(null, "仓库货物不足", "提示信息",https://www.doczj.com/doc/5812814993.html,RMATION_MESSAGE);

clear() ;

text3.setText("操作失败");

}else{

query = getSendOutSQL() ;

db.executeUpdate(stmt, query) ;

query = updateGoodsSQL(num) ;

db.executeUpdate(stmt, query) ;

text3.setText("操作成功");

}

}

stmt.close() ;

db.close() ;

}catch (Exception ex){

ex.printStackTrace() ;

}

}else if(source == backButton){

frame.dispose() ;

new Select() ;

}

}

解析:

这里应用到数据类型的转变,String 到int double的转化;

还可以应用其他方法:

如: rs.getInt(3); 直接读取数据库中的 int类型;

rs.getDouble(4) :直接读取double类型

6.SearchGoods类

基本成员函数:

private JFrame frame ;

private JScrollPane jsp ;

private JComboBox nameList ;

private JComboBox typeList ;

private JComboBox productList ;

private JTextField countText ;

private JTextField valueText ;

private JButton okButton ;

private JTable table ;

private DefaultTableModel model ;

private JButton backButton ;

private Vector rows; //表行值

private Vector columnHeads;// 表列名

//查询使用:String str1,str2,str3 ;

基本函数实现相同;

实现效果:

7. OutIn类

基本函数变量:

private JFrame frame ;

private JRadioButton inButton ;

private JRadioButton outButton;

private JButton okButton ;

private JButton backButton ;

private JComboBox combox1 ;

private JComboBox combox2 ;

private JTable table ;

private Vector rows; //表行值

private Vector columnHeads;// 表列名

private DefaultTableModel model ;

private JScrollPane jsp ;

private String str1 = null ,str2 = null ; //查询使用

private boolean flag = false ;

private int tmp = 0 ;

private static final String YYYMMDDHHMMSS = "yyyy/MM/dd"; 实现效果:

基本实现:

时间字符创的分割处理;

8.Select类

基本成员变量

private JButton button1 ;

private JButton button2 ;

private JButton button3 ;

private JButton button4;

private JButton button5 ;

private JButton button6 ;

private JTextField Text ;

private JFrame frame ;

实现效果:

基本实现:

界面效果实现:

infoLabel.setHorizontalAlignment(SwingConstants.CENTER);

infoLabel.setBackground(Color.gray) ;

Text.setBackground(Color.gray) ;

Text.setForeground(Color.cyan) ;

Text.setFont(new Font("宋体",Font.HANGING_BASELINE,20));

9.ManagerInfo 类

基本函数:

private JFrame frame ;

private JTabbedPane tabbedPane ;

private JLabel label1 ;

private JLabel label2 ;

private JLabel label3 ;

private JPanel panel1 ;

private JPanel panel2 ;

private JPanel panel3 ;

private JComboBox ageBox ;

private JComboBox workAgeBox ;

private JComboBox postionBox ;

private JTextField text21 ;

private JTextField text22 ;

private JTextField text23 ;

private JTextField text24 ;

private JTextField text25 ;

private JTextField text26 ;

private JTextField text27 ;

private JTextField text28 ;

private JTextField text31 ;

private JTextField text32 ;

private JButton button11 ;

private JButton button12 ;

private JButton button21 ;

private JButton button31 ;

private JButton backButton ;

private JTable table ;

private Vector rows; //表行值

private Vector columnHeads;// 表列名

private DefaultTableModel model ;

private JScrollPane jsp ;

private String str1= null,str2 = null ,str3 = null ; //查询使用

基本功能函数:

这里的函数处理和上面的相同,只是在布局上采用了JtablePanle面板,将三个功能加在同一个窗口里;

实现效果:

处理问题:

要删除的管理员信息不存在:

if(source == button31){

boolean deleteState = false ;

try{

DBAccess db=new DBAccess();

String

dbPath="E:\\study\\java\\workspace\\StoreHouse\\StoreHouse.mdb";

String query = "select * from Manager where 编号= " + "'" + text31.getText() + "'";

Statement stmt=db.getStatement(dbPath);

ResultSet rs=db.executeQuery(stmt, query);

while(rs.next()){

if(rs.getString(1).equals(text31.getText())){

query = "delete from Manager where 编号= " + "'" + text31.getText() + "'";

db.executeUpdate(stmt,query) ;

text31.setText("");

text32.setText("删除成功");

deleteState = true ;

}

}

stmt.close();

db.close() ;

}catch (Exception ex){

ex.printStackTrace() ;

}

if(deleteState == false) {

text32.setText("输入编号不存在");

text31.setText("");

}

解析:

在删除之前,对数据库进行检查,判断管理员编号是否存在;

存在问题和需要完善的问题

附录:代码实现

DBAccess.Java文件

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DBAccess {

public Connection conn=null;

// 连接未加密的数据库

public Statement getStatement(String dbPath) throws Exception{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String dburl = "jdbc:odbc:driver= {Microsoft Access Driver (*.mdb)};" + "DBQ="+dbPath;// 此为NO-DSN方式

// String dburl ="jdbc:odbc:odbcName";//此为ODBC连接方式

conn = DriverManager.getConnection(dburl);

return conn.createStatement();

}

//连接加密的数据库

public Statement getStatement(String dbPath,String password) throws Exception{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String dburl ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};" + "pwd="+password+";DBQ="+dbPath;// 此为NO-DSN方式

// String dburl ="jdbc:odbc:odbcName";//此为ODBC连接方式

conn = DriverManager.getConnection(dburl);

return conn.createStatement();

}

/*

查询数据库

*/

public ResultSet executeQuery(Statement stmt,String query) throws Exception{ ResultSet rs=stmt.executeQuery(query);

return rs;

}

/*

* 更新数据库

*/

public void executeUpdate(Statement stmt,String query) throws SQLException{ stmt.executeUpdate(query);

}

/**

* 关闭链接

*/

public void close() throws SQLException{

if(conn!=null)

conn.close();

}

public static void main(String args[]) throws Exception {

DBAccess db=new DBAccess();

String dbPath="E:\\study\\java\\workspace\\StoreHouse\\StoreHouse.mdb"; String query="select * from Manager";

Statement stmt=db.getStatement(dbPath);

ResultSet rs=db.executeQuery(stmt, query);

while(rs.next()){

System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3) + "\t" + rs.getString(4) + "\t"

+ rs.getString(5) + rs.getString(6) + rs.getString(7));

}

}

}

Enter.java文件

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

import java.sql.ResultSet;

import java.sql.Statement;

public class Enter implements ActionListener{

private JFrame frame ;

private JButton enterButton ;

private JButton resetButton;

private JRadioButton radioButton1 ;

private JRadioButton radioButton2 ;

private JTextField nameText ;

private JPasswordField passwordText ;

public static boolean isManager = false ;

public Enter(){

frame = new JFrame("仓库管理系统登录界面");

enterButton = new JButton("登录");

resetButton = new JButton("重置");

JLabel label1 = new JLabel("用户名 :");

JLabel label2 = new JLabel("密码 :");

JLabel label3 = new JLabel("登录方式 :");

JLabel label4 = new JLabel();

JLabel label5 = new JLabel();

JLabel label6 = new JLabel();

JLabel label7 = new JLabel();

ImageIcon icon = new ImageIcon("E:\\study\\java\\workspace\\StoreHouse\\abc.jpg");

label4.setIcon(icon);

label5.setText("华润品牌");

label7.setText("追求卓越");

label6.setText("中心软件,让您选择无悔的软件,感谢支持晓伟O(∩_∩)O~制作");

nameText = new JTextField();

passwordText = new JPasswordField();

//单选按钮

ButtonGroup group = new ButtonGroup();

radioButton1 = new JRadioButton("管理员",false);

radioButton2 = new JRadioButton("客户",true);

group.add(radioButton1) ;

group.add(radioButton2) ;

/*

* 字体等格式设置

*/

label1.setHorizontalAlignment(SwingConstants.CENTER);

label2.setHorizontalAlignment(SwingConstants.CENTER);

label3.setHorizontalAlignment(SwingConstants.CENTER);

label5.setHorizontalAlignment(SwingConstants.CENTER) ;

label6.setHorizontalAlignment(SwingConstants.CENTER) ;

label1.setFont(new Font("宋体",Font.HANGING_BASELINE,30));

label2.setFont(new Font("宋体",Font.HANGING_BASELINE,30));

label5.setFont(new Font("华文行楷",Font.HANGING_BASELINE,40));

label7.setFont(new Font("华文行楷",Font.HANGING_BASELINE,40));

label5.setForeground(Color.red);

label7.setForeground(Color.red);

/*

* 局部布局

*/

label4.setBounds(0,0,800,90);

label5.setBounds(0,100,200,100);

label7.setBounds(0,200,200,100);

label6.setBounds(0,300,800,100) ;

label1.setBounds(220,110,150,60);

label2.setBounds(220,180,150,60);

nameText.setBounds(400,120,200,40);

passwordText.setBounds(400,190,200,40);

label3.setBounds(200,250,150,40);

radioButton1.setBounds(350,250,100,40);

radioButton2.setBounds(350,300,100,40);

enterButton.setBounds(460,270,150,40);

resetButton.setBounds(620,270,150,40) ;

/*

* 增加监听器

*/

enterButton.addActionListener(this);

resetButton.addActionListener(this);

/*

* 整体布局

*/

Container ctn = frame.getContentPane();

ctn.setLayout(null);

ctn.add(label1) ;

ctn.add(label2) ;

ctn.add(nameText) ;

ctn.add(passwordText) ;

ctn.add(label3) ;

ctn.add(label4);

ctn.add(label5);

ctn.add(label6);

ctn.add(label7);

ctn.add(radioButton1);

ctn.add(radioButton2) ;

ctn.add(enterButton) ;

ctn.add(resetButton) ;

frame.setVisible(true);

frame.setBounds(400,200,800,400);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }

public void actionPerformed(ActionEvent e){

boolean tmp = false ;

Object source = e.getSource();

if(source == enterButton){

try{

DBAccess db=new DBAccess();

String

dbPath="E:\\study\\java\\workspace\\StoreHouse\\StoreHouse.mdb";

String query="select * from Host";

Statement stmt=db.getStatement(dbPath);

ResultSet rs=db.executeQuery(stmt, query);

while(rs.next()){

if(nameText.getText().equals(rs.getString(1)) && passwordText.getText().equals(rs.getString(2))){

tmp = true ;

Select select = new Select();

this.dispose() ;

break ;

}

}

stmt.close() ;

db.close() ;

}catch (Exception ex){

ex.printStackTrace() ;

}

if(tmp == false ) {

JOptionPane.showMessageDialog(null, "输入密码或用户名错误", "登录信息",https://www.doczj.com/doc/5812814993.html,RMATION_MESSAGE);

nameText.setText("");

passwordText.setText("") ;

}

}else if(source == resetButton){

nameText.setText("");

passwordText.setText("") ;

}else if(source == radioButton1){

isManager = true ;

}else if(source == radioButton2){

isManager = false ;

}

}

public void dispose(){

this.frame.dispose();

}

public static boolean isManager(){

return isManager ;

}

public static void main(String args[]){

Enter test = new Enter();

}

}

GetDBInfo.java 文件

import java.sql.*;

import java.util.Vector;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.JOptionPane;

public class GetDBInfo {

private Vector> rows ;

private Vector columnHeads ;

//构造函数

public GetDBInfo(String DBInfo,String selStr){

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String dburl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};" + "DBQ="+DBInfo;// 此为NO-DSN方式

Connection conn = DriverManager.getConnection(dburl);

Statement state = conn.createStatement();

ResultSet rs=state.executeQuery(selStr);

if(!(rs.next()))//判断数据库中是否有内容

{

JOptionPane.showMessageDialog(null, "结果集中无记录", "无记录",https://www.doczj.com/doc/5812814993.html,RMATION_MESSAGE);

}

ResultSetMetaData rsmd=rs.getMetaData();//获得结果集列属性值

rows = new Vector();

columnHeads = new Vector();

for(int i=1;i<=rsmd.getColumnCount();i++){

columnHeads.addElement(rsmd.getColumnName(i));//添加列名

}

do{

rows.addElement(getNextRow(rs,rsmd));//添加表行值

}while(rs.next());

rs.close();

state.close();

} catch(Exception e){

e.printStackTrace() ;

}

}

//获取表头VolumnHeads

public Vector getColumnHeads(){

return columnHeads ;

}

//获取表中内容

public Vector getRows(){

return rows ;

}

//取得表行的值方法

private Vector getNextRow(ResultSet rs,ResultSetMetaData rsmd) throws SQLException{

Vector currentRow=new Vector();

for(int i=1;i<=rsmd.getColumnCount();i++){

currentRow.addElement(rs.getString(i));

}

return currentRow;

}

// 更新数据库

public void executeUpdate(Statement stmt,String query) throws SQLException{ stmt.executeUpdate(query);

}

public static void main(String args[]){

GetDBInfo test = new GetDBInfo("E:\\study\\java\\workspace\\StoreHouse\\StoreHouse.mdb","select * from PutIn");

System.out.println(test.getRows()) ;

System.out.println(test.getColumnHeads()) ;

}

}

InStoreHouse.java文件

import java.awt.event.*;

import java.awt.*;

import java.sql.Statement;

import java.text.SimpleDateFormat ;

import java.util.Date ;

import javax.swing.*;

public class InStoreHouse implements ActionListener {

private JFrame frame ;

private JTextField text1 ;

private JTextField text2 ;

private JTextField text3 ;

private JTextField text4 ;

private JTextField text5 ;

private JTextField text6 ;

private JTextField text7 ;

private JTextField text8 ;

private JTextField text9 ;

private JTextField text10 ;

private JTextField text11 ;

private JTextField infoText ;

private JButton okButton ;

private JButton backButton ;

private static final String YYYMMDDHHMMSS = "yyyy/MM/dd HH:mm:ss";

public InStoreHouse(){

frame = new JFrame("商品入库登记");

text1 = new JTextField();

text2 = new JTextField();

text3 = new JTextField();

text4 = new JTextField();

text5 = new JTextField();

text6 = new JTextField();

text7 = new JTextField();

text8 = new JTextField();

text9 = new JTextField();

text10 = new JTextField();

text11 = new JTextField();

infoText = new JTextField();

okButton = new JButton("确定");

backButton = new JButton("返回主菜单");

JLabel infoLabel = new JLabel("填写信息: ");

JLabel label1 = new JLabel("编号");

JLabel label2 = new JLabel("名称");

JLabel label3 = new JLabel("数量");

JLabel label4 = new JLabel("价格");

JLabel label5 = new JLabel("规格");

JLabel label6 = new JLabel("体积");

JLabel label7 = new JLabel("重量");

JLabel label8 = new JLabel("颜色");

JLabel label9 = new JLabel("产地");

JLabel label10 = new JLabel("种类");

JLabel label11 = new JLabel("管理员编号");

//颜色格式设置

infoLabel.setFont(new Font("仿宋",Font.CENTER_BASELINE,20)); label1.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); label1.setHorizontalAlignment(SwingConstants.CENTER) ;

text1.setBackground(Color.lightGray);

label2.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); label2.setHorizontalAlignment(SwingConstants.CENTER) ;

text2.setBackground(Color.lightGray);

label3.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); label3.setHorizontalAlignment(SwingConstants.CENTER) ;

text3.setBackground(Color.lightGray);

label4.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); label4.setHorizontalAlignment(SwingConstants.CENTER) ;

text4.setBackground(Color.lightGray);

label5.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); label5.setHorizontalAlignment(SwingConstants.CENTER) ;

text5.setBackground(Color.lightGray);

label6.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); label6.setHorizontalAlignment(SwingConstants.CENTER) ;

text6.setBackground(Color.lightGray);

label7.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); label7.setHorizontalAlignment(SwingConstants.CENTER) ;

text7.setBackground(Color.lightGray);

label8.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); label8.setHorizontalAlignment(SwingConstants.CENTER) ;

text8.setBackground(Color.lightGray);

label9.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); label9.setHorizontalAlignment(SwingConstants.CENTER) ;

text9.setBackground(Color.lightGray);

label10.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); text10.setBackground(Color.lightGray);

label11.setFont(new Font("仿宋",Font.CENTER_BASELINE,15)); text11.setBackground(Color.lightGray);

//

infoLabel.setBounds(10,10,120,30);

label1.setBounds(40,40,80,30);

text1.setBounds(140,40,140,30) ;

label2.setBounds(360,40,80,30);

text2.setBounds(460,40,140,30) ;

label3.setBounds(40,100,80,30);

text3.setBounds(140,100,140,30) ;

label4.setBounds(360,100,80,30);

text4.setBounds(460,100,140,30) ;

label5.setBounds(40,160,80,30);

text5.setBounds(140,160,140,30) ;

label6.setBounds(360,160,80,30);

text6.setBounds(460,160,140,30) ;

label7.setBounds(40,220,80,30);

text7.setBounds(140,220,140,30) ;

label8.setBounds(360,220,80,30);

text8.setBounds(460,220,140,30) ;

label9.setBounds(40,280,80,30);

text9.setBounds(140,280,140,30) ;

label10.setBounds(650,40,80,30);

text10.setBounds(650,100,140,30) ;

label11.setBounds(650,160,80,30);

text11.setBounds(650,220,140,30) ;

infoText.setBounds(360,280,360,30); okButton.setBounds(360,320,150,30) ; backButton.setBounds(570,320,150,30) ;

okButton.addActionListener(this) ; backButton.addActionListener(this) ;

//整体布局

Container ctn = frame.getContentPane() ; ctn.setLayout(null);

ctn.add(infoLabel) ;

ctn.add(label1) ;

ctn.add(text1) ;

ctn.add(label2) ;

ctn.add(text2) ;

ctn.add(label3) ;

数据库上机答案

数据库上机1 1、新建工厂数据库factory。 create database factory on( name=factory_data, filename='d:\factory.mdf') log on(name=factory_log, filename='d:\factory.ldf') 2、数据库factory包括职工表worker、部门表depart和职工工资表salary。用SQL语句建立这三个表并输入数据,其表结构及用例数据分别如下: 职工表结构为: 职工号:int; 姓名:char(8) ; 性别:char(2) ; 出生日期:datetime; 党员否:char(2) ; 参加工作:datetime; 部门号:int; 其中职工号为主码。 部门表结构为:

部门号:int; 部门名:char(10); 其中部门号为主码。 职工工资表结构为: 职工号:int; 日期:datetime; 工资:decimal(6,1) ; 其中职工号和日期为主码。

create table worker ( 职工号int primary key, 姓名char(8) , 性别char(2), 出生日期datetime, 党员否char(2), 参加工作datetime, 部门号int ) create table depart ( 部门号int primary key, 部门名char(10)

) create table salary ( 职工号int, 日期datetime, 工资decimal(6,1), Primary key(职工号,日期) ) 3. 显示部门的详细信息。 select * from depart 4.查询3号职工的工资单。 select * from salary where职工号=3 5.显示所有职工的姓名及年龄,并按姓名升序显示。 select 姓名, 2015-year(出生日期) '年龄' from worker order by姓名6. 求出各部门的部门号及党员人数。 select 部门号,count(党员否) '党员人数' from worker where 党员否='是' group by 部门号 7. 在worker表的“姓名”列创建唯一索引nameindex。 create unique index nameindex on worker (姓名) 数据库上机2 1. 查询12月份过生日的名单。 答:select 姓名from worker where month(出生日期)= 12 2. 查询所有姓刘的职工信息。 select * from worker where 姓名like ‘刘%’ 3. 显示所有职工的职工号和2011年2月份的工资数。 select 职工号,工资from salary where year(日期)=2011 and month(日期)=2 4. 查询1号部门所有职工的姓名和工资,并按工资降序排列。

能耗监测平台系统-数据库结构

能耗监测平台系统数据库结构

目录 一、数据库表 .......................................................................................................................... - 3 - 数据库名称:Energymonitor ...................................................................................................... - 3 - 1. 行政区划表(XingZhengQH)......................................................................................... - 3 - 2. 建筑类别表(JianZhuLB) .............................................................................................. - 3 - 3. 能耗单位信息表(NengHaoDW).................................................................................. - 3 - 4. 能耗分类信息表(NengHaoFL) .................................................................................... - 3 - 5. 能耗分项信息表(NengHaoFX).................................................................................... - 4 - 6. 能耗标准煤换算信息表(NengHaoBZMHS) ................................................................ - 4 - 二、值列表 .............................................................................................................................. - 4 -

动态监测数据库开发与应用

摘要:吐哈油田油资料每年产生大量的测试数据,历史资料非常丰富,这些资料没有得到充分有效的利用。建立油藏动态监测数据库,对油藏动态监测资料进行统一管理和实时共享,以扩大在油田开发中的深化应用,并提高测试数据的利用率和解释评价质量。 关键词:油藏动态监测数据库 一、项目背景 吐哈油田油藏动态监测资料每年产生大量的测试数据,历史资料非常丰富,这些资料没有得到充分有效的利用。建设动态监测数据库综合应用系统,对历史资料进行资源整合,以扩大在油田开发中的深化应用,有效提高测试数据的利用率和解释评价质量。 二、技术路线 系统实现了以下功能: 1、搭建了油藏动态监测数据的录入、查询、维护及综合分析的应用平台。 2、实现了油藏动态监测数据库的统计与查询。 3、实现了区块井点分布图、区块开采现状图、动用状况统计分析图、历史资料对比等的综合查询与应用。 三、系统功能 动态监测综合应用平台实现了对油藏动态监测数据库中数据的综合应用,在对地质数据和测试数据灵活应用的基础上实现了地理信息导航模块,在对测试数据分类综合应用的基础之上实现了监测项目查询模块,在对单井信息综合应用方面实现了单井智能搜索引擎,在对区块、井组、单井信息综合应用方面实现了基于动态数据、静态数据的综合应用模块。 1、系统导航功能 在动态监测综合应用平台的建设过程中,在对地质数据灵活应用的基础上,结合动态监测数据,完成了可视化的信息导航功能,实现了基于单井、多井测试信息的综合应用导航;基于油田―采油厂―区块―井组―单井的地理信息导航;以目录树的方式实现的系统功能导航。 2、监测项目查询 监测项目查询功能模块实现了单井智能搜索引擎,基于试井、测井的综合信息发布,化验分析数据的综合发布以及基于生产测井注、产剖面的动用状况统计分析模块。 2.1 试井信息发布 在整个试井综合信息发布模块中,首先完成了试井综合信息的通用查询功能,用户通过指定井号、测试时间段、采油厂、区块、测试项目、测试工艺、测试方式等项目的组合,来实现用户指定条件的试井综合信息的查询、统计、报表生成。 2.2 测井综合信息发布 在测井综合信息发布中,实现了生产测井、工程测井、饱和度测井、井间监测信息的综合发布。 2.3、单井综合探索引擎 单井综合探索引擎是单井最广泛的应用,该引擎实现了对单井所包含的各类信息的综合引擎,实现了基于单井信息的综合应用分析,帮助用户进行基于单井的辅助决策。 2.4、区块信息综合应用 在区块信息综合应用中,系统完成了区块井点参数分布图、区块开采现状图、井组注、产剖面综合对比图以及井组试井模型诊断图综合对比、井组试井解释成果图综合对比、单井注、产剖面历次对比分析图、单井模型诊断图历次对比分析图、单井解释成果图历次对比分析。 3、数据录入

数据库上机习题及答案

数据库及应用复习题 一、设计题 有一个[学生课程]数据库,数据库中包括三个表: 学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为: Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。 课程表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。 成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为:SG(Sno,Cno,Grade) (SNO, CNO)为关键字。 用SQL语言实现下列功能: 1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。 2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。 3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。4.查询学习1号课程的学生最高分数、平均成绩。 5.查询与“李洋”在同一个系学习的学生。 6.将计算机系全体学生的成绩置零。 7.删除学号为05019的学生记录。 8.删除计算机系所有学生的成绩记录。 1. CREATETABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(2), Sage INT, Sdept CHAR(15)) 2. ALTER TABLE Student ADD Scome DATETIME 3. SELECT Sno, Grade FROM SG WHERE Cno='3' ORDER BY Grade DESC 4. SELECT MAX(Grade), AVG(Grade) FROM SC WHERE Cno='1' 5. SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN

污染源在线监控站点基础数据库系统

佛山市水质自动监测系统软件开发项目 项目名称 佛山市水质自动监测系统软件开发项目 二、项目范围 软件开发和数据对接 、项目建设背景 为加强对江河水质的监控并及时掌握水质情况,2006 年建设了水环境质量自动监测网络,其中,全市已建成7个水质自动监测站,拟建3 个,监测项目达14 项,水环境质量自动监测网能实时对全市主要江河水源地和跨界断面水质进行监控。水站建成后由于分布地方不同,收集各站点的信息比较麻烦,环境管理人员不能及时掌握各水站的水质监测情况,因此急需建设一套水质自动监测系统,把各水站监测的各主要江河水质数据在系统上表现出来。 同时,2004 年我局建设了污染源在线监控系统,该系 统实时监控我市重点污染源排污状况,包括废水重点污染源和省控制废气重点污染源企业。为进一步扩展系统将地表水自动监测站监测数据纳入系统监控,要求在此平台基础上开发水质自动监测系统,把各水站监测的各主要江河水质数据在环境信息管理平台上表现出来,为环境管理和环境决策提供有效信息。

四、各水站点运行及建设概况 1、水站建设现状 截至2008 年4 月,佛山市境内已建成水质自动监测子 站共7 个,包括位于禅城区沙口站,顺德区陈村潭村站、伦教羊额站、龙江杨滘站、均安七滘站、容桂穗香围站,以及省环保局投资建设的位于三水区青岐站。拟建水质自动监测站共3 个,包括即将建成的位于南海区小塘站、计划年内兴建的位于高明区富湾站和位于三水区大塘站。 2、监测项目 目前沙口水质自动监测站监测项目包括水温、pH 值、 溶解氧、电导率、浊度、高锰酸盐指数、氨氮、总磷、总有机碳等9 项。年内新增包括硬度、酚、氰化物、总砷、镉、六价铬、镍等7 项 监测项目。 位于顺德区5 个水质自动监测站监测项目相同,包括 pH 值、溶解氧、电导率、浊度、高锰酸盐指数、硬度、酚、 氟化物、硝酸盐氮、氨氮、总磷、氰化物及总砷等14 项。 三水区青岐站监测项目包括水温、pH 值、溶解氧、电 氰化物 等10 项。 在建南海区小塘站监测项目包括水温、pH 值、溶解氧、

就业监测基础数据库表-中华人民共和国人力资源和社会保障部

就业监测基础数据库(表)结构及代码 (2016版) 一、主要名词解释 1.指标编码:指数据指标在数据库(表)中的字段名,遵循《人力资源社会保障管理信息系统信息结构通则(试行)》有关规定编制。 2.指标类型:指数据指标在数据库(表)中计算机处理类型。类型用字母表示,其中:N为数值型,C为可变字符型。 3.指标长度:指数据指标在数据库(表)中的长度。数值型指标的长度以“m,n”或“m”的形式定义,其中n 表示小数位数,m减n为整数部分位数。 4.代码标识:“Y”表示该指标的取值为一组代码,要与代码表一起使用。 二、库(表)名称和代码 1.劳动者基本信息表(DY11) 包括劳动者的基本信息、学历信息、职业资格信息、专业技术职务信息和户籍住址信息。劳动者指已在公共就业人才服务机构接受管理与服务的劳动者。(共计24个指标)

2. 就业创业证管理信息表(DY12) 包括劳动者的基本信息、就业创业证信息、证件注销信息。(共计10个指标) 3. 就业登记信息表(DY13) 包括劳动者的基本信息、就业登记信息、终止就业登记信息。(共计13个指标) 4. 失业登记信息表(DY14) 包括劳动者的基本信息、失业登记信息、注销失业登记信息。(共计12个指标) 5.就业援助对象信息表(DY16) 包括劳动者的基本信息、就业援助对象认定情况信息。(共计11个指标) 6.就业政策享受情况表(DY17) 包括劳动者的基本信息、享受就业政策情况信息。(共计18个指标) 7. 用人单位基本信息表(DY31) 包括用人单位的基本信息。(共计13个指标) 8. 高校毕业生个人基本情况表(DY41) 包括高校毕业生的基本信息、实名登记信息和就业推荐服务信息。(共计23个指标) 9. 高校毕业生接受就业服务情况表(DY42) 包括高校毕业生的基本信息、接受就业服务情况信息。

全国计算机二级数据库机试题5

在考生文件夹下,存在两个数据库文件和一个照片文件,数据库文件名分别为"samp1.mdb"和"dResearch.mdb",照片文件名为"照片.bmp"。请按以下操作要求,完成表的建立和修改: (1)将考生文件夹下"dResearch.mdb"数据库中的"tEmployee"表导入到samp1.mdb数据库中。 (2)创建一个名为"tBranch"的新表,其结构如下: (3) (4)设置新表"tBranch"中的"房间号"字段的"有效性规则",保证输入的数字在100到900之间(不包括100和900)。 (6)在"tEmployee"表中增加一个新字段,字段名为"照片",类型为"OLE对象"。设置"李丽"记录的"照片"字段数据为考生文件夹下的"照片.BMP"图像文件。 考生文件夹下有一个数据库文件"samp2.mdb",其中存在已经设计好的表对象"tTeacher"、"tCourse"、"tStud"和"tGrade",请按以下要求完成设计: (1)创建一个查询,按输入的教师姓名查找教师的授课情况,并按"上课日期"字段降序显示"教师姓名"、"课程名称"、"上课日期"3个字段的内容,将查询名命为"qT1";当运行该查询时,应显示参数提示信息:"请输入教师姓名"。 (2)创建一个查询,查找学生的课程成绩大于等于80且小于等于100的学生情况,显示"学生姓名"、"课程名称"和"成绩"3个字段的内容,将查询命名为"qT2"。 (3)对表"tGrade"创建一个分组总计查询,假设学号字段的前4位代表年级,要统计各个年级不同课程的平均成绩,显示"年级"、"课程ID"和"成绩之Avg",并按"年级"降序排列,将查询命名为"qT3"。 (4)创建一个查询,按"课程ID"分类统计最高分成绩与最低分成绩的差,并显示"课程名称"、"最高分与最低分的差"等内容。其中,最高分与最低分的差由计算得到,将查询命名为"qT4"。

北邮数据库原理与应用阶段作业

一、单项选择题(共10道小题,共100.0分) 1. 数据库事务的隔离性通过_______实现。 2. 1.DBMS的事务管理子系统 2.应用程序员 3.DBMS的并发控制机制 4.DBMS的恢复子系统 知识点:事务的概念 学生答案:[C;] 标准答 案: C; 得分:[10]试题分 值: 10.0 提示: 3. 数据库的一致性状态由_______来负责。 4. 1.DBMS的事务管理子系统 2.应用程序员 3.DBMS的并发控制机制 4.DBMS的恢复子系统 知识点:事务的概念 学生答案:[B;] 标准答 案: B; 得分:[10]试题分 值: 10.0 提示: 1. 事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处

于一致性状态。这指的是事务的_____。 2. 1.一致性 2.隔离性 3.持久性 4.原子性 知识点:事务的概念 学生答案:[A;] 标准答 案: A; 得分:[10]试题分 值: 10.0 提示: 1. 一个事务一旦提交之后,它对数据库的影响必须是永久的,无论发生何种系统故障。这指的是事务的____。 2. 1.一致性 2.隔离性 3.持久性 4.原子性 知识点:事务的概念 学生答案:[C;] 标准答 案: C; 得分:[10]试题分 值: 10.0 提示: 1. 系统必须保证事务不受其它并发执行事务的影响,这指的是事务的________。 2.

2.隔离性 3.持久性 4.原子性知识点:事务的概念 学生答案:[B;] 标准答 案: B; 得分:[10]试题分 值: 10.0 提示: 1. 一个事务中所有对数据库的操作是一个不可分割的操作序列。每个事务的操作序列要么都被成功地执行,要么一个也不被执行,这指的是事务的______。 2. 1.一致性 2.隔离性 3.持久性 4.原子性 知识点:事务的概念 学生答案:[D;] 标准答 案: D; 得分:[10]试题分 值: 10.0 提示: 1. DBS运行的最小逻辑单位是__________。 2. 1.事务 2.表 3.属性

数据库主机选型方案

(一)数据库主机选型 AS/400从诞生一开始就通过提供卓越的业务处理 功能,可靠性,安全性和可扩展性从而提供真正 的商业价值。在全球,各种规模的企业都选择将 其关键的业务构筑于AS/400之上,其高的性能价 格比已得到各界用户的普遍认同。在国内与医疗 业保险相近的客户有:珠海医疗保险、深圳社会 保险、大连社会保险等。 AS/400是世界上已知的最易于使用、功能最完善 的计算机系统。鉴于它能使客户在其经营上花更 多的时间,而很少花时间去管理他们的信息系统,因而相当多的客户均选择了该系统。所有的AS/400计算机均用同一使用方便的、完善的OperatingSystem/400(OS/400),它拥有强大的集成的关系数据库、多种通信协议、高度安全性、强大的文件维护及打印能力、完善的系统及网络管理特性,同时提供详细的中文联机帮助。而且全都使用易于理解的中文菜单方式或HTML浏览器方式进行访问。最新版本的操作系统包含一种全新的集成语言环境(ILE),它使应用开发可以使用多种编程语言同时进行,更快、更灵活和更有效。 ★选择AS/400e主要理由: 卓越的性能 AS/400e的成功赢利及众多的装机量,使得IBM每年不断投入大量人力物力以最新技术对其进行改进,AS/400e的性能不断提高,1990年以来,AS/400e的高端性能每年增长60-70%,性能价格比每年增长30%?AS/400e系列产品其可伸缩性从低端到高端跨度1100倍以上。TPC-C值达152,346Tpmc。 下面从影响AS/400e性能的三个主要方面逐一阐述:芯片、I/O子系统、先进的体系结构。 I 芯片

1、绝缘硅技术(SOI) 绝缘硅片技术实际上是一种微处理器技术,它能将更多的硅和硅氧化层添加到处理器中用于绝缘。具体来讲,它是在处理器芯片内部的硅晶片上先嵌埋一层二氧化硅绝缘物,再以这一绝缘物作为基板来制造各个晶体管,通过绝缘的氧化层起到保护芯片上数万个晶体管的作用,减小晶体管的静电电容,而使晶体管的状态切换加快,降低了误差、提高了晶体管的工作效率以及微处理器的速度;同时,减小了状态切换时的充电电流,以降低功耗,延长了设备的实用寿命。 2、PowerPC64位处理器技术 AS/400e是目前唯一从硬件、操作系统到应用程序全面实现64位处理的计算机系统。此芯片的设计是为了适应商业环境的需要,采用5级流水,4级超标量运算,有20多条专为AS/400e设计的专用指令,这种扩展主要是针对商用工作负荷进行优化,使得AS/400e更适于定点运算,这样使AS/400e在商业环境中可以做一个非常优秀的服务器。在不同的应用领域,AS/400e的64位技术体现出强大的性能和巨大的潜力。它的TPC-C值在业界也处于领先地位。 3、CMOS技术 采用CMOS技术,在原有PowerPC60x的228条64位的指令上增加了20多条专为AS/400e设计的专用指令至253条,增加的指令主要包括数据值运算支持,一些新的载入和储存指令,对指令预装入的处理等,这些指令对商用运算非常重要。 4、256bit总线宽度与升级Cache通信 在总线方面,PowerPCAS采用256bit总线宽度与升级Cache通信,确保了中央处理器能够大容量地处理数据和指令。而很多的RISC芯片均采用64bit的总线宽度与Cache通信,这在商用数据的大吞吐量面前势必会形成瓶颈。尽管系统可吞吐大量数据,但Cache通常仍是多数RISC系统的瓶颈,AS/400e采用256KB单循环数据Cache来克服这个问题,Cache带宽高达4.9GB/S,系统总线带宽达36GB/S,这一值是许多RISC芯片总线宽度的两倍。 5、指令预取处理技术 在指令预取方面,大多数的RISC芯片的击中准确率仅为80%或90%,也就是说系统在为下一步运算预取指令后,常常需要重新再预取,这是因为程序中的跳转和转移等命令所致。这使得中央处理器未得到充分利用,某些时候处于空闲状态,而PowerPCAS芯片采用特殊指令预取处理技术使预取准确率达100%,充分利用了CPU的处理能力。 6、全面的错误检验技术 在商业应用方面另一个重要因素是数据的高度集成和可用性。PowerPCAS芯片中采用全面的错误检验技术,不同的奇偶校验方式被集成到多数控制和数据流逻辑单元上,使得芯片级校验非常完备和可靠。 II I/O子系统 系统的设备通过I/O总线连接到主机上,对AS/400e来说,大量的I/O处理器分别承担了不同的任务处理,极大地减轻了中央处理器的负担,使得中央处理器能对

数据库性能监测指标

数据库性能监测指标(如Oracle、SqlServer)、LoadRunner 性能测试指标 1.%Disk Time(PhysicalDisk_Total) 2.%Processor Time(Processor_Total) 3.File Data Operations/sec(System) 4.Interrupts/sec(Processor_Total) 5.Page Faults/sec(Memory) 6.Pages/sec(Memory) 7.PoolNonpaged Bytes(Memory) 8.Private Bytes(Process_Total) 9.Processor Queue Length(System) 10.Threads(Objects) dbm: rem_cons_in 到正在被监视的数据库管理器实例的当前连接数,从远程客户端启动 agents_from_pool 代理程序池中已分配的代理程序数 agents_stolen 从应用程序中盗用代理程序的次数。重新分配与应用程序相关联的空闲代理程序,以便对其他应用程序执行操作,称作“盗用” sort_heap_allocated 拍快照时,以所选择的级别为所有排序分配的排序堆空间的总页数post_threshold_sorts 达到排序堆阈值后,已请求的堆的排序数 db: appls_cur_cons 当前已连接到数据库的应用程序数 appls_in_db2 当前已连接到数据库并且数据库管理器当前正在处理其请求的应用程序数sort_heap_allocated 拍快照时,以所选择的级别为所有排序分配的排序堆空间的总页数total_sorts 已经执行的排序总数 total_sort_time 所有已执行排序的总已用时间(以毫秒为单位) sort_overflows 用完排序堆并且可能需要临时磁盘存储空间的排序总数 hash_join_small_overflows 哈希联接数据大小超过可用排序堆空间,但超出比率小于10% 的次数 pool_data_l_reads 已经通过缓冲池的数据页逻辑读取请求数 pool_data_p_reads 要求I/O 将数据页放入缓冲池的读取请求数 pool_index_l_reads 已经通过缓冲池的索引页逻辑读取请求数 pool_index_p_reads 需要将索引页放入缓冲池的物理读取请求数 files_closed 已关闭的数据库文件的总数 pkg_cache_lookups 应用程序在程序包缓存中查找一个节或程序包的次数。在数据库级,它表示自从启动数据库或重置监视器数据以来的引用总数 pkg_cache_inserts 请求的一个节不可用,因而必须加载到程序包缓存中的总次数。此计数包括由系统执行的任何隐式准备

数据库性能监控分析系统的设计与实现

—105— 数据库性能监控分析系统的设计与实现 王 娜,宿红毅,白 琳,王 鑫,郝子昭 (北京理工大学计算机科学与工程系,北京 100081) 摘 要:在讨论Oracle 体系结构和性能优化的基础上介绍了一个基于J2EE 的数据库性能监控和分析系统(DMI)的总体设计思想及其部分实现。 关键词:性能优化;Oracle ;实时监控;JMS ;RMI Design and Realization of Database Performance Monitoring and Analyzing System WANG Na, SU Hongyi, BAI Lin, WANG Xin, HAO Zizhao (Dept. of Computer Science and Engineering, Beijing Institute of Technology, Beijing 100081) 【Abstract 】This paper presents the design and part of implementation of a database performance monitoring and analyzing system (DMI) based on J2EE with discussing the architecture and performance optimizing of Oracle. 【Key words 】Performance optimizing; Oracle; Real-time monitoring; JMS; RMI 计 算 机 工 程Computer Engineering 第31卷 第24期 Vol.31 № 24 2005年12月 December 2005 ·软件技术与数据库· 文章编号:1000—3428(2005)24—0105—03 文献标识码:A 中图分类号:TP311.13 随着数据库应用的不断深入和扩大,数据库中的数据量迅速增长,数据操作也越来越复杂,数据库工作效率逐渐下降。因此,实施对数据库的管理维护、性能调优越来越受到广大数据库管理员(DBA)的关注和重视。虽然目前各种数据库产品本身也提供了大量功能强大的性能监控和调试工具,如Oracle 的OEM 、Performance Manager 、Capacity Planer 等,来帮助数据库管理人员对数据库性能进行调整、优化,但遗憾的是,精通掌握这些工具并能通过它们来有效地分析数据库性能状态,进而合理配置数据库以调整其性能也十分困难。因此开发一个简单高效的数据库性能监控管理工具来辅助DBA 对数据库进行性能分析调优成为数据库应用不断扩展的需要。 针对这种情况,本文结合业界先进的数据库管理经验,开发了Database Management Insight(DMI)——一个简单、实用、方便、安全的数据库监控管理平台。它可以有效地辅助数据库管理人员对数据库进行性能优化,确保数据库正常、平滑、高效地运转。DMI 可以监控Oracle 、Sybase 、DB2等数据库,本文以Oracle 为例来对该系统进行阐述。 1 总体设计 1.1 Oracle 的结构和性能优化 数据库优化的目的是更改系统的一个或多个组件,使其满足一个或多个目标的过程。对Oracle 数据库来说,优化是进行合理的资源配置,达到组件之间的均衡以改善其性能,即增加吞吐量、提高响应时间。数据库性能优化要考虑到系统的各个组成部分,由图1可以看出,Oracle 应用系统主要包含以下几个部分[1]: (1)用户进程和服务器进程 用户进程是SQL 语句的提出者,服务器进程则负责执行由用户进程传递过来的SQL 语句,与SGA 区交互。用户进程和服务器进程是数据库性能调整的一个重要方面,尤其是当用户的数量随着时间的推移而 不断增大时,建立与数据库的重复性临时连接的Web 应用系统会导致性能下降[2]。 (2)Oracle 实例 一个Oracle 实例是存储结构和后台进程的组合体。其中,SGA 是用来存放所有数据库进程共享的数据和控制信息的存储区域,当数据库一启动,SGA 就立即占有服务器的内存空间。SGA 中的库高速缓存、字典高速缓存、数据高速缓存、日志缓冲区以及大缓冲池和Java 池等组件的大小对系统性能有极大的影响,它们直接影响磁盘I/O 的频率,从而影响数据库效率[3]。实施性能优化时应注意DB_CACHE_SIZE 、SHARED_POOL_SIZE 、LOG_BUFFER 、LARGE_POOL_SIZE 和JAVA_POOL_SIZE 这几个参数的值,如果配置不合理会造成系统资源的极大浪费。 图 1 Oracle 体系结构 基金项目:武器装备预研项目 作者简介:王 娜(1981—),女,硕士生,主研方向:计算机网络与分布式处理;宿红毅,副教授;白 琳、王 鑫、郝子昭,硕士生 收稿日期:2004-10-28 E-mail :sdbzwn@https://www.doczj.com/doc/5812814993.html,

数据库上机考试试题及答案

1下列说法中正确的是:( D ) A 、 SQL 中局部变量可以不声明就使用 B 、 SQL 中全局变量必须先声明再使用 C 、 SQL 中所有变量都必须先声明后使用 D 、 SQL 中只有局部变量先声明后使用;全局变量是由系统提供的用户不能自己建立。 2.哪个关键字用于测试跟随的子查询中的行是否存在( B )。 A.MOV B.EXISTS C.UNION D.HAVING 3 .下列哪些语句用于创建存储过程( A )? A、CREATE PROCEDURE B、CREATE TABLE C、DROP PROCEDURE D、其他 5.在SQL中,SELECT语句的“SELECT DISTINCT”表示查询结果中 ( C )。 A.属性名都不相同 B.去掉了重复的列 C.行都不相同 D.属性值都不相同 语言集数据查询、数据操作、数据定义和数据控制功能于一体,语句INSERT、DELETE、UPDATA实现下列哪类功___A_____。 A. 数据查询 B. 数据操纵 C. 数据定义 D. 数据控制 Server 2000 采用的身份验证模式有( D )。 (A)仅Windows身份验证模式 (B)仅SQL Server身份验证模式 (C)仅混合模式 (D)Windows身份验证模式和混合模式 Server 2000 企业版可以安装在操作系统上。( C ) (A)Microsoft Windows 98 (B)Microsoft Windows 2000 Professional (C)Microsoft Windows 2000 Server (D)Microsoft Windows XP Server是一个( C )的数据库系统。 (A)网状型(B)层次型 (C)关系型(D)以上都不是 语言中,删除一个视图的命令是( B )。 A. DELETE B. DROP C. CLEAR D. REMOVE 语言中,删除记录的命令是( A )。

数据库上机题

现有一个商店的数据库,记录顾客及其购物情况,由下面三个表组成: 商品(商品号,商品名,单价,商品类别,供应商); 顾客(顾客号,姓名,住址); 购买(顾客号,商品号,购买数量); 建表,在定义中要求声明: 1)每个表的主外码; 2)顾客的姓名和商品名不能为空值; 3)单价必须大于0,购买数量必须在0到20之间; 1.往表中插入数据: 商品( M01,佳洁士,8.00,牙膏,宝洁; M02,高露洁,6.50,牙膏,高露洁; M03,洁诺,5.00,牙膏,联合利华; M04,舒肤佳,3.00,香皂,宝洁; M05,夏士莲,5.00,香皂,联合利华; M06,雕牌,2.50,洗衣粉,纳爱斯; M07,中华,3.50,牙膏,联合利华; M08,汰渍,3.00,洗衣粉,宝洁; M09,碧浪,4.00,洗衣粉,宝洁 ) 顾客(C01,Dennis,海淀; C02,John,朝阳; C03,Tom,东城; C04,Jenny,东城; C05,Rick,西城;) 购买(C01,M01,3;C01,M05,2; C01,M08,2;C02,M02,5; C02,M06,4;C03,M01,1; C03,M05,1;C03,M06,3; C03,M08,1;C04,M03,7; C04,M04,3;C05,M06,2; C05,M07,8;) 2.用SQL语句完成下列查询: (1)检索购买了供应商"宝洁"产品的所有顾客; (2)检索买的商品包括了顾客"Dennis"所购买商品的顾客(姓名); (3)检索牙膏卖出数量最多的供应商。 (4)检索至少购买了两种商品的所有顾客 (5)检索全部顾客都购买过的商品 (6)将所有的牙膏商品单价增加10%。 (7)删除从未被购买的商品记录。

微震监测数据处理系统详细设计说明书

微震监测数据处理系统 软件详细设计说明书 学生姓名王建旭学号 0808140505 学生姓名王智杰学号 0808140512 学生姓名汤玉杰学号 0808140119 学生姓名毕国兴学号 0808140727 专业电子信息科学与技术年级 08级 指导教师劳彩莲职称副教授 学院信息与电气工程学院 中国农业大学教务处制 2011年 7月

目录 1 目的 (3) 2 代码框架描述 (3) 2.1 源文件说明 (3) 2.2 系统配置文件说明 (3) 3 系统结构关系图 (4) 4 单文档多视的创建与通讯子模块详细设计说明 (4) 4.1 数据结构 (5) 4.2 处理流程详细说明 (5) 4.3 编码设计 (6) 5 OpenGL子模块详细设计说明 (7) 5.1 数据结构 (8) 5.2 处理流程详细说明 (10) 5.3 部分重要编码设计 (10) 5.3.1函数SetGoal(float x,float y,float z,float color) (11) 5.3.2函数RenderScene() (12) 6 微震列表子模块详细设计说明 (12) 6.1 数据结构 (13) 6.2 处理流程详细说明 (13) 6.3 编码设计 (18) 7 SQL Server数据库详细设计说明 (19) 7.1 数据结构 (21) 7.1.1 数据库信息模型: (21) 7.1.2数据库逻辑模型 (21) 7.1.3数据库结构的详细设计 (21) 7.2 数据库系统的建立 (22) 7.2.1 数据库建立 (22) 7.2.2表的建立和管理 (22) 8 详细微震情报表子模块详细设计说明 (22) 8.1 数据结构 (23) 8.2 处理流程详细说明 (23) 8.3 编码设计 (24)

事务管理与数据库安全性(二)有答案

事务管理与数据库安全性(二) 一、选择题 1. 数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括________。 A.数据字典、应用程序、审计文档、数据库后备副本 B.数据字典、应用程序、审计文档、日志文件 C.日志文件、数据库后备副本 D.数据字典、应用程序、数据库后备副本 答案:C 2. 事务的持久性是指________。 A.事务中包括的所有操作要么都做,要么都不做 B.事务一旦提交,对数据库的修改就是永远的 C.一个事务内部的操作及使用的数据对并发执行的其他事务是隔离的 D.事务必须是使数据库从一个一致性状态变到另一个一致性状态 答案:B 3. 设有两个事务T1和T2,其并发操作序列如下表所示。下列说法中正确的是________。

A.该操作序列不存在问题 B.该操作序列丢失修改 C.该操作序列不能重复读 D.该操作序列读出“脏”数据 答案:C 4. 在对数据库的系统故障进行恢复时,需要对日志文件进行________。 A.反向扫描 B.正向扫描 C.双向扫描 D.随机扫描 答案:C 5. 事务的持久性是由数据库系统中的哪个部件负责?________。 A.完整性控制部件 B.安全性控制部件 C.恢复管理部件 D.并发控制部件

答案:C 6. 设有两个事务T1和T2,其并发操作序列如下表所示。下面说法中正确的是________。 A.该操作序列不存在问题 B.该操作序列丢失更新 C.该操作序列不能重复读 D.该操作序列读出“脏”数据 答案:B 7. 下列权限中,哪一个不是数据库的访问权限?________。 A.Read权限 B.Resource权限 C.Update权限 D.Lock权限 答案:D

数据库一体机建设方案(简版)

数据库一体机建设方案 2019.08

目录 1.产品简介 (3) 1.1.产品背景 (3) 1.2.产品概述 (4) 1.3.产品特性及优势 (4) 2. 硬件配置和集成服务 (5) 2.1.建议分布式数据库一体机硬件配置 (5) 2.2.数据库迁移工作内容人天 (6)

1.产品简介 分布式数据库一体机遵循开放的工业标准,采用领先的分布式架构,专为企事业单位核心数据库高性能需求业务设计,将计算单元和存储单元以及网络单 元整合融入标准机柜,为企业级核心数据库业务提供卓越性能、高可 靠性与高性价比。分布式数据库一体机系统支持多种数据库混合部 署,完美支撑OLTP、OLAP业务等多种负载,数据库一体机所涉及部 件均为冗余设计,数据2~3份冗余保护,增加专为数据库性能设计 的性能加速单元为企业核心数据库业务提供强大的处理能力与灵活 的扩展能力。 1.1.产品背景 一直以来,IT业务支撑系统数据库均运行在小型机+集中式SAN存储的传统架构中。随着当前业务的高速发展,业务系统的交易量及数据量越来越大,对核心系统的处理能力及存储能力要求越来越高。而小型机\X86+集中存储的传统架构扩展性差,性能有限,IO能力严重不足,如需达到相应的处理能力,则需要用更高配置的小型机\X86和更高端存储来代替现有的小型机\X86和存储,技术复杂,代价昂贵。同时,随着设备的老化,设备性能越来越不足以支撑业务需要,核心系统的架构改造和升级势在必行。 基于传统架构的数据库往往存在如下的问题: ◆传统架构的数据库节点需要高性能主机,成本高。对于多节点RAC数据库,由于节点间 的通信带宽通常为1Gbps,较高的为10Gbps,这个数量级的带宽使得节点间的并发处理能力无法充分利用。 ◆传统架构的数据库的性能瓶颈通常在IO上面,传统的磁盘阵列受限于控制器的处理能 力和FC端口带宽,IO吞吐量通常只能几百MB/s,在数据库要求大量的磁盘读写时,IO 消耗的时间过长。 ◆传统架构的存储扩展能力较差,在容量增加时,性能没有相应提高。同时扩容成本高。 在此环境下,以x86服务器为基础、使用闪存卡、Infiniband交换机可以使Oracle RAC

数据库并发控制

数据库是一个共享资源,可以提供多个用户使用。这些用户程序可以一个一个地串行执行,每个时刻只有一个用户程序运行,执行对数据库的存取,其他用户程序必须等到这个用户程序结束以后方能对数据库存取。但是如果一个用户程序涉及大量数据的输入/输出交换,则数据库系统的大部分时间处于闲置状态。因此,为了充分利用数据库资源,发挥数据库共享资源的特点,应该允许多个用户并行地存取数据库。但这样就会产生多个用户程序并发存取同一数据的情况,若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性,所以数据库管理系统必须提供并发控制机制。并发控制机制的好坏是衡量一个数据库管理系统性能的重要标志之一。 DM用封锁机制来解决并发问题。它可以保证任何时候都可以有多个正在运行的用户程序,但是所有用户程序都在彼此完全隔离的环境中运行。 一、并发控制的预备知识 (一) 并发控制概述 并发控制是以事务(transaction)为单位进行的。 1. 并发控制的单位――事务 事务是数据库的逻辑工作单位,它是用户定义的一组操作序列。一个事务可以是一组SQL 语句、一条SQL语句或整个程序。 事务的开始和结束都可以由用户显示的控制,如果用户没有显式地定义事务,则由数据库系统按缺省规定自动划分事务。 事务应该具有4种属性:原子性、一致性、隔离性和持久性。 (1)原子性 事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说这些操作是一个整体,对数据库而言全做或者全不做,不能部分的完成。这一性质即使在系统崩溃之后仍能得到保证,在系统崩溃之后将进行数据库恢复,用来恢复和撤销系统崩溃处于活动状态的事务对数据库的影响,从而保证事务的原子性。系统对磁盘上的任何实际数据的修改之前都会将修改操作信息本身的信息记录到磁盘上。当发生崩溃时,系统能根据这些操作记录当时该事

数据库性能监控

数据库性能监控 1.纲要: 数据库性能监控是一个常非大范围。 包含:表空间、段、索引、主键、数据缓冲区、库缓冲、用户锁、等待事件、回滚段、I/O、共享池等等。(空间、索引、等待事件) 2.概述: 在日常生产系统中,我们的系统都使用相当长的时间,SGA 中重做日志缓存区的命中率,应该小于1%、高速缓存命中>=90%率等等一般都是正常的,当然一个非常低的命中率的确意味着系统配置或应用存在严重问题;非常高的缓存命中率存在严重低效率的SQL语句(极差的SQL造成%99以上的命中率), 但命中率的多少义意不是很大,主要是查看系统的等待事件,系统的反应时间,吞吐率(I/O)。 在系统的配置都没有问题情况下,影响性能的主要方面集中在: 1、索引 2、oracle、操作系统某些资源利用的不合理 3、系统的等待事件 3.索引 要开始监控一个索引的使用,使用这个命令: ALTER INDEX pk_addr MONITORING USAGE;

要停止监控一个索引,输入: ALTER INDEX pk_addr NOMONITORING USAGE; 开始监控索引的使用之后,就可以在sys.v$object_usage视图中查到你所监控的索引的使用情况。 所有被使用过至少一次的索引都可以被监控并显示到这个视图中。不过,一个用户只可以接收它自己schema中的索引使用。Oracle并没有提供一个视图来接收所有模式中的索引。 4.oracle、操作系统某些资源利用的不合理 内存分配不合理 内存的利用率多于80%时,这时说明内存方面应该调节一下。方法大体有以下几项: 划给Oracle使用的内存不要超过系统内存的1/2,一般保在系统内存的40%为益。 为系统增加内存; 如果你的连接特别多,可以使用MTS的方式;(MTS(Multi-Threaded Server)是ORACLE SERVER的一个可选的配置选择,是相对DEDICATE方式而言,它最大的优点是在以不用增加物理资源(内存)的前提下支持更多的并发的连接。) 打全补丁,防止内存漏洞。 表空间分配的不合理 表空间不足的时候,系统前台根本无法使用。 回滚段空间的不足,持行脚本就回失败。 --监控表空间使用率与剩余空间大小的语句 SELECT D.TABLESPACE_NAME,SPACE "空间(M)", BLOCKS ,SPACE-NVL(FREE_SPACE,0) "使用空间(M)", ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100,2) "使用率(%)", FREE_SPACE "空闲空间(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024),2) SPACE, SUM(BLOCKS) BLOCKS FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) D,

相关主题
文本预览
相关文档 最新文档