MariaDB社区

标题: 实现 Ajax 客户机和服务器层 [打印本页]

作者: admin    时间: 2007-7-27 16:33
标题: 实现 Ajax 客户机和服务器层
作者: Senthil Nathan ,  出处:developerWorks 中国, 责任编辑: 叶江,  2007-07-04 13:48

  本文将开发银行场景的一些部分。具体地说,将使用 MySQL 数据库创建一个后端数据库。我们将研究几个 MySQL 命令行工具,并使用这些工具连接数据库、在数据库中创建、定义和填充与银行相关的数据。然后,开发一个中间层 PHP 模块来提供银行的业务逻辑,这个模块使用 ODBC 连接 MySQL 数据库。最后,开发一个银行门户,用户可以通过这个简单的浏览器用户界面与这个端到端应用程序进行交互,这个应用程序不久之后就可以在 Zend Core 上运行。

  简介

  本文这个银行场景主要提供银行出纳员执行的基本服务。客户数据是这个场景的重要部分。在此之后,可以通过 Zend Core 提供的 ODBC MySQL 驱动程序获取和更新存储的客户数据。处理了客户数据之后,重点转移到提供银行出纳功能所需的核心银行逻辑。我们开发一个 PHP 代码模块来提供核心银行逻辑,并使用 ODBC 进行必要的数据库访问。使用 Zend Core 和 PHP 实现银行逻辑的主要优点是,可以利用内置的 MySQL 支持。

  在建立数据库并开发 PHP 模块之后,为银行出纳员提供执行四个核心功能的用户界面。我们通过一个瘦客户机访问 PHP 模块中封装的核心银行逻辑。具体地说,这个基于 Web 的瘦客户机是按照 Ajax 风格生成的:XHTML、Cascading Style Sheet(CSS)、JavaScript 和 XMLHttpRequest(XHR)。它为银行出纳员提供执行核心银行功能的简单用户界面。这个浏览器用户界面还演示浏览器客户机逻辑与服务器端 PHP 逻辑进行网络通信的方法。

  到本文结束时,我们会建立数据库、一个提供核心银行逻辑的 PHP 模块以及一个单页面浏览器用户界面,这些都是银行场景的组成部分。

  MySQL 数据库

  MySQL 是一种开放源码数据库。在我们的场景中,使用社区服务器版本,这是一个紧凑的数据库服务器,具有许多有用的特性。因为这个银行场景的实现基于开放源码产品,所以 MySQL 和 Zend Core PHP 是合适的组合。Zend Core 本身支持MySQL,还有各种支持 MySQL 管理和编程的工具。在我们的场景中,只使用 MySQL 命令行客户机执行 MySQL 的管理。我们将用 MySQL 数据库为这个场景建立银行帐户数据库。

  创建并填充银行数据库

  在这个场景中,将为给定的客户存储以下帐户信息:


  给定客户的帐户信息包括帐户持有人的姓名、帐户号、当前的资产余额、客户拥有的一只股票的编号、拥有的股票总数以及股票投资组合的当前市值。下面几节详细介绍如何创建数据库表,然后用一些虚构的银行客户的帐户信息填充这个表。我们开始吧!

  按照以下步骤创建数据库,然后用应用程序相关数据填充这个表:



清单 1. BankDB.sql 文件的内容
-- This file is part of the End-to-End Ajax development article in
-- the IBM developerWorks. This file contains a simple DB script to
-- create a database and populate it with the data.
--
-- Last Modified: May/10/2007
--
-- To execute the following statements in MySQL, do the following steps.
-- 1) Start MySQL command line client.
-- 2) Enter your MySQL admin password.
-- 3) Type the following line by substituting <YOUR_SQL_FILE_DIR> with the
--    directory name where the file is stored.
--    source <YOUR_SQL_FILE_DIR>\bankdb.sql

--
-- Table structure for table 'BankDB'
--

DROPp DATABASE BankDB;
CREATE DATABASE BankDB;
USE BankDB;
CREATE TABLE account (
   AccountHolderName VARCHAR(20) NOT NULL,
   AccountNumber INTEGER NOT NULL,
   CheckingBalance DOUBLE NOT NULL,
   StockName VARCHAR(6),
   StockQuantity INTEGER,
   StockValue DOUBLE,
   PRIMARY KEY(AccountHolderName, AccountNumber)
);

--
-- Populating data for table 'account'
--

insert into ACCOUNT values ('Frodo', 435245, 2344.45, 'GOOG', 100, 3453.32);
insert into ACCOUNT values ('Sam', 928462, 7583.32, 'CSCO', 200, 5323.43);
insert into ACCOUNT values ('Pippin', 234233, 3444.62, 'INTC', 300, 4213.76);
insert into ACCOUNT values ('Merry', 642445, 1005.32, 'MSFT', 250, 1353.32);
insert into ACCOUNT values ('Aragorn', 972321, 6424.24, 'HPQ', 525, 12043.94);
insert into ACCOUNT values ('Gandalf', 432134, 5392.23, 'IBM', 400, 10043.78);
insert into ACCOUNT values ('Legolas', 590134, 4313.82, 'DELL', 325, 5926.62);






欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2