mysql數(shù)據(jù)庫范文

時(shí)間:2023-04-07 09:43:54

導(dǎo)語:如何才能寫好一篇mysql數(shù)據(jù)庫,這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。

mysql數(shù)據(jù)庫

篇1

1、通過線程的互斥來同步操作數(shù)據(jù)庫;

2、數(shù)據(jù)庫采用事務(wù)處理表中的數(shù)據(jù);

3、采用共享方式打開數(shù)據(jù)庫,不能以獨(dú)占方式打開數(shù)據(jù)庫建立一個(gè)mysql連接表加上一個(gè)臨界區(qū),根據(jù)實(shí)際情況定大小。

篇2

網(wǎng)上有關(guān)于eclipse連接mySql數(shù)據(jù)庫資料,在百度上搜索相關(guān)信息,完全符合標(biāo)題的很多,但闡述的都不詳細(xì),現(xiàn)就eclipse連接mySql問題通過實(shí)例進(jìn)行分析。

一、正確安裝MySQL。

打開下載的mysql安裝文件mysql-5.5.32-win32.zip正確安裝,為了數(shù)據(jù)安全,不要把mysql安裝在系統(tǒng)盤,如C:盤。如果是重新安裝mysql的話,要注意先備份好mysql目錄中的data目錄,這個(gè)目錄是所有用戶的數(shù)據(jù)目錄,非常重要。重裝時(shí),備份好數(shù)據(jù)后,先卸載掉舊的mysql,并刪除原mysql安裝目錄。注意選擇Custom選項(xiàng),這樣才能修改安裝目錄。

二、創(chuàng)建一個(gè)MySql數(shù)據(jù)庫結(jié)果如圖1所示。

三、打開Eclipse,創(chuàng)建一個(gè)項(xiàng)目(myTest),安裝mysql直連驅(qū)動(dòng)jar包。

步驟:右鍵點(diǎn)擊myTest--->build Path--->add external Archiver...選擇jdbc驅(qū)動(dòng),點(diǎn)擊確定。

四、驅(qū)動(dòng)已經(jīng)導(dǎo)入,下面我們來寫一個(gè)程序驗(yàn)證一下。在myTest工程下建Class文件,名為mySql_1,輸入如下代碼:

import java.sql.*;

public class mySql_1

{

public static void main(String args[])

{ try

{

Class.forName("com.mysql.jdbc.Driver"); //加載MYSQL JDBC驅(qū)動(dòng)程序

//Class.forName("org.gjt.mm.mysql.Driver");

System.out.println("成功安裝Mysql驅(qū)動(dòng)!");

}

catch (Exception e) {

System.out.print("Error loading Mysql Driver!");

e.printStackTrace();

}

try

{

Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/myTest","root","z");

System.out.println("成功 Mysql服務(wù)!");

Statement stmt = connect.createStatement();

ResultSet rs = stmt.executeQuery("select * from test_1"); //z 為你表的名稱

while (rs.next())

{

System.out.print(rs.getString("id")+" ");

System.out.print(rs.getString("name"));

System.out.println(rs.getString("age"));

} }

catch (Exception e) {

System.out.print("get data error!");

e.printStackTrace();

} } }

五、我們來寫一個(gè)程序驗(yàn)證一下向MySQL數(shù)據(jù)庫中插入數(shù)據(jù)。在myTest工程下建Class文件,名為mySql_2,輸入如下代碼,往MySQL的Test_1表中插入10條數(shù)據(jù)。

import java.sql.*;

public class mySql_2

{

public static void main(String args[])

{ try

{

Class.forName("com.mysql.jdbc.Driver"); //加載MYSQL JDBC驅(qū)動(dòng)程序

//Class.forName("org.gjt.mm.mysql.Driver");

System.out.println("成功安裝Mysql驅(qū)動(dòng)!");

}

catch (Exception e)

{ System.out.print("錯(cuò)誤安裝Mysql驅(qū)動(dòng)!");

e.printStackTrace();

} try

{ Connection connect = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mytest","root","z");

int num=10;

PreparedStatement Statement=connect.prepareStatement("insert into test_1 values(?,?,?)");

for(int i=0;i

Statement.setString(1,"No."+i);//給第一個(gè)問號(hào)賦值;

Statement.setString(2,"姓名"+i); //給第二個(gè)問號(hào)賦值;

Statement.setInt(3,100+i); //給第三個(gè)問號(hào)賦;

Statement.executeUpdate();

}

// } catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

// System.out.println("An error has occurred:"+e.toString());

// e.printStackTrace();

}

catch(SQLException e)

{ } } }

篇3

【關(guān)鍵詞】MYSQL;MSSQL;安全分析;漏洞探測(cè)

動(dòng)態(tài)網(wǎng)站的安全是關(guān)系到網(wǎng)站是否正常運(yùn)行的根本,而企業(yè)內(nèi)部客戶信息等數(shù)據(jù)的安全更是其命脈所在,這些數(shù)據(jù)通常都保存在網(wǎng)站的后臺(tái)數(shù)據(jù)庫中,那么安全可靠的數(shù)據(jù)庫是至關(guān)重要的。目前中小型企業(yè)多使用MYSQL和MSSQL作為后臺(tái)數(shù)據(jù)庫。

本文將從數(shù)據(jù)庫系統(tǒng)的用戶權(quán)限、目錄權(quán)限、漏洞探測(cè)和密碼竊聽四個(gè)方面對(duì)MYSQL和MSSQL數(shù)據(jù)庫做安全性分析。

1.測(cè)試環(huán)境

Windows server 2003網(wǎng)絡(luò)操作系統(tǒng),默認(rèn)系統(tǒng)管理員賬戶,在IIS6.0上配置網(wǎng)站和FTP服務(wù)器,系統(tǒng)支持asp,,PHP。安裝有MySql5.1和SQL server2008數(shù)據(jù)庫系統(tǒng)。

2.數(shù)據(jù)庫安全性分析

2.1 用戶權(quán)限

(1)當(dāng)你試圖聯(lián)接一個(gè)MySQL服務(wù)器時(shí),身份檢查使用user表中3個(gè)字段(Host,User和Password)。服務(wù)器在user表?xiàng)l目中匹配你的主機(jī)名和用戶名,并當(dāng)你提供了正確的口令才接受連接。我們通過root用戶和密碼,連接數(shù)據(jù)庫后,使用select命令查看用戶和權(quán)限。如圖1所示。

圖1 Mysql初始用戶及權(quán)限

第一條說明可在本機(jī)使用root用密碼登陸,擁有刪除記錄,修改記錄,刪除表等權(quán)限,如果密碼強(qiáng)壯,那么,這是安全的。

第二條表示在任何主機(jī)使用root不需密碼登陸,擁有刪除記錄,修改記錄,刪除表等權(quán)限,’%’在Host列里意味著“任何主機(jī)”并且是不特定的。

第三條表示在本機(jī)(localhost)匿名登陸,擁有刪除記錄,修改記錄,刪除表等權(quán)限,空白User值意味著“任何用戶”并且是最不特定的。

第四條表示可以在任何主機(jī)匿名登陸,但沒有任何權(quán)限。

顯然,第二,三,四都是不安全的!

解決方法:如果你不需要遠(yuǎn)程維護(hù),刪除掉第二條,delete from user where host=“%”and user=“root”;或者給它加個(gè)強(qiáng)壯的密碼。刪除第三條和第四條。

(2)MSSQL數(shù)據(jù)庫的權(quán)限控制是基于master庫的syslogins表,擁有所有權(quán)限的帳號(hào)是sa,其他還有sysadmin,db_owner等不同權(quán)限帳號(hào)。由于SQL Server不能刪除Sa這個(gè)超級(jí)用戶,所以必須對(duì)這個(gè)帳號(hào)進(jìn)行最強(qiáng)的保護(hù),如使用非常強(qiáng)壯的密碼。新建立一個(gè)擁有與Sa一樣權(quán)限的超級(jí)用戶來管理數(shù)據(jù)庫,只有當(dāng)其它系統(tǒng)管理員不可用或忘了密碼時(shí)才使用Sa。定期檢查所有登陸帳號(hào),查看是否有不符合要求的密碼。

如下命令檢查是否有空口令帳號(hào)存在。

Use master

Select name,Password from syslogins where password is null

盡可能的刪除存儲(chǔ)擴(kuò)展,防止本地用戶利用存儲(chǔ)擴(kuò)展執(zhí)行惡意命令。

如下命令刪除xp_cmdshell擴(kuò)展。

use master

sp_dropextendedproc xp_cmdshell

2.2 目錄權(quán)限

(1)一般不會(huì)讓服務(wù)器主機(jī)上的其它用戶擁有對(duì)數(shù)據(jù)庫目錄文件的寫訪問權(quán),但僅僅是讀訪問權(quán)也非常危險(xiǎn)。由于像GRANT和SET PASSWORD這樣的查詢都被記錄到日志中去了,常規(guī)和更新日志文件包含了有關(guān)密碼的敏感查詢文本。如果一個(gè)攻擊具有對(duì)這些日志的讀訪問權(quán),那么他只要在日志文件中查找GRANT或PASSWORD這樣的敏感單詞,就很容易找到密碼的明文。要消除這些安全漏洞,就要安排數(shù)據(jù)庫目錄及其中所有文件和目錄的所有權(quán)。

MySQL默認(rèn)安裝到c:\mysql,c盤默認(rèn)everyone有讀取和運(yùn)行權(quán)限,由于權(quán)限的繼承性,everyone對(duì)c:\mysql也有讀取和運(yùn)行權(quán)限,如圖2所示,顯然這是不安全的。

圖2 windows2003默認(rèn)目錄用戶及權(quán)限

解決方法:把mysql目錄文件改為只有某個(gè)管理員賬戶(如windows下的adminis-trator賬戶)可讀寫。

(2)MSSQL也是安裝到c盤,由于存取控制問題,最好安裝到d盤等非系統(tǒng)盤進(jìn)行嚴(yán)格的權(quán)限控制。而且,由于MSSQL數(shù)據(jù)庫與系統(tǒng)結(jié)合非常緊密,系統(tǒng)管理員在沒有數(shù)據(jù)庫密碼的情況下也可以通過選擇windows驗(yàn)證來操作數(shù)據(jù)庫。因此,普通用戶有可能通過系統(tǒng)漏洞提升自己的權(quán)限,對(duì)數(shù)據(jù)庫進(jìn)行破壞。

解決辦法:除了嚴(yán)格的存取限制外,還要定期查看SQL Server日志檢查是否有可疑的登錄事件發(fā)生。

對(duì)于MSSQL的安全是和windows系統(tǒng)安全緊密結(jié)合的,操作系統(tǒng)中帳戶設(shè)置越多,安全性就越差。因此網(wǎng)絡(luò)服務(wù)器只允許一個(gè)指定系統(tǒng)管理員進(jìn)行管理是至關(guān)重要的。

具體要遵循如下原則:

①將唯一的系統(tǒng)管理員Administrator重命名,改為一個(gè)不易猜出的長(zhǎng)名字,從而為攻擊增加一層障礙。

②將Guest帳號(hào)禁用,同時(shí)重命名為一個(gè)復(fù)雜的名字,增加口令。因?yàn)間uest帳號(hào)不能被刪除只能改名。有的黑客工具可以利用guest賬號(hào)的弱點(diǎn),將帳號(hào)權(quán)限從一般用戶提升到管理員權(quán)限,從而破壞系統(tǒng)。

③給系統(tǒng)管理員帳號(hào)一個(gè)復(fù)雜的口令,長(zhǎng)度最少在8位以上,且必須同時(shí)包含字母、數(shù)字、特殊字符。其次不要使用熟悉的單詞、熟悉的鍵盤順序、熟悉的數(shù)字等。因?yàn)榭诹钍呛诳凸舻闹攸c(diǎn),口令一旦被突破也就無任何系統(tǒng)安全可言了,而這往往是不少網(wǎng)管最易忽視的地方。

④口令必須定期更改,且最好記在心里,除此以外不要在任何地方做記錄。

⑤針對(duì)密碼破譯,采用Windows Server 2003提供的賬號(hào)鎖定功能,設(shè)定登錄最大允許的出錯(cuò)次數(shù),一旦登錄次數(shù)超過設(shè)定次數(shù),系統(tǒng)會(huì)自動(dòng)鎖定賬號(hào),這樣致使密碼破譯無法進(jìn)行。另外,如果在日志審核中發(fā)現(xiàn)某個(gè)帳號(hào)被連續(xù)嘗試,則必須立刻更改此帳號(hào)(包括用戶名和口令)。

2.3 服務(wù)器漏洞探測(cè)

(1)MySQL安全漏洞

例1:MySQL CREATE TABLE調(diào)用繞過訪問限制漏洞。

漏洞描述:CVE ID:CVE-2008-7247

當(dāng)數(shù)據(jù)主目錄包含有到不同文件系統(tǒng)的符號(hào)鏈接時(shí),MySQL的ql/sql_table.cc允許通過認(rèn)證的遠(yuǎn)程攻擊者通過以特殊DATA DIRECTORY或INDEX DIRECTORY參數(shù)調(diào)用CREATE TABLE繞過預(yù)期的訪問限制,執(zhí)行各種非授權(quán)操作。

解決方法:下載廠商補(bǔ)丁http:///commits/59711

例2:MySQL SELECT語句(下轉(zhuǎn)第35頁)(上接第24頁)處理拒絕服務(wù)漏洞。

MySQL的mysqld守護(hù)程序沒有正確地處理在執(zhí)行某些帶有子查詢的SELECT語句期間所產(chǎn)生的錯(cuò)誤,在執(zhí)行使用GeomFromWKB函數(shù)的語句期間沒有保留某些null_value標(biāo)記,這允許通過認(rèn)證的遠(yuǎn)程攻擊者通過提交特制語句導(dǎo)致守護(hù)程序崩潰。

目前廠商已經(jīng)了升級(jí)補(bǔ)丁以修復(fù)這個(gè)安全問題,到廠商的主頁下載:

http:///commits/88409

http:///commits/87482

(2)默認(rèn)的情況下,MSSQL則會(huì)打開TCP的1433端口監(jiān)聽

雖然MSSQL可以人為的改變監(jiān)聽端口,但是通過微軟未公開的1434端口的UDP探測(cè)可以很容易知道MSSQL使用的是什么TCP/IP端口。往UDP1434端口發(fā)送一個(gè)1個(gè)字節(jié)的內(nèi)容為02的數(shù)據(jù)包,被探測(cè)的系統(tǒng)則會(huì)返回安裝的MSSQL服務(wù)信息,這些信息包括:主機(jī)名稱、實(shí)例名稱、版本、管道名稱以及使用的端口等。這個(gè)端口是微軟自己使用,而且不象默認(rèn)的1433端口那樣可以改變,1434是不能改變的。由于利用了UDP端口,一般的過濾是很難防范的。

解決辦法:安裝防火墻,或者利用Windows 2003系統(tǒng)的IPSEC對(duì)網(wǎng)絡(luò)連接進(jìn)行IP限制,實(shí)現(xiàn)IP數(shù)據(jù)包的安全性。對(duì)IP連接進(jìn)行限制,只保證自己的IP能夠訪問,拒絕其他IP進(jìn)行的端口連接,把來自網(wǎng)絡(luò)上的安全威脅進(jìn)行有效的控制。重要的是,還要對(duì)端口作過濾,包括大部分的TCP和UDP端口,因?yàn)閮H僅做IP限制的話,有可能惡意攻擊者先攻擊被數(shù)據(jù)庫服務(wù)器信任的主機(jī),控制之后作為跳板對(duì)數(shù)據(jù)庫服務(wù)器進(jìn)行攻擊。

2.4 密碼竊聽

在單機(jī)環(huán)境下,基于用戶口令本身的保密性(與口令長(zhǎng)度、復(fù)雜性等有關(guān)),可以在一定程度上防止其他用戶進(jìn)入系統(tǒng)。但在網(wǎng)絡(luò)環(huán)境下,存在另外一種威脅:攻擊者可通過竊聽通信信道或進(jìn)行網(wǎng)絡(luò)窺探的方法,在口令的明文傳輸過程中獲得用戶口令,使得這種身份認(rèn)證方法變得極不安全。

MySQL和MSSQL系統(tǒng)客戶與服務(wù)器構(gòu)架的一個(gè)重要問題就是通過網(wǎng)絡(luò)傳送數(shù)據(jù)時(shí)的安全問題。如果客戶與服務(wù)器間的交互以純文本形式發(fā)生,黑客就可能“嗅出”被傳送的數(shù)據(jù)包,從而獲得機(jī)密信息。

解決方法:可以通過激活MySQL和MSSQL系統(tǒng)配置中的SSL,或應(yīng)用一個(gè)OpenSSH這樣的安全應(yīng)用來為傳送的數(shù)據(jù)建立一個(gè)安全的加密“通道”,以關(guān)閉這一漏洞。以這種形式加密客戶與服務(wù)器連接可使未授權(quán)用戶極難查閱往來的數(shù)據(jù)。另外的辦法就是將口令加密傳輸,現(xiàn)在有多種加密技術(shù),常用的是單向函數(shù)加密技術(shù),如在系統(tǒng)中使用MD5算法來實(shí)現(xiàn)口令的加密存儲(chǔ)與傳輸。

3.總結(jié)

網(wǎng)站后臺(tái)數(shù)據(jù)庫的安全分析,目的就是保證企業(yè)內(nèi)部客戶信息等數(shù)據(jù)的安全和企業(yè)網(wǎng)站的正常運(yùn)行。從上面的安全分析結(jié)果來看,網(wǎng)站后臺(tái)數(shù)據(jù)庫的安全依賴于良好的安全管理和有效的安全策略。實(shí)際上數(shù)據(jù)庫的安全是一個(gè)十分復(fù)雜的工程,這里只體現(xiàn)了其中的幾個(gè)側(cè)面,更精深的安全管理,有待于我們?cè)趯?shí)踐和應(yīng)用中不斷地深入研究。

參考文獻(xiàn)

篇4

【關(guān)鍵詞】在線監(jiān)測(cè)系統(tǒng);MySQL數(shù)據(jù)庫;C++builder

1.引言

對(duì)于在線監(jiān)測(cè)儀來說,通常都是長(zhǎng)時(shí)間連續(xù)運(yùn)行的,數(shù)據(jù)量一般都巨大,并且需要在過程控制中實(shí)時(shí)修改運(yùn)行參數(shù),如何管理數(shù)據(jù)文件,運(yùn)行條件參數(shù)和相關(guān)信息等就顯得尤為重要。這需要借助專門的數(shù)據(jù)庫來才能有效的管理。

近20年來,數(shù)據(jù)庫技術(shù)不斷發(fā)展,至今已經(jīng)有很多成熟的商品化的數(shù)據(jù)庫管理系統(tǒng)(DBMS),例如:SQL Server、Oracle和Access等,它們的應(yīng)用越來越廣泛,但對(duì)用戶來說還存在不足之處。(a)SQL Server:SQL驗(yàn)證的登陸只對(duì)特定的服務(wù)器有效,也就是說,在一個(gè)多服務(wù)器的環(huán)境中管理比較困難;對(duì)于每一個(gè)數(shù)據(jù)庫,必須分別地為其設(shè)定管理權(quán)限;移植性較差,不能跨平臺(tái)移植;價(jià)格也不便宜;(b)Oracle:價(jià)格昂貴,服務(wù)費(fèi)用也比較高;對(duì)硬件要求也比較高,使得整體投入非常高;(c)Access:主要用于單機(jī)桌面小型數(shù)據(jù)庫管理系統(tǒng),屬于Local DBMS,難以支持大型應(yīng)用;速度比較慢,功能還不夠完善。

目前,采用開源數(shù)據(jù)庫已開始成為一種潮流,如許多小型、中型或大型網(wǎng)站數(shù)據(jù)庫服務(wù)器都選擇MySQL數(shù)據(jù)庫。MySQL是一個(gè)精巧的SQL數(shù)據(jù)庫管理系統(tǒng),以操作簡(jiǎn)便著稱。由于其強(qiáng)大的功能、豐富的應(yīng)用程序接口及精巧的系統(tǒng)結(jié)構(gòu)設(shè)計(jì),在基于數(shù)據(jù)庫的應(yīng)用軟件開發(fā)中得到了廣泛的應(yīng)用。MySQL具有下述優(yōu)勢(shì);(a)是目前運(yùn)行速度最快的SQL語言數(shù)據(jù)庫;(b)多樣的數(shù)據(jù)類型和超大的容量可以方便完整地保存反映設(shè)備狀態(tài)的各種數(shù)據(jù);(c)支持多平臺(tái),可以在不同的操作系統(tǒng)下進(jìn)行數(shù)據(jù)的準(zhǔn)確移植;(d)可以免費(fèi)獲得,可以有效降低成本。

本文中在線監(jiān)測(cè)系統(tǒng)硬件平臺(tái)采用PC/104,具體如下:PC/104嵌入式主板采用SBC-4571(北京集智達(dá)公司),其是嵌入式Vortex86 CPU模塊,帶4串口,2個(gè)USB,支持CRT/LCD/音頻/網(wǎng)絡(luò),板載128MB DRAM內(nèi)存,1個(gè)增強(qiáng)IDE接口,顯示屏采用元太 6.4"LCD顯示屏。PC/104主板外加PC/104的I/O卡,就能方便的實(shí)現(xiàn)在線監(jiān)測(cè)系統(tǒng)的控制中心。在線監(jiān)測(cè)系統(tǒng)的軟件平臺(tái)為當(dāng)前流行的Windows 2000操作系統(tǒng)上,采用MySQL數(shù)據(jù)庫作為在線監(jiān)測(cè)系統(tǒng)的數(shù)據(jù)庫,應(yīng)用軟件在集成開發(fā)環(huán)境C++builder 6.0上開發(fā)。在此平臺(tái)上研究在線設(shè)備的應(yīng)用程序與MySQL數(shù)據(jù)庫的連接、更新、插入,及數(shù)據(jù)庫中關(guān)鍵字段的動(dòng)態(tài)實(shí)時(shí)顯示技術(shù)。本設(shè)計(jì)采用的MySQL版本為mysql-5.0.37-win32及其在windows下的驅(qū)動(dòng)為mysql-connector-odbc-3.51.14-win32。下面從MySQL在線監(jiān)測(cè)數(shù)據(jù)庫的設(shè)計(jì)、C++ builder與MySQL數(shù)據(jù)庫的ODBC連接,應(yīng)用程序的設(shè)計(jì)三方面來論述。

2.MySQL在線監(jiān)測(cè)數(shù)據(jù)庫的設(shè)計(jì)

本設(shè)計(jì)是為了研究MySQL數(shù)據(jù)庫在在線監(jiān)測(cè)系統(tǒng)中應(yīng)用的可行性,及關(guān)鍵技術(shù)的開發(fā)與研究。因此設(shè)計(jì)的onlinebase數(shù)據(jù)庫就相對(duì)簡(jiǎn)單, 只包含一張反映在線設(shè)備運(yùn)行結(jié)果的results的表。表results包括關(guān)鍵字段“id”、反映在線監(jiān)測(cè)指標(biāo)值的int類型字段“value”、反映在線監(jiān)測(cè)的實(shí)時(shí)條件的int類型字段“conditon” 和在線檢測(cè)指標(biāo)時(shí)的備注字段“remark” 等4各字段。創(chuàng)建數(shù)據(jù)庫onlinebase、數(shù)據(jù)表results后,可以通過命令desc results來查看表的具體描述,如圖1所示。

3.C++ builder與MySQL數(shù)據(jù)庫的ODBC連接

C++builder不能直接訪問MySQL數(shù)據(jù)庫,但可以通過ODBC來實(shí)現(xiàn)。因?yàn)镺DBC屏蔽了各種數(shù)據(jù)庫的差異,安裝了MySQL數(shù)據(jù)庫的ODBC驅(qū)動(dòng)程序后,就可以通過ODBC對(duì)MySQL數(shù)據(jù)庫進(jìn)行操作。

創(chuàng)建ODBC源實(shí)際上就是一個(gè)寫操作系統(tǒng)注冊(cè)表的過程,可以在應(yīng)用程序中實(shí)現(xiàn),但為了簡(jiǎn)單方便,還是通過在操作系統(tǒng)中“控制面板\性能和維護(hù)\管理工具\(yùn)數(shù)據(jù)源(ODBC)中創(chuàng)建。選擇添加用戶DSN,然后選擇MySQL ODBC 3.51 Driver的數(shù)據(jù)源驅(qū)動(dòng),點(diǎn)擊完成,出現(xiàn)圖2的對(duì)話框。

在圖2所示對(duì)話框中,在“Data Source Name”編輯框中輸入onlineodbc,設(shè)置了ODBC數(shù)據(jù)源的名;在“description”編輯框中輸入對(duì)DSN的說明;數(shù)據(jù)在“server”編輯框中輸入local,設(shè)置為本地服務(wù)器;然后設(shè)置User和Password,這里以root用戶訪問,并輸入root用戶的密碼;最后選擇onlinebase作為數(shù)據(jù)源的數(shù)據(jù)庫。點(diǎn)擊下面的“Test”按鈕可以測(cè)試通過ODBC數(shù)據(jù)源連接所選數(shù)據(jù)庫是否成功。最后點(diǎn)擊“ok”按鈕,返回ODBC源數(shù)據(jù)管理器,如圖3所示,就可以發(fā)現(xiàn)新增加的onlineodbc數(shù)據(jù)源。

圖1 創(chuàng)建results表,

并查看results表的結(jié)構(gòu)

圖 2 創(chuàng)建onlinebase數(shù)據(jù)庫的ODBC源

圖3 創(chuàng)建onlieodbc數(shù)據(jù)源后

的ODBC數(shù)據(jù)源管理器窗口

4.應(yīng)用程序的設(shè)計(jì)

C++builder6上開發(fā)的應(yīng)用演示程序的功能是主要是:與MySQL數(shù)據(jù)庫onlinebase的連接,并將數(shù)據(jù)表results在人機(jī)界面上動(dòng)態(tài)顯示;在線監(jiān)測(cè)指標(biāo)value字段數(shù)值也在曲線上的實(shí)時(shí)動(dòng)態(tài)顯示;可以在人機(jī)界面上手動(dòng)添加記錄,刪除記錄。最重要的是要模擬在線監(jiān)測(cè)系統(tǒng),每隔一段時(shí)間寫一條results表中的記錄,能在相應(yīng)的顯示表中和曲線中實(shí)時(shí)更新,動(dòng)態(tài)顯示。最終的應(yīng)用程序運(yùn)行界面如圖4所示。

圖4 應(yīng)用程序與onlinebase數(shù)據(jù)庫

連接后,運(yùn)行的界面

(1)手動(dòng)添加記錄的實(shí)現(xiàn)

通過下列語句,可以在表results最后添加一條編輯框EdtRemark、EdtValue、EdtConditon中輸入正確格式的記錄。

Table1->Append();

Table1->FieldValues["id"] = nRecordID ;

Table1->FieldValues["remark"] = EdtRemark->Text ;

Table1->FieldValues["value"] = EdtValue->Text.ToInt() ;

Table1->FieldValues["conditon"] = EdtConditon->Text.ToInt() ;

添加記錄后,剛增加的value字段內(nèi)容也相應(yīng)顯示在Chart1上,具體實(shí)現(xiàn)語句如下:

double TempD = this->Chart1->Series[0]->XValues->Value[1] -

this->Chart1->Series[0]->XValues->Value[0] ;

this->Chart1->Series[0]->Delete(0) ;

Chart1->Series[0]->AddXY(this->Chart1->Series[0]->XValues->Last()+TempD,

this->Table1->FieldValues["value"],

this->Table1->FieldValues["id"],

clBlue ) ;

(2)動(dòng)態(tài)繪制數(shù)據(jù)圖表

為了模擬在線監(jiān)測(cè),實(shí)現(xiàn)了模擬動(dòng)態(tài)監(jiān)測(cè)的功能。首先從在組件模板的System標(biāo)簽頁下拖動(dòng)Timer1:TTimer組件到Form1上,在Object inspector中設(shè)置Timer1的Enabled屬性為false,Interval屬性為2000。

然后在Timer1中的OnTimer事件中先產(chǎn)生一個(gè)三角波,產(chǎn)生三角波的代碼如下:

// 產(chǎn)生三角波波形

iCount = iCount % iPeriod ;

if( iCount

iValue = 10 * iCount ;

}else{

iValue = 10 * ( iPeriod - iCount ) ;

}

iCount = iCount + 1 ;

而后添加增加記錄的代碼,如下:

Table1->Append() ;

Table1->FieldValues["id"] = nRecordID ;

Table1->FieldValues[“remark”] = “正?!?;

Table1->FieldValues["value"] = iValue ;

Table1->FieldValues["conditon"] = 20 ;

最后添加實(shí)時(shí)顯示的代碼。這樣只要在Auto按鈕OnClick事件中使用一條 Timer1->Enabled = true; 語句就可以開始自動(dòng)每隔2s增加一條記錄,并實(shí)時(shí)顯示value字段的值。圖4 Chart1中顯示的前兩個(gè)三角形就是模擬在線監(jiān)測(cè)顯示的結(jié)果。

5.結(jié)論

本文在PC/104系統(tǒng)上的構(gòu)建在線監(jiān)測(cè)系統(tǒng),軟件平臺(tái)采用Windows2000操作系統(tǒng),在C++Build6.0環(huán)境下開發(fā)的應(yīng)用軟件借助MySQL數(shù)據(jù)庫不僅可以在線顯示監(jiān)測(cè)數(shù)據(jù)和也可以從數(shù)據(jù)庫中顯示先關(guān)歷史數(shù)據(jù),軟件界面友好,操作方便,運(yùn)行穩(wěn)定,性價(jià)比高。

參考文獻(xiàn)

[1] Russell J.T Dyer.MYSQL 核心技術(shù)手冊(cè)[M].李,李東梅.譯.2 版.北京:機(jī)械工業(yè)出版社,2009:442-470.

[2]王軍.Ian Gilfillan《MySQL4從入門到精通》[M].北京:電子工業(yè)出版社,2003.

[3]陸衛(wèi)忠等.C++Builder 6程序設(shè)計(jì)教程(第二版)[M].科學(xué)出版社,2011.

作者簡(jiǎn)介:

毛成光(1990—),男,大學(xué)本科,現(xiàn)就讀于溫州醫(yī)學(xué)院信息與工程學(xué)院生物醫(yī)學(xué)工程專業(yè)。

篇5

摘要:Moodle平臺(tái)作為一個(gè)優(yōu)秀的開放式網(wǎng)絡(luò)課程管理系統(tǒng),可以方便地用來構(gòu)建網(wǎng)絡(luò)課程。本文主要論述了Moodle課程遷移到新的服務(wù)器后,由于服務(wù)器IP地址的改變而造成課程資源中部分鏈接失效的問題,分析了問題產(chǎn)生的原因,并找出了解決方案。

關(guān)鍵詞:Moodle;課程;Mysql;遷移

中圖分類號(hào):G642

文獻(xiàn)標(biāo)識(shí)碼:A

Moodle是Modular Object-Oriented Dynamic Learning Environment(模塊化面向?qū)ο蟮膭?dòng)態(tài)學(xué)習(xí)環(huán)境)的縮寫,是專門針對(duì)廣大教師在信息化環(huán)境中設(shè)計(jì)、管理、實(shí)施和評(píng)價(jià)自己的課程與教學(xué)而開發(fā)的課程管理系統(tǒng)。Moodle自誕生之日起就以自由軟件的形式出現(xiàn),遵循GPL(GNU Public License)協(xié)議,這使它充滿了無窮的活力,吸引了一大批開發(fā)者和使用者,目前主流版本是1.9版。

1Moodle數(shù)據(jù)遷移中存在的問題

Moodle可以運(yùn)行在Windows環(huán)境下,首次使用需要安裝,安裝成功后,系統(tǒng)會(huì)生成一個(gè)名為config.php的文件,內(nèi)含服務(wù)器的配置信息。如果要把Moodle整體遷移到另外一臺(tái)服務(wù)器上,只要拷貝整個(gè)Moodle文件夾到新服務(wù)器上,并把config.php文件中wwwroot項(xiàng)對(duì)應(yīng)的IP地址改為新服務(wù)器的IP地址,就可以了。

教師在使用Moodle建設(shè)課程資源的時(shí)候,往往用一臺(tái)計(jì)算機(jī)作為服務(wù)器添加教學(xué)活動(dòng)和課程資源,完成網(wǎng)絡(luò)課程的制作。在這些課程資源建設(shè)完成后,若要遷移到另外一臺(tái)服務(wù)器上,課程資源中的有些內(nèi)容可以正常顯示,但是有些圖片或文件可能會(huì)因?yàn)殒溄訜o效而導(dǎo)致課程資源無法使用,這些問題可用通過修改Mysql數(shù)據(jù)庫中的數(shù)據(jù)予以解決。

2原因分析

Moodle中可以添加多種資源,主要包括編寫文本頁、編寫網(wǎng)頁、鏈接到文件或站點(diǎn)、顯示一個(gè)目錄、部署IMS包和插入標(biāo)簽等,不同類型的資源在Mysql數(shù)據(jù)庫對(duì)應(yīng)表中的字段類型和長(zhǎng)度等不同。表1中以顯示一個(gè)圖片為例,列出了使用“鏈接到文件”顯示圖片和使用“編寫網(wǎng)頁”顯示一個(gè)嵌入式圖片的區(qū)別,這兩條記錄都是存儲(chǔ)在表mdl_resource中。

由表1可見,通過“鏈接到文件”所鏈接的圖片,保存在reference字段中,保存的僅是文件名,是一種相對(duì)路徑的存儲(chǔ),沒有固定地和服務(wù)器IP地址對(duì)應(yīng),只要相對(duì)位置的圖片還存在,在整個(gè)Moodle課程拷貝到其他服務(wù)器上時(shí),仍然會(huì)正常顯示;而通過“編寫網(wǎng)頁”在網(wǎng)頁中嵌入圖片,是在alltext字段中存儲(chǔ)了該網(wǎng)頁的html語句,其中的211.87.171.227是創(chuàng)建該網(wǎng)頁時(shí)所使用服務(wù)器的IP地址,alltext字段中的內(nèi)容不會(huì)因?yàn)榉?wù)器IP地址的改變而改變,該圖片將因找不到IP地址所指向的文件而無法顯示。

除了圖片文件外,其他類型的文件也都存在這種相對(duì)位置引用和使用IP地址進(jìn)行引用的問題。而“添加活動(dòng)”在Mysql中的存儲(chǔ)方式和資源的存儲(chǔ)方式類似,只不過不同的活動(dòng)存儲(chǔ)在不同的表中。

3解決方案和步驟

Moodle平臺(tái)后臺(tái)數(shù)據(jù)庫可用Mysql,在數(shù)據(jù)庫管理方面,可以使用命令行,但是太多命令不利于記憶;可以借助于Mysql Administrator管理,但是在安裝和使用方面不是很方便。

PhpMyadmin 是一個(gè)以PHP為基礎(chǔ),以Web-Base方式架構(gòu)在網(wǎng)站服務(wù)器上的Mysql的數(shù)據(jù)庫管理工具,可以管理整個(gè)Mysql服務(wù)器,界面簡(jiǎn)單友好,在Moodle中可以借助于PhpMyadmin進(jìn)行數(shù)據(jù)庫的管理。

3.1在Moodle中添加PhpMyadmin

Moodle1.9版中不包含PhpMyadmin,可以從官方下載站點(diǎn)/下載,解壓后得到一個(gè)名為PhpMyadmin的文件夾,直接拷貝PhpMyadmin文件夾到..\server\moodle文件夾下。

3.2修改配置文件

進(jìn)入..\PhpMyadmin\libraries目錄,打開config.default.php文件,找到以下各項(xiàng),將其后的字符串進(jìn)行修改,如下:

$cfg['PmaAbsoluteUri'] = '211.87.165.136';

//新服務(wù)器的IP地址

$cfg['Servers'][$i]['host'] = 'localhost';

//通常用默認(rèn)

$cfg['Servers'][$i]['user'] = 'root';

// Mysql的默認(rèn)用戶

$cfg['Servers'][$i]['password'] = '123456';

// 密碼須與設(shè)置Moodle時(shí)相對(duì)應(yīng)

$cfg['DefaultLang'] = 'zh';

//選擇語言,zh代表簡(jiǎn)體中文

3.3Mysql數(shù)據(jù)庫管理

打開IE瀏覽器,輸入 211.87.165.136/PhpMyadmin,211.87.165.136就是新服務(wù)器的IP地址,就可以用PhpMyadmin管理包括Moodle數(shù)據(jù)庫在內(nèi)的Mysql數(shù)據(jù)庫,如圖1所示。

圖1 用PhpMyadmin管理Moodle數(shù)據(jù)庫

3.4修改資源的鏈接

為了能夠使課程資源在遷移到新服務(wù)器上之后能正常使用,需要修改相關(guān)表中的內(nèi)容,把用文本形式(VARCHAR或MULTITEXT等類型)記錄的鏈接資源修改與新服務(wù)器相對(duì)應(yīng)。Moodle數(shù)據(jù)庫共有200多張表,在課程資源建設(shè)完成以后,逐個(gè)表進(jìn)行檢查和修改是不可行的,可以使用游標(biāo),用存儲(chǔ)過程自動(dòng)逐條進(jìn)行修改。

在Moodle數(shù)據(jù)庫中建立存儲(chǔ)過程P_ChangeIP,找出含有VARCHAR、MULTITEXT或TEXT類型的字段及其表名,定義一個(gè)游標(biāo),每次返回的結(jié)果是表名和其中的字段名,用CONCAT函數(shù)拼接字符串構(gòu)建SQL語句,在Update命令中使用Replace進(jìn)行更新,用新服務(wù)器的IP地址替換原服務(wù)器的IP地址。

存儲(chǔ)過程的代碼如下:

CREATE PROCEDURE P_ChangeIP( )

BEGIN

DECLARE done INT DEFAULT 0;

DECLARE tname,cname VARCHAR(64);

DECLARE cur1 CURSOR FOR

SELECT table_name,column_name

FROM information_schema.columns

where table_schema = "moodle" and

(data_type like "%varchar%" or data_ type like "%text%");

--information_schema是系統(tǒng)數(shù)據(jù)庫,通過它可獲取Moodle數(shù)據(jù)庫的表名、列名等信息

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN cur1;

REPEAT

FETCH cur1 INTO tname,cname;

IF NOT done THEN

set @sql_text:=concat("update ",tname, "set ",cname ," = replace(",cname,",

'211.87.171.227','211.87.165.136')");

prepare stmt from @sql_text;

execute stmt;

deallocate prepare stmt;

END IF;

UNTIL done END REPEAT;

CLOSE cur1;

END

存儲(chǔ)過程定義完成后,使用CALL Moodle.P_ChangeIP( )命令執(zhí)行之,就可以一次性完成對(duì)相關(guān)鏈接數(shù)據(jù)的修改了。

4結(jié)束語

作為一個(gè)正在不斷成長(zhǎng)、日趨成熟的網(wǎng)絡(luò)教學(xué)平臺(tái),Moodle的技術(shù)在不斷改進(jìn)之中, 其技術(shù)改進(jìn)需要使用者共同參與,進(jìn)一步優(yōu)化軟件功能,開發(fā)更多適合國情的教學(xué)模塊,為教學(xué)提供更好的技術(shù)支持。隨著功能的不斷完善,Moodle必將為學(xué)校的網(wǎng)絡(luò)課程資源建設(shè)提供強(qiáng)有力的支持,成為提升教學(xué)質(zhì)量的有力工具。

參考文獻(xiàn):

[1] 劉貫?zāi)?劉榮光,劉曉琴. 基于Moodle網(wǎng)絡(luò)課程的設(shè)計(jì)與實(shí)施探索[J]. 現(xiàn)代教育技術(shù),2008(6).

[2] 曹效英,徐勤岸. 基于Moodle的網(wǎng)絡(luò)課程開發(fā)[J]. 軟件導(dǎo)刊,2008(4).

[3] 楊慧玲,張志潔. Moodle平臺(tái)在網(wǎng)絡(luò)教育資源建設(shè)中的應(yīng)用[J]. 教育技術(shù)導(dǎo)刊,2007(8).

[4] 陳恒法,羅兵. 基于Moodle 教學(xué)輔助系統(tǒng)的應(yīng)用實(shí)踐[J]. 中國教育信息化,2007(5).

Solution to Moodle Course Migration Based on Mysql Database

QIAO Xian-liang

(Qingdao Ocean Shipping Mariners College, Qingdao 266071,China )

篇6

關(guān)鍵詞PHPMySQLODBC

1.引言

在Internet應(yīng)用中,將服務(wù)器端腳本技術(shù)和客戶端腳本技術(shù)結(jié)合起來可以制作出豐富多彩的頁面。CGI和ASP是比較流行的服務(wù)器端腳本技術(shù)。通常CGI在跨平臺(tái)的開發(fā)中扮演著主要角色,可以使用VB、C或Perl等來實(shí)現(xiàn),用它們寫的CGI腳本是一個(gè)單獨(dú)的程序,而不是嵌在HTML文檔中再通過另一個(gè)程序解釋替換的,所以它是一種“非嵌入式”的服務(wù)器端腳本。另外,每一次修改CGI程序都必須重新將其編譯成執(zhí)行文件,因此,這樣的編寫方式事實(shí)上是比較困難且沒有效率。ASP則是嵌入式的服務(wù)器端腳本,每一次修改腳本并不需要重新編譯成執(zhí)行文件就可以直接執(zhí)行,但ASP有一個(gè)致命的缺點(diǎn):不具有跨平臺(tái)開發(fā)能力。目前ASP只能在Windows環(huán)境下運(yùn)行,而無法在Internet上的Unix平臺(tái)下使用。在這種情況下PHP的問世,在WelCGI的領(lǐng)域里掀起了一場(chǎng)革命。

2.PHP介紹

PHP(PersonalHomePage)是一種跨平臺(tái)的服務(wù)器端嵌入式腳本語言。它最初是RasmusLerdorf于1994年開發(fā)的。早期的版本,提供了訪客留言本、訪客計(jì)數(shù)器等簡(jiǎn)單功能。隨后,在第二版中增加了對(duì)mSQL的支持。自此奠定了PHP在動(dòng)態(tài)網(wǎng)頁開發(fā)上的影響力,并迅速在Internet上流傳開來。截止1999年,已有超過十五萬個(gè)站點(diǎn)使用PHP。同時(shí),PHP的源代碼完全公開,在OpenSource意識(shí)抬頭的今天,它更是這方面的中流砥柱,隨著新函數(shù)庫的不斷加入,使PHP無論在Unix或是Win32的平臺(tái)上都可以有更多新的功能。如今,PHP已發(fā)展至4.0版。在語法方面,PHP混合了C、Java、Perl以及PHP以前版本的優(yōu)點(diǎn)。它相當(dāng)于Script與CGI的結(jié)合語言,但是其執(zhí)行將效率卻比CGI更好,程序編寫也比HTML更便利且更富有彈性,程序的安全性及保密性也比Script好。在函數(shù)支持方面,PHP幾乎覆蓋了Web應(yīng)用的各個(gè)方面,其中最有特色的是數(shù)據(jù)庫函數(shù),使用PHP完成一個(gè)含有數(shù)據(jù)庫功能的網(wǎng)頁非常簡(jiǎn)單,而PHP支持的數(shù)據(jù)庫也非常豐富,目前包括:Oracle、Sybase、mSQL、MySQL、Informix等。

3.訪問MySQL數(shù)據(jù)庫

MySQL是一個(gè)快速、健壯和易用,且支持多線程、多用戶的SQL數(shù)據(jù)庫服務(wù)器。雖然PHP通過ODBC支持幾乎所有的數(shù)據(jù)庫。但對(duì)于開發(fā)數(shù)據(jù)驅(qū)動(dòng)的網(wǎng)站而言,選擇MySQL應(yīng)該說是最佳組合,這不僅因?yàn)镸ySQL是免費(fèi)的,更在于它具有許多同大型數(shù)據(jù)庫相媲美甚至超過它們的優(yōu)良性能。PHP實(shí)現(xiàn)對(duì)MySQL數(shù)據(jù)庫的訪問有兩種方法:

1)利用PHP的數(shù)據(jù)庫函數(shù)連接

這里主要用到四個(gè)數(shù)據(jù)庫函數(shù):

mysql_connect()建立與MySQL服務(wù)器的連接。

mysql_select_db():選擇MySQL服務(wù)器中的數(shù)據(jù)庫供以后的數(shù)據(jù)查詢操作query處理。mysql_query():送出query字符串以幫助MySQL做相關(guān)的處理或執(zhí)行。

mysql_fetch_row():用來將查詢結(jié)果result單行移到數(shù)組變量中。數(shù)組的索引是數(shù)字

索引,第一個(gè)索引值是0。

2)通過ODBC連接

PHP通過ODBC連接MySQL數(shù)據(jù)庫主要用到四個(gè)函數(shù):

Odbc_connect():用來同ODBC數(shù)據(jù)源建立連接。

Odbc_do():用來在建立連接之后執(zhí)行數(shù)據(jù)庫查詢。

Odbc_result():用于取得當(dāng)前記錄行中某個(gè)字段的值。

Odbc_fetch_row():用來把查詢結(jié)果保存到數(shù)組,每個(gè)數(shù)組元素對(duì)應(yīng)一條記錄。

上述兩種方法在與數(shù)據(jù)庫建立連接的語法上,并沒有太大差別。不過在相比較之下,通過ODBC方式存取數(shù)據(jù)庫比PHP直接存取MySQL耗時(shí)間,但通過ODBC接口存取數(shù)據(jù)庫不必?fù)?dān)心使用何種數(shù)據(jù)庫,如Oracle,Informix,Sybase等。它們都支持ODBC接口,這樣可減少更換數(shù)據(jù)庫時(shí)需要更改程序的問題。圖1顯了PHP連接數(shù)據(jù)庫的兩種方法。

PHP

MySQL

MySQL

圖1PHP連接數(shù)據(jù)庫說明圖

4.一個(gè)應(yīng)用實(shí)例

現(xiàn)在很多校園網(wǎng)站都提供成績(jī)查詢功能。PHP和MySQL數(shù)據(jù)庫相結(jié)合使用可以方便的實(shí)現(xiàn)此功能。首先建立數(shù)據(jù)庫Score及數(shù)據(jù)表Score。建表SQL語句如下:

CreattableScore(

Stu_novarchar(10)notnull,

namevarchar(10)notnull,

scoreltinyint(4),

score2tinyint(4),

PrimaryKey(stu_no)

);

1)通過PHP的數(shù)據(jù)庫函數(shù)訪問MySQL的代碼如下:

〈?php

print(“〈html〉〈head〉\n”);

print(“〈title〉成績(jī)查詢〈/title〉〈/head〉\n”);

print(“〈body〉〈cennter〉”);

print(“〈fontsize=6color=”ff0000〉您的成績(jī)?nèi)缦隆?font〉”);

$comm=mysql_connect(“l(fā)ocalhost”,“root”,"");

mysql_select_db(“Score”,$comm);

$str=“Select*FromScoreWherestu_no=’$pstu_no''''andname=’$pname''''”;

$reault=mysql_query($str,$comm);

print(“〈tablealign=center〉”);

$sqlrow=mysql_fetch_row($result));

print(“學(xué)號(hào):$sqlrow[0]”);

print(“姓名:$sqlrow[1]”);

print(“成績(jī)1:$sqlrow[2]”);

print(“成績(jī)2:$sqlrow[3]”);

print(“〈/table〉〈body.〈/html〉”);

?〉

2)通過ODBC訪問MySQL數(shù)據(jù)庫的代碼如下(省略的代碼同上):

〈?php

…

$comm=odbc_connect(“Score”,"system","");

$str="Select*FromScoreWherename=’$pname’andstu_no=’$pstu_no’”;

$result=odbc_do($comm,$str);

…

while(odbc_fetch_row($result))

{

$pstu_no=odbc_result($result,"stu_no");

$pname=odbc_result($result,"name");

$score1=odbc_result($result,"score1");

$score2=odbc_result($result,"score2");

print(“學(xué)號(hào):$pstu-no”);

print(“姓名:$pname”);

print(“成績(jī)1:$score1”);

print(“成績(jī)2:$score2”);

}

…?〉

5.結(jié)束語

對(duì)于Wed服務(wù)器端的開發(fā),PHP是一種易開發(fā)、高效能的動(dòng)態(tài)腳本編程語言。在未來的幾年內(nèi),PHP必將成為主流的腳本語言,并被Wed研究和開發(fā)人員熟悉和掌握。

參考文獻(xiàn)

篇7

隨著Internet的發(fā)展和普及,越來越多的單位和個(gè)人都建立了自己的網(wǎng)站,以便更好地進(jìn)行各種信息交流或者宣傳自身,亦或者通過管理系統(tǒng)提高工作效率,邁入信息化、高效化的快節(jié)奏時(shí)代。Web開發(fā)人員比較青睞Wamp的開發(fā)環(huán)境,即WAMP(Windows+Apache+MySQL+PHP),是指是基于Windows 操作系統(tǒng)下,Apache作為 Web 服務(wù)器,MySQL 作為數(shù)據(jù)庫以及PHP(部分網(wǎng)站也使用 Perl 或 Python)作為服務(wù)器端腳本解釋器完美組合,也是目前較為廣泛使用的WEB 應(yīng)用程序平臺(tái)。這其中MySQL數(shù)據(jù)庫作為網(wǎng)站運(yùn)行更新的橋梁紐帶,起著舉足輕重的作用。

【關(guān)鍵詞】數(shù)據(jù)庫 MySQL 管理系統(tǒng)

那什么叫數(shù)據(jù)庫呢?可以理解為是存儲(chǔ)數(shù)據(jù)的倉庫。舉例來說:比如你的記錄本上有你的學(xué)生的學(xué)號(hào)、姓名、電話、家庭地址,這些記錄就是數(shù)據(jù)。把這些數(shù)據(jù)按照學(xué)號(hào)、姓名、電話、家庭住址存放在一個(gè)表里,再把這樣的表放到數(shù)據(jù)庫里供我們或者人查詢使用,這就是我們說的數(shù)據(jù)庫。如今:已經(jīng)存在Oracle、SQL Server等諸多優(yōu)秀的數(shù)據(jù)庫。同時(shí),還有MySQL、PostgreSQL都是很優(yōu)秀的開源數(shù)據(jù)庫。

MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是一款非常優(yōu)秀的自由軟件。由瑞典 MySQ LAB 公司開發(fā),它之所以流行,是因?yàn)樗兄约邯?dú)特的優(yōu)勢(shì):體積小、速度快、總體擁有成本低,最重要的是代碼開源,共享。作為商業(yè)運(yùn)行網(wǎng)站,為了降低網(wǎng)站總體成本而選擇這樣的數(shù)據(jù)庫當(dāng)然是顯而易見的。

1 MySQL支持的語言---SQL

1.1 什么是SQL語言

結(jié)構(gòu)化查詢語言(Structured Query Language,簡(jiǎn)稱SQL)是一種介于關(guān)系代數(shù)與關(guān)系演算之間,并且使用范圍限定的形式化語言。它專門用于與關(guān)系數(shù)據(jù)庫管理系統(tǒng)進(jìn)行數(shù)據(jù)交互,并且能夠完成數(shù)據(jù)查詢、數(shù)據(jù)操作、數(shù)據(jù)定義和數(shù)據(jù)控制四個(gè)方面的功能,是一種通用的、功能性強(qiáng)大的關(guān)系數(shù)據(jù)庫語言。

1.2 SQL語言的特點(diǎn)

(1)統(tǒng)一的語言。SQL語言可用于所有用戶的數(shù)據(jù)庫模型,包括系統(tǒng)管理員數(shù)據(jù)庫管理員應(yīng)用程序開發(fā)人員及許多其他類型終端用戶。所有用SQL編寫的程序都是可以移植的。

(2)語言簡(jiǎn)潔、易學(xué)易用。SQL語言用了九個(gè)動(dòng)詞完成率數(shù)據(jù)定義(CREATE、DROP、ALTER)、數(shù)據(jù)查詢(SELECT)、數(shù)據(jù)操作(INSERT、UPDATE、DELETE)、數(shù)據(jù)控制(GTANT、REVOKE)的大部分功能.。

(3)高度非過程化。降低了數(shù)據(jù)庫使用的復(fù)雜度,也提高了數(shù)據(jù)的獨(dú)立性。

(4)SQL語言既可以交互式使用,也可以以嵌入形式使用

(5)面向集合的操作方式

(6)SQL語言支持關(guān)系數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu)。數(shù)據(jù)庫三級(jí)模式指:內(nèi)模式對(duì)應(yīng)于存儲(chǔ)文件,模式對(duì)應(yīng)于基本表,外模式對(duì)應(yīng)于視圖。

2 MySQL與其他數(shù)據(jù)庫

2.1 甲骨文的Oracle

Oracle數(shù)據(jù)庫是世界上第一個(gè)支持SQL語言的數(shù)據(jù)庫。主要應(yīng)用于大型系統(tǒng)。隨著網(wǎng)格技術(shù)的發(fā)展和應(yīng)用,Oracle公司推出以網(wǎng)格計(jì)算模型的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。盡可能以最低成本和最高的服務(wù)質(zhì)量提供信息,它提供了企業(yè)網(wǎng)格計(jì)算所需的集群、工作負(fù)載管理、數(shù)據(jù)中心自動(dòng)化、易用性。

2.2 IBM的DB2

DB2是IBM公司研制的一種關(guān)系型數(shù)據(jù)庫系統(tǒng)。主要應(yīng)用于OS、Windows等平臺(tái)下。DB2提供了高層次的數(shù)據(jù)利用性,數(shù)據(jù)的完整性好。而且DB2的安全性高,具有很強(qiáng)的可恢復(fù)性。DB2數(shù)據(jù)庫主要用于大型系統(tǒng)當(dāng)中。

2.3 開源的MySQL

MySQL數(shù)據(jù)庫是一個(gè)開放源代碼的數(shù)據(jù)庫。是由瑞典MySQLAB公司開發(fā)的。MySQL廣泛地應(yīng)用于Internet上的中小型網(wǎng)站,針對(duì)不同客戶群提供Community Server、Enterprise Server和Embedded Server3種套件,體現(xiàn)了良好的伸縮能力。SQL Server 數(shù)據(jù)庫也是微軟公司開發(fā)的。SQL Server是基于客服機(jī)/服務(wù)器模式的大型數(shù)據(jù)庫管理系統(tǒng),能夠支持大吞吐量的事務(wù)處理,能在網(wǎng)絡(luò)環(huán)境下進(jìn)行數(shù)據(jù)的存取,能用于開發(fā)決策支持系統(tǒng)等軟件。

2.4 微軟的Access和SQL Server

Access 數(shù)據(jù)庫是微軟公司開發(fā)的小型數(shù)據(jù)庫。Access數(shù)據(jù)庫是Microsoft公司Office系列軟件之一,在程序設(shè)計(jì)概念上更加接近大型DBMS。

3 MySQL數(shù)據(jù)庫的價(jià)值

3.1 MySQL是開放源代碼

MySQL是源代碼可共享、開放的數(shù)據(jù)庫,任何人都可以獲取該數(shù)據(jù)庫的源代碼,基于此基礎(chǔ)進(jìn)行二次開發(fā),修正MYSQL的缺陷,完善數(shù)據(jù)庫代碼,是一款可自由運(yùn)用的數(shù)據(jù)庫。

3.2 MySQL的跨平臺(tái)性

MYSQL可以在Windows系列的操作系統(tǒng)上運(yùn)行,還能在MacOS、UNIX、Linux等操作系統(tǒng)上運(yùn)行。

3.3 功能強(qiáng)大

MySQL 是一個(gè)真正的多用戶、多線程 SQL 數(shù)據(jù)庫服務(wù)器。MySQL 是以一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個(gè)服務(wù)器守護(hù)程序 mysqld 和很多不同的客戶程序和庫組成。

總之,與其他的大型數(shù)據(jù)庫如 Oracle、DB2、SQL Server 等相比,MySQL 雖有不足之處,如規(guī)模小、功能有局限等,但是這并沒有澆滅Web開發(fā)人員對(duì)它的鐘愛熱情。因?yàn)閷?duì)于一般的個(gè)人使用者和中小型企業(yè)來說,MySQL 提供的功能已經(jīng)綽綽有余,目前互聯(lián)網(wǎng)上流行的網(wǎng)站構(gòu)架平臺(tái)是 WAMP開發(fā)環(huán)境,MySQL 加 PHP 的結(jié)合在網(wǎng)際網(wǎng)路上的應(yīng)用較常見,且獲得了“動(dòng)態(tài)配對(duì)”(Dynamic Duo)的雅號(hào),它的強(qiáng)大功能、靈活性、豐富的應(yīng)用編程接口(API)以及精巧的系統(tǒng)結(jié)構(gòu),受到了廣大自由軟件愛好者甚至是商業(yè)軟件用戶的青睞,因而MySQL一躍成為了當(dāng)今最流行的數(shù)據(jù)庫。

篇8

【關(guān)鍵詞】PHP MySQL B/S

【中圖分類號(hào)】 TP311 【文獻(xiàn)標(biāo)識(shí)碼】A

Design of Library Bibliographic Recommendation System Based on PHP

Liu Xinxia

(Library of Nanjing University of Finances and Economics,Nanjing 210046,Jiangsu)

【Abstract】In order to expand the library service, make readers more convenient, more fully use of library resources, using Apache+PHP+MySQL to build a platform which given the current advanced network and mature PHP technology. Through the dynamic webpage making technology, developed a set based on Web and B/S bibliographic recommendation system. This paper mainly introduces that basic structure of the library bibliographic recommendation system, design of database, database on PHP data access and manipulation, and emphatically introduces the data import and Chinese garbled solution method which encountered in the system design.

【Key words】PHP MySQL B/S

1 引言

隨著信息技術(shù)在圖書館中的廣泛應(yīng)用,通過互聯(lián)網(wǎng)進(jìn)行信息傳播的數(shù)字化圖書館已經(jīng)成為未來圖書館的發(fā)展方向。將館藏文獻(xiàn)資源書目數(shù)字化,直接通過圖書館網(wǎng)站進(jìn)行書目信息閱讀是圖書館展現(xiàn)館藏特色、拓展讀者服務(wù)的一種高效率手段。

目前網(wǎng)站的開發(fā)主流平臺(tái)有LAMP(linux操作系統(tǒng)、Apache網(wǎng)絡(luò)服務(wù)器、MySQL數(shù)據(jù)庫、PHP編程語言),J2EE和“.NET”商業(yè)軟件。由于PHP和MYSQL具有免費(fèi)、開源等多方面優(yōu)點(diǎn),因此受到廣大的Web自由軟件愛好者、特別是系統(tǒng)開發(fā)者的青睞。

2 圖書館書目推薦系統(tǒng)設(shè)計(jì)

2.1平臺(tái)環(huán)境搭建

PHP和MySQL是當(dāng)今比較流行的開源代碼技術(shù),基于PHP和MySQL構(gòu)建的Web系統(tǒng),具有穩(wěn)定性高和可移植性強(qiáng)等優(yōu)點(diǎn)。本系統(tǒng)設(shè)計(jì)采用Apache+PHP+MySQL搭建開發(fā)環(huán)境,實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁的。

使用phpMyAdmin管理MySQL。phpMyAdmin圖形化管理工具是一款使用PHP開發(fā)的B/S模式的MySQL客戶端軟件,通過phpMyAdmin完全可以對(duì)數(shù)據(jù)庫進(jìn)行各種操作,如創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表和生成MySQL數(shù)據(jù)庫腳本文件等,不必在命令提示符下通過命令實(shí)現(xiàn),從而大大提高了程序開發(fā)效率。

2.2 圖書館書目推薦系統(tǒng)結(jié)構(gòu)

該系統(tǒng)主要包括書目推薦的前臺(tái)頁面設(shè)計(jì)和后臺(tái)管理頁面設(shè)計(jì)。

前臺(tái)頁面也就是把圖書信息展現(xiàn)給讀者的頁面,具體有新書推薦、精品圖書推薦、借閱排行榜、冷門書推薦四個(gè)模塊,每本圖書都鏈接到OPAC系統(tǒng),方便讀者檢索和閱讀相應(yīng)圖書的詳細(xì)信息。后臺(tái)管理是給管理員進(jìn)入添加、修改以及刪除圖書內(nèi)容,動(dòng)態(tài)、實(shí)時(shí)更新推薦的圖書信息。

2.2 數(shù)據(jù)庫設(shè)計(jì)

首先建立數(shù)據(jù)庫,庫表主要包括管理員信息、新書推薦、精品圖書推薦、借閱排行榜、冷門書推薦幾個(gè)數(shù)據(jù)表。

管理員信息表如表1所示。該表主要用來保存管理員登錄名稱(管理員ID)、密碼、提升為管理員的時(shí)間等。該表中的用戶只有在登錄成功后才可以修改自己的會(huì)員信息、查看其他會(huì)員的詳細(xì)信息并進(jìn)行管理,如刪除現(xiàn)有會(huì)員、推薦會(huì)員等。

新書推薦、精品圖書推薦、借閱排行榜、冷門書推薦的圖書信息表類似,主要包括圖書的索書號(hào)、書名、作者、出版社、ISBN號(hào)等。

2.3 PHP對(duì)數(shù)據(jù)庫的數(shù)據(jù)操作

PHP對(duì)MySQL數(shù)據(jù)庫的數(shù)據(jù)訪問和操作比較簡(jiǎn)易,包括連接數(shù)據(jù)庫,選擇數(shù)據(jù)庫,通過mysql_query()、mysql_fetch_array()等語句可以直接實(shí)現(xiàn)對(duì)數(shù)據(jù)庫數(shù)據(jù)的查找和獲取。

例如,下面一段代碼是對(duì)圖書信息數(shù)據(jù)的獲取顯示:

3 網(wǎng)站設(shè)計(jì)中遇到的問題和解決辦法

3.1書目推薦的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫的問題

由于書目推薦的具體信息是由圖書館采編部提供的EXCEL表,要將其導(dǎo)入到數(shù)據(jù)庫,而phpMyAdmin不能直接導(dǎo)入xls格式的數(shù)據(jù),需要使用Access轉(zhuǎn)換為.mdb格式,再使用MySQL-Front軟件導(dǎo)入到MySQL。其方法和操作都很簡(jiǎn)單快捷,也方便圖書館采編部提供數(shù)據(jù)。

3.2中文亂碼問題

PHP頁面編碼必須和數(shù)據(jù)庫連接編碼一致,否則就會(huì)出現(xiàn)亂碼。

(一)PHP頁面的編碼

使用 標(biāo)簽設(shè)置頁面編碼 ,xxx可以為GB2312,GBK,UTF-8等,采用這種方式來告訴瀏覽器顯示這個(gè)頁面的時(shí)候采用什么編碼,這樣才不會(huì)造成編碼錯(cuò)誤而產(chǎn)生亂碼。但是有的時(shí)候我們會(huì)發(fā)現(xiàn)有了這句還是不行,不管xxx是哪一種,瀏覽器采用的始終都是一種編碼。

header("content-type:text/html; charset=xxx"); 這個(gè)函數(shù)header()的作用是把括號(hào)里面的信息發(fā)到http標(biāo)頭。https標(biāo)頭是服務(wù)器以HTTP協(xié)議傳送HTML信息到瀏覽器前所送出的字串。meta標(biāo)簽是屬于html信息的,而header()發(fā)送的內(nèi)容先到達(dá)瀏覽器。加入一個(gè)php頁面既有header("content-type:text/html; charset=xxx"),又有,瀏覽器就只認(rèn)前者h(yuǎn)ttp標(biāo)頭而不認(rèn)meta了。

(二)MySQL數(shù)據(jù)庫編碼

PHP 程序在查詢數(shù)據(jù)庫之前,首先執(zhí)行 mysql_query(“SET NAMES ‘編碼’”); SET NAMES 顯示客戶端發(fā)送的 SQL 語句中使用什么字符集,不僅告訴服務(wù)器將從客戶端傳來的信息采用的字符集,它還為服務(wù)器發(fā)送回客戶端的結(jié)果指定了字符集。編碼和PHP編碼要一致,如果PHP編碼是GB2312,那么MySQL編碼就是GB2312,如果是UTF-8,那么MySQL編碼就是 UTF8,這樣插入或檢索數(shù)據(jù)時(shí)就不會(huì)出現(xiàn)亂碼了。

4 結(jié)論

本文利用現(xiàn)在發(fā)達(dá)的網(wǎng)絡(luò)和成熟的PHP技術(shù),將圖書館最新訂購的圖書和館藏文獻(xiàn)資源經(jīng)過精心篩選,通過圖書館網(wǎng)站將書目信息展現(xiàn)給讀者,是當(dāng)前信息時(shí)代下宣傳圖書館的又一種方式,不僅有利于讀者更快捷、更方便地使用館藏資源,而且有利于促進(jìn)館藏資源的開發(fā)和利用。

參考文獻(xiàn):

[1]鄒天思,孫鵬.PHP從入門到精通[M].北京:清華大學(xué)出版社,2008.

[2]黃桂金,于永軍,唐有明.PHP+MySQL完全學(xué)習(xí)手冊(cè)[M].北京:清華大學(xué)出版社,2008.

[3]張旭東,陳華智,黃炳強(qiáng).Dreamweaver8+PHP動(dòng)態(tài)網(wǎng)站開發(fā)從入門到精通[M].北京:人民郵電出版社,2007.

[4]張軍偉.基于PHP的高校教學(xué)管理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2011(1):63-65.

[5]唐寶福,黃建敬.基于PHP的圖書館信息數(shù)據(jù)庫系統(tǒng)開發(fā)[J].龍巖學(xué)院學(xué)報(bào),2007(3):133-135.

[6]孫星.淺談PHP技術(shù)[J].信息技術(shù),2011(10):31-32.

[7]賈素來.使用PHP和MySQL開發(fā)動(dòng)態(tài)網(wǎng)站[J].大眾科技,2011(3):14-15.

[8]朱海巖.PHP與MySQL Web應(yīng)用平臺(tái)中文亂碼問題的研究[J].赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版),2011(8):36-37.

[9]杜闖.PHP在動(dòng)態(tài)網(wǎng)站開發(fā)中的優(yōu)勢(shì)[J].電腦知識(shí)與技術(shù),2010(13):3342-3344.

[10]余肖生,易.基于PHP的開發(fā)環(huán)境搭建與網(wǎng)站設(shè)計(jì)實(shí)現(xiàn)[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2011(3):74-77.

劉新霞(1985-),女,碩士,南京財(cái)經(jīng)大學(xué)圖書館

篇9

1.引言:目前動(dòng)態(tài)網(wǎng)站設(shè)計(jì)技術(shù)主要有:利用Perl/C++/Delphi等開發(fā)的CGI,兩種有名的API-ISAPI/NSAPI,還有ColdFusion,以及最近幾年流行起來的3p技術(shù)-ASP,PHP,JSP(據(jù)Internet上有關(guān)網(wǎng)站統(tǒng)計(jì)約有近百種);ASP-AtiveServerPage,由微軟公司開發(fā),是一個(gè)WEB服務(wù)器端的開發(fā)環(huán)境,主要采用腳本語言VBScript(或javascript/perl等)作為自己的開發(fā)語言,可用ODBC或直接驅(qū)動(dòng)法訪問Window平臺(tái)的數(shù)據(jù)庫。PHP-PersonServerPage,是由Rasmus個(gè)人創(chuàng)立的一種跨平臺(tái)的服務(wù)器端的嵌入式腳本語言.它大量地借用C,Java和Perl語言的語法,并耦合PHP自己的特性,.是一種很有個(gè)性的網(wǎng)站開發(fā)語言,它支持目前絕大多數(shù)數(shù)據(jù)庫。JSP-JavaServerPage,是Sun公司推出的新一代站點(diǎn)開發(fā)語言,Sun公司除Java應(yīng)用程序和JavaApplet之外,又創(chuàng)立了JSP,其可以在Serverlet和JavaBean的支持下,完成功能強(qiáng)大的站點(diǎn)程序開發(fā),特別是有許多訪問數(shù)據(jù)庫的方法。在電子商務(wù)平臺(tái)設(shè)計(jì)中,主要需要解決"網(wǎng)站結(jié)構(gòu)的設(shè)計(jì)","注冊(cè)界面","交易界面","后臺(tái)數(shù)據(jù)庫",以及"配套模塊"諸如購物/用戶/論壇/反饋/搜索/會(huì)話等設(shè)計(jì);考慮篇幅,本文只給出統(tǒng)一的前臺(tái)界面及后臺(tái)數(shù)據(jù)庫的3p設(shè)計(jì)方法;可以說ASP,PHP,JSP與網(wǎng)絡(luò)數(shù)據(jù)庫的操作是電子商務(wù)網(wǎng)站平臺(tái)設(shè)計(jì)的堅(jiān)強(qiáng)基石。

2.構(gòu)建三種設(shè)計(jì)技術(shù)的運(yùn)行環(huán)境

2.1構(gòu)建ASP的運(yùn)行環(huán)境:NT5.0Server,IIS5.0,ASP3.0。安裝Windows2000Server(NT5.0Server)時(shí)選擇IIS5.0有關(guān)選項(xiàng)。安裝完后ASP3.0便內(nèi)嵌于IIS5.0中。測(cè)試ASP:啟動(dòng)瀏覽器,在地址欄處輸入127.0.0.1:80/default.asp,若瀏覽到IIS服務(wù)器的ASP歡迎頁面,說明安裝成功

2.2構(gòu)建PHP4的運(yùn)行環(huán)境:NT5.0Server,Apache1.3.12php4.0安裝支持PHP的web服務(wù)器Apache1.3.12,將Apache服務(wù)器壓縮文件解壓縮,根據(jù)提示進(jìn)行整個(gè)安裝過程,自己選擇安裝到目錄d:\apache下。安裝PHP4,將PHP4壓縮文件解壓縮到d:\php4即可,同時(shí)將其中的php.ini-dist文件拷貝到winnt目錄中,將文件更名為php.ini,打開該文件將其中extension_dir設(shè)置為:d:/php4,并加載擴(kuò)展模塊:將文件中含有;extention=*.dll的各項(xiàng)前面的";"號(hào)去掉即可;修改設(shè)置Aphache服務(wù)器,用文本編輯器編輯目錄d:\aphache目錄下的子目錄conf下名為httpd.conf的文本文件,首先將"#ServerName*"這一行下加入"ServerName127.0.0.1/",其次將"Port80"改為"Port81(或其他與IIS5.0不沖突的端口)",再其次設(shè)置更改Apache虛擬目錄,將"Documentroot"d:/Apache/htdocs""改為Documentroot"d:/trade"(該目錄即是電子商務(wù)網(wǎng)站目錄,可用任意方法建立目錄trade),最后加入支持php4的如下語句:ScriptAlias/php4/"d:/php4/"AddTypeapplication/x-httpd-php.phpAddTypeapplication/x-httpd-php.phtmlActionapplication/x-httpd-php4"/php4/php.exe";測(cè)試php:完成上述步驟后,在d:\trade目錄下,用如何文本編輯器,生成擴(kuò)展名為.php(或phtml)的文件test.php,在文件中輸入如下php代碼,存盤后,啟動(dòng)Apache,接著你在瀏覽器中輸入:127.0.0.1:81/test.php,若看到php的版本和擴(kuò)展模塊等信息,說明環(huán)境安裝設(shè)置成功。

2.3構(gòu)建JSP的運(yùn)行環(huán)境:NT5.0Server,Resin1.13,jdk1.3安裝Java編譯器jdk1.3:運(yùn)行jdk1_3-win.exe,按照提示完成安裝即可,將其安裝在d:\java1.3目錄,也可安裝在其他目錄。設(shè)置系統(tǒng)環(huán)境參數(shù):控制面板/系統(tǒng)/環(huán)境頁中選擇path參數(shù)加入d:\jdk1.3\bin;增加新的環(huán)境參數(shù)classpath=d:\jdk1.3\lib\tools.jar;d:\jdk1.3\lib\dt.jar;,然后重新啟動(dòng)計(jì)算機(jī)即可安裝支持JSP的web服務(wù)器Resin1.1.3,將RESIN-1.1.3.zip釋放為d:\Resin1.1.3即可。配置服務(wù)器端口,打開d:/resin1.1.3/conf/目錄下的resin.conf文件在

8080

標(biāo)簽處將端口設(shè)置為82(在我的NT5.0上裝有三個(gè)服務(wù)器,這樣三個(gè)服務(wù)器的端口分別為IIS:80;Apache:81;Resin:82其實(shí)也可設(shè)置為其他互不沖突的端口號(hào)).測(cè)試JSP:?jiǎn)?dòng)Resin服務(wù)器,啟動(dòng)瀏覽器,在地址欄處輸入127.0.0.1:82/,若瀏覽到Resin服務(wù)器的JSP歡迎頁面,說明安裝成功

3生成三種格式的動(dòng)態(tài)表單頁面為了通用,這里采用可能用到的表單對(duì)象為例,至于下面設(shè)計(jì)具體數(shù)據(jù)表用到的字段,只要轉(zhuǎn)成給出的表單域相應(yīng)對(duì)象即可.

3.1用ASP動(dòng)態(tài)生成與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交流的操作表單:form.asp:生成表單域頭:生成普通文本:生成密碼文本:生成滾動(dòng)文本:生成單選:生成復(fù)選:生成列表框:生成提交按鈕生成重填按鈕生成表單域尾

3.2用PHP動(dòng)態(tài)生成與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交流的操作表單:form.php生成表單域頭:"?>生成普通文本:"?>生成密碼文本:"?>生成滾動(dòng)文本:"?>生成單選:"?>生成復(fù)選:"?>生成列表框:網(wǎng)絡(luò)數(shù)據(jù)庫Asp技術(shù)Php技術(shù)Jsp技術(shù)網(wǎng)站設(shè)計(jì)"?>生成提交按鈕"?>生成重填按鈕"?>生成表單域尾"?>

3.3用JSP動(dòng)態(tài)生成與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交流的操作表單form.jsp生成表單域頭:生成普通文本:生成密碼文本:生成滾動(dòng)文本:生成單選:生成復(fù)選:生成列表框:生成提交按鈕生成重填按鈕生成表單域尾

4設(shè)計(jì)用于存儲(chǔ)商務(wù)網(wǎng)站交互數(shù)據(jù)的MySql數(shù)據(jù)庫

4.1啟動(dòng)MySql數(shù)據(jù)庫服務(wù)器(MySql的安裝及ODBC驅(qū)動(dòng)程序的安裝與設(shè)置請(qǐng)參閱相關(guān)書籍)可在NT5.0下用啟動(dòng)服務(wù)法/NET命令法/命令窗口鍵入MySqld-shareware法,啟動(dòng)MySql數(shù)據(jù)庫服務(wù)器,啟動(dòng)數(shù)據(jù)庫服務(wù)器后,在d:\mysql\bin>提示符下鍵入mysql-h127.0.0.1-uroot即可出現(xiàn)mysql>提示符,從這開始即可進(jìn)行對(duì)MySql數(shù)據(jù)庫的各種操作。若要退出可鍵入quit/exit,若要關(guān)閉數(shù)據(jù)庫服務(wù)器,可在d:\mysql\bin>提示符下鍵mysqladmin-urootshutdown4.2建立MySql數(shù)據(jù)庫在MySql數(shù)據(jù)庫的提示符mysql>鍵入Createdatabasetradedb;(或go)

4.2.建立MySql數(shù)據(jù)庫表這里以商務(wù)網(wǎng)站中常用的幾種數(shù)據(jù)表為例,主要用到的數(shù)據(jù)表和生成數(shù)據(jù)表的SQL代碼如下:(這里的數(shù)據(jù)表字段只要分別對(duì)應(yīng)上述表單域?qū)ο蠹纯蓪?shí)際操作,數(shù)據(jù)表統(tǒng)一用tablename表示)客戶登錄管理數(shù)據(jù)表CREATETABLEusers(IDintnotnullauto_increment,UserNamevarchar(30)notnull,Passwordvarchar(20)notnull)客戶信息數(shù)據(jù)表CREATETABLEusermessage(UserNamevarchar(30)notnull,Emailvarchar(80)notnull,Addressvarchar(120)notnull,Faxvarchar(40)null,Phonevarchar(40)notnull,Cerreycardvarchar(50)notnull)客戶定購商品數(shù)據(jù)表CREATETABLEcatalog(ProductIdintnotnull,Namevarchar(64)notnull,Pricefloat(6,2)notnull,Descriptiontextnull)

5設(shè)計(jì)處理表單數(shù)據(jù)的3p程序

5.1設(shè)計(jì)處理表單數(shù)據(jù)的ASP程序form_cl.asp建立與數(shù)據(jù)庫的連接:這里采用直接驅(qū)動(dòng)法Setconn=Server.CreateObject("ADODB.Connection");conn.open"driver={MySQL};server=localhost;uid=user;pwd=xxxxxx;database=tradedb"獲取表單提交的數(shù)據(jù):data1=request("ptwbk");data2=request("mmwbk");data3=request("gdwbk")data4=request("dxk");data5=request("fxk");data6=request("lbk")用SQL語句對(duì)數(shù)據(jù)庫進(jìn)行操作查詢數(shù)據(jù)記錄:sql="select*fromtablename";setrs=conn.execute(sql)"增加數(shù)據(jù)記錄:sql="insertintotablename(ptwbk,mmwbk,gdwbk,dxk,fxk,lbk)values(''''data1'''',''''data2'''',''''data3'''',''''data4'''',''''data5'''',''''data5'''')";setrs=conn.execute(sql)更改某條數(shù)據(jù)記錄:sql="updatetablenamesetdata1="request(ptwbk)",whereID="num";setrs=conn.execute(sql)刪除某條數(shù)據(jù)記錄:sql="deletefromtablenamewhereID="num";setrs=conn.execute(sql)將SQL語句處理的數(shù)據(jù)結(jié)果輸出Response.Write"

"Response.Write""Fori=0tors.Fields.Count-1Response.WRITE""&rs.Fields(i).Name&""NextResponse.Write"

"WhileNotrs.EOFResponse.Write""Fori=0tors.Fields.Count-1Response.WRITE""&rs.Fields(i).Value&""NextResponse.Write"

"rs.MoveNextWendResponse.Write"

"關(guān)閉數(shù)據(jù)庫:rs.close;conn.Close

5.2設(shè)計(jì)處理表單數(shù)據(jù)的PHP程序form_cl.php建立與數(shù)據(jù)庫的連接:這里采用PHP的MySql函數(shù)法(也可用ODBC函數(shù)法)$conn=odbc_connect("localhost","user","xxxxxx");選擇數(shù)據(jù)庫:mysql_select_db("tradedb","$conn");獲去表單提交的數(shù)據(jù):$data1=$ptwbk;$data2=$mmwbk;$data3=$gdwbk;$data4=$dxk;$data5=$fxk;$data6=$lbk;用SQL語句對(duì)數(shù)據(jù)庫進(jìn)行操作查詢數(shù)據(jù)記錄:$sql="select*fromtablename";$result=odbc_do($conn,$sql);增加數(shù)據(jù)記錄:$sql="insertintotablename(ptwbk,mmwbk,gdwbk,dxk,fxk,lbk)values(''''$data1'''',''''$data2'''',''''$data3'''',''''$data4'''',''''$data5'''',''''$data6'''')";$result=odbc_do($conn,$sql);更改某條數(shù)據(jù)記錄:$sql="updatetablenameset$data1=ptwbkwhereID=num"$result=odbc_do($conn,$sql);刪除某條數(shù)據(jù)記錄:$sql="deletefromtablenamewhereID=num";$result=odbc_do($conn,$sql);將SQL語句處理的數(shù)據(jù)結(jié)果輸出odbc_result_all($result,"border=1");關(guān)閉數(shù)據(jù)庫:odbc_close($conn);

5.3設(shè)計(jì)處理表單數(shù)據(jù)的JSP程序form_cl.jsp建立與數(shù)據(jù)庫的連接:這里采用JDBC-ODBC橋生成JavaBean法創(chuàng)建一個(gè)JavaBean命名為conndb.java,并保存在d:/resin1.1.3/doc/web-inf/classes/trade目錄下,代碼如下:(限于篇幅這里沒按標(biāo)準(zhǔn)書寫,而采用不換行寫法,其他類同)packagetrade;importjava.sql.*;publicclassconndb{Stringurl="jdbc:inetdae:localhost";Stringlogin="user";Stringpassword="xxxxxx";StringsDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";StringsConnStr="jdbc:odbc:Dsnmysql";Connectionconn=null;ResultSetrs=null;publicconndb(){try{Class.forName(sDBDriver);Connectionconn=DriverManager.getConnection(url,login,password);}catch(java.lang.ClassNotFoundExceptione){System.err.println("conndb():"+e.getMessage());}}Public/ResultSet/executeQuery(String/sql)/{rs=null;try{conn=DriverManager.getConnection(sConnStr);Statementstmt=conn.createStatement();rs=stmt.executeQuery(sql);}catch(SQLExceptionex){System.err.println("aq.executeQuery:"+ex.getMessage());}returnrs;}}然后用javac編譯conndb.java生成與其同目錄的conndb.class文件,在form_cl.jsp文件中加入如下標(biāo)簽即可建立與數(shù)據(jù)庫的連接獲去表單提交的數(shù)據(jù):Stringdata1=request.getParameter("ptwbk");Stringdata2=request.getParameter("mmwbk")Stringdata3=request.getParameter("gdwbk")Stringdata4=request.getParameter("dxk")Stringdata5=request.getParameter("fxk")Stringdata5=request.getParameter("lbk")語句對(duì)數(shù)據(jù)庫進(jìn)行操作查詢數(shù)據(jù)記錄:Stringsql="select*fromtablename";connbean.executeQuery(sql);增加數(shù)據(jù)記錄:Stringsql="insertintotablenamevalues(''''"+data1+"'''',''''"+data2+"'''',''''"+data3+"'''',''''"+data4+"''''+"'''',''''"+data5+"'''',''''"+data6+''''")";connbean.executeQuery(sql);更改某條數(shù)據(jù)記錄:Stringsql="updatetablenamesetdata1=''''"+ptwbk+"'''',data2=''''"+mmvbk+"'''',data3=''''"+gdwbk+"''''whereID=''''"+num+"''''";connbean.executeQuery(sql)刪除某條數(shù)據(jù)記錄:Stringsql="deletefromtablenamewhereID=''''"+num+"''''";connbean.executeQuery(sql);將SQL語句處理的數(shù)據(jù)結(jié)果輸出ResultSetrs=connbean.executeQuery(sql);While(rs.next()){out.print("

"+rs.getString("ptwbk")+"

");out.print("

"+rs.getString("mmvbk")+"

");out.print("

"+rs.getString("gdwbk")+"

");out.print("

"+rs.getString("dxk")+"

");out.print("

"+rs.getString("fxk")+"

");out.print("

"+rs.getString("lbk")+"

");}關(guān)閉數(shù)據(jù)庫:rs.close();

6三種電子商務(wù)網(wǎng)站設(shè)計(jì)技術(shù)綜述

6.1主要特性:可見下表設(shè)計(jì)技術(shù)運(yùn)行平臺(tái)服務(wù)器開發(fā)程序擴(kuò)展組件ASPWindows系列IISVbscript/Jscript/PerlActiveXPHPUnix系列,Novell,WindowsApache等許多服務(wù)器phpFunctionJSPUnix系列,Novell,WindowsResin等許多服務(wù)器JavaJavaBean

6.2連接數(shù)據(jù)庫的方法:通過上述操作可看出,本文采用了三種操作MySql數(shù)據(jù)庫的方法,Asp采用直接驅(qū)動(dòng)法,Php采用MySql函數(shù)法,Jsp采用JDBC-ODBC/JavaBean法

6.3網(wǎng)站結(jié)構(gòu)設(shè)計(jì)考慮篇幅,本文只給出了Widows平臺(tái)上,電子商務(wù)網(wǎng)站設(shè)計(jì)中的主要環(huán)節(jié)的代碼設(shè)計(jì),對(duì)于Linux平臺(tái)、網(wǎng)站結(jié)構(gòu)、各個(gè)功能模塊設(shè)計(jì)等論題,作者已經(jīng)有兩篇這方面的論文在核心刊物上待發(fā)表,這里不便公開.

篇10

關(guān)鍵詞:信息技術(shù);安全性;高可用性;數(shù)據(jù)庫

0引言

面金融市場(chǎng)的激烈競(jìng)爭(zhēng)和信息技術(shù)的飛速發(fā)展,銀行的科技體系建設(shè)呈現(xiàn)了“數(shù)據(jù)集中化、業(yè)務(wù)綜合化、管理扁平化、決策科學(xué)化”的發(fā)展趨勢(shì)。與業(yè)務(wù)相關(guān)的后臺(tái)數(shù)據(jù)庫中的業(yè)務(wù)數(shù)據(jù)量也在成幾何量級(jí)增長(zhǎng)。由于大型商業(yè)銀行內(nèi)部業(yè)務(wù)模式種類繁多,交易流程復(fù)雜,需要根據(jù)不同的業(yè)務(wù)規(guī)則和數(shù)據(jù)特點(diǎn),選取不同的數(shù)據(jù)庫。目前,在商業(yè)銀行信息系統(tǒng)體系中,涉及到的數(shù)據(jù)庫主要包括DB2、Oracle、SQL Server,部分系統(tǒng)還用到了MySql等開源數(shù)據(jù)庫。

1DB2數(shù)據(jù)庫

1.1DB2簡(jiǎn)介

DB2全稱為IBM DB2,是美國IBM公司開發(fā)的一套關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它主要的運(yùn)行環(huán)境為UNIX、Linux、z/OS,以及Windows服務(wù)器。DB2主要應(yīng)用于大型應(yīng)用系統(tǒng),具有較好的可伸縮性,可支持從大型機(jī)到單用戶環(huán)境。DB2提供了高層次的數(shù)據(jù)利用性、完整性、安全性、可恢復(fù)性,以及小規(guī)模到大規(guī)模應(yīng)用程序的執(zhí)行能力,具有與平臺(tái)無關(guān)的基本功能和SQL命令。

1.2 DB2在銀行的應(yīng)用

雖然銀行業(yè)中后臺(tái)信息系統(tǒng)數(shù)量眾多,但其主要工作是進(jìn)行各種賬務(wù)交易管理,對(duì)于需要進(jìn)行大量賬務(wù)處理和計(jì)算的銀行信息系統(tǒng)普遍采用DB2數(shù)據(jù)庫。銀行系統(tǒng)要求高穩(wěn)定性、高可靠性和高安全性,Unix+DB2的組合對(duì)銀行的系統(tǒng)高要求滿足的較好。IBM提供的主機(jī)和數(shù)據(jù)庫的解決方案,在很多銀行都有成熟的案例。

對(duì)于大型的商業(yè)銀行,銀行系統(tǒng)每天處理的請(qǐng)求可能要上億次,DB2數(shù)據(jù)庫對(duì)海量數(shù)據(jù)的管理更是十分出色。作為世界上最快的數(shù)據(jù)庫之一,它可以在一天內(nèi)完成9000多萬次文本搜索,且每次的響應(yīng)時(shí)間都小于半秒。銀行信息系統(tǒng)中的服務(wù)器有很大一部分都是IBM的大型機(jī)和小型機(jī),在數(shù)據(jù)庫層面,選擇IBM的DB2數(shù)據(jù)可以更好的發(fā)揮服務(wù)器和數(shù)據(jù)庫的優(yōu)勢(shì)。

2 ORACLE數(shù)據(jù)庫

2.1 ORACLE簡(jiǎn)介

Oracle是美國Oracle公司提供的以分布式數(shù)據(jù)庫為核心的一組軟件產(chǎn)品,是目前最流行的C/S或B/S體系結(jié)構(gòu)的數(shù)據(jù)庫之一。它具有完整的數(shù)據(jù)管理功能;作為一個(gè)關(guān)系數(shù)據(jù)庫,它是一個(gè)完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫,它實(shí)現(xiàn)了分布式處理功能。系統(tǒng)可移植性好、使用方便、功能強(qiáng),適用于各類大、中、小、微機(jī)環(huán)境。它是一種高效率、可靠性好的適應(yīng)高吞吐量的數(shù)據(jù)庫解決方案。

2.2 ORACLE在銀行的應(yīng)用

Oracle可以支持Unix、Linux和Windows等主流操作系統(tǒng),而且做為專業(yè)做數(shù)據(jù)庫起家的Oracle,配套開發(fā)了許多高可用組件,為大型的應(yīng)用系統(tǒng)提供了成熟完備的數(shù)據(jù)庫高可用解決方案,如:Oracle RAC、GodenGate、Data Guard等。這些組件在銀行的信息系統(tǒng)中使用相當(dāng)廣泛,比如網(wǎng)上銀行系統(tǒng)、手機(jī)銀行和各類臺(tái)帳管理系統(tǒng)等。

完善災(zāi)備系統(tǒng)是銀行建設(shè)中至關(guān)重要的一項(xiàng)工作,Oracle公司提供數(shù)據(jù)庫級(jí)別的異地災(zāi)備技術(shù),這為銀行信息系統(tǒng)的異地多活提供了可行性。并且Oracle在數(shù)據(jù)庫的技術(shù)服務(wù)支持方面也相當(dāng)完備,很多銀行并沒有技術(shù)能力很強(qiáng)的數(shù)據(jù)庫維護(hù)人員,Oracle可以提供多種層次的數(shù)據(jù)庫維保服務(wù),為銀行系統(tǒng)的高效可靠的運(yùn)行保駕護(hù)航。

隨著Oracle 12C的,Oracle在云計(jì)算和大數(shù)據(jù)方面的優(yōu)勢(shì)也逐漸顯現(xiàn),各大銀行都有海量的業(yè)務(wù)和客戶數(shù)據(jù),如何利用其進(jìn)行精準(zhǔn)營銷已經(jīng)成為各大銀行業(yè)務(wù)的新訴求。使用Oracle的最新產(chǎn)品,可以對(duì)客戶數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘和大數(shù)據(jù)分析,為銀行業(yè)務(wù)部門提供強(qiáng)有力的支持。

3 SOL SERVER數(shù)據(jù)庫

SQL Server微軟公司推出的一種關(guān)系型數(shù)據(jù)庫系統(tǒng)。它是一個(gè)可擴(kuò)展的、高性能的、為分布式客戶機(jī)/服務(wù)器計(jì)算所設(shè)計(jì)的數(shù)據(jù)庫管理系統(tǒng),實(shí)現(xiàn)了與WindowsNT的有機(jī)結(jié)合,提供了基于事務(wù)的企業(yè)級(jí)信息管理系統(tǒng)方案。

SQL Server以其內(nèi)置的數(shù)據(jù)復(fù)制功能、強(qiáng)大的管理工具、與Internet的緊密集成和開放的系統(tǒng)結(jié)構(gòu)為廣大的用戶、開發(fā)人員和系統(tǒng)集成商提供了一個(gè)出眾的數(shù)據(jù)庫平臺(tái)。由于SQL Server只能在Windows平臺(tái)上運(yùn)行,沒有絲毫的開放性,這就限制了它的應(yīng)用范圍。Windows操作系統(tǒng)由于其自身的限制,每運(yùn)行一段時(shí)間就需要重啟,這對(duì)需要提供7*24小時(shí)不停服務(wù)的銀行系統(tǒng)帶來極大的問題。SQL Server在銀行內(nèi)部系統(tǒng)中應(yīng)用較少,主要在一些由微軟公司提供的應(yīng)用系統(tǒng)。

4 MYSQL數(shù)據(jù)庫

MySql是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),MySql是一個(gè)真正的多用戶、多線程數(shù)據(jù)庫服務(wù)器。MySql雖然是免費(fèi)的,但同Oracle,DB2等商業(yè)數(shù)據(jù)庫一樣,具有數(shù)據(jù)庫系統(tǒng)的通用性。

相較于DB2、Oracle和SQL Server數(shù)據(jù)庫,MySql數(shù)據(jù)庫更輕量級(jí),對(duì)服務(wù)器資源要求低,但又能提供高并發(fā)和大事務(wù)處理能力。但是MySql官方并不能提供成熟的高可用解決方案,對(duì)于銀行端來說,更希望使用成熟的高可用產(chǎn)品,而且沒有很多的技術(shù)實(shí)力和精力去做二次開發(fā)和改進(jìn),所以MySql在銀行信息系統(tǒng)中使用的并不多。

現(xiàn)在有一些銀行在國家去IOE的號(hào)召下,開始嘗試在一些新興的互聯(lián)網(wǎng)金融產(chǎn)品中引用MySql數(shù)據(jù)庫,配合成熟的第三方高可用組件,也取得了不錯(cuò)的效果。