首先是準(zhǔn)備工作,同時(shí)這部分可以復(fù)習(xí)前面內(nèi)容:
1.建立一個(gè)mysql數(shù)據(jù)庫(kù),寫(xiě)幾個(gè)字段。
2.建立一個(gè)中間件連接數(shù)據(jù)庫(kù)。
3.編寫(xiě)E4A程序連接該數(shù)據(jù)庫(kù)。
然后就是幾個(gè)操作過(guò)程:
4.用E4A實(shí)現(xiàn)數(shù)據(jù)庫(kù)寫(xiě)入記錄
5.用E4A實(shí)現(xiàn)數(shù)據(jù)庫(kù)修改記錄
6.用E4A實(shí)現(xiàn)數(shù)據(jù)庫(kù)刪除記錄
下面分點(diǎn)寫(xiě)
?建立一個(gè)mysql數(shù)據(jù)庫(kù)
我這里有寶塔軟件,直接用吧,因?yàn)槲覀円玫街虚g件,所以我這里直接創(chuàng)建一個(gè)網(wǎng)站空間,讓它附帶數(shù)據(jù)庫(kù)。這個(gè)操作我們可以在瀏覽器用寶塔web面板完成。
上圖為寶塔web面板首頁(yè),我們可以在我們本地機(jī)上通過(guò)瀏覽器完成這些操作,就不需要遠(yuǎn)程連接服務(wù)器,很是方便。
如上圖,一步步設(shè)置好,域名我泛解析過(guò)就不用A記錄了。
接著我們?nèi)ピO(shè)置一下數(shù)據(jù)庫(kù)的字段,既然是寫(xiě)個(gè)程序那就寫(xiě)個(gè)簡(jiǎn)單的卡密驗(yàn)證系統(tǒng)吧。。
我們?cè)O(shè)置幾個(gè)字段,分別叫做ID(這個(gè)設(shè)置整數(shù)自增吧,做主鍵)、卡密(這個(gè)設(shè)置文本型)、到期時(shí)間(文本型)。如下圖:
先來(lái)建一個(gè)表,空庫(kù)是沒(méi)有表的
然后創(chuàng)建字段
發(fā)現(xiàn)出錯(cuò),ID最長(zhǎng)255個(gè)字符,這個(gè)就是INT型數(shù)字的最大長(zhǎng)度,沒(méi)想起來(lái)尷尬了~
然而折騰一陣子發(fā)現(xiàn)報(bào)錯(cuò)#1007,沒(méi)有給出錯(cuò)誤原因,錯(cuò)誤代碼查不到原因,算了,懶得搞,到服務(wù)器上用Navicat,這是寶塔面板給我們準(zhǔn)備的另一利器,相比于phpmyadmin,它更穩(wěn)定,很少出錯(cuò),如圖:
好了,下面就試試
連接上了看看里面
空空如也表都沒(méi)建。。算了重建吧。
OK,別忘了設(shè)置ID自增:
好了,保存一下,寫(xiě)第一條數(shù)據(jù)測(cè)試看看
寫(xiě)了兩條數(shù)據(jù),正常,OK先就這樣,接下來(lái)寫(xiě)中間件。
我們先去弄一下MySQL中間件,它就在E4A安裝目錄下,如圖:
這樣我們就快速到達(dá)了E4A根目錄,我們?nèi)タ纯矗?/p>
就在這里了,我們把它復(fù)制一份到桌面,免得弄錯(cuò)了就沒(méi)得搞了:
它這里自帶說(shuō)明。寫(xiě)得很詳細(xì)了
這里要填數(shù)據(jù)庫(kù)密碼,如上圖
照著下圖填:
寫(xiě)好是這個(gè)樣子:
接著保存上傳,寶塔面板就方便了:
點(diǎn)一下這個(gè)路徑
可以看到一個(gè)文件管理器,上面就有上傳按鈕,直接上傳吧,我表示什么ftp啥的都不需要。。。
訪問(wèn)一下中間件地址看看能不能用
輸入中間件地址:mysql.ray-o.cn/openapi_unsafe.php,跳到了百度那就沒(méi)錯(cuò)了,這是一個(gè)障眼法。。。
最后,經(jīng)測(cè)中間件必須使用PHP5.3,不然會(huì)出錯(cuò),這一點(diǎn)目前E4A官方未在說(shuō)明文檔提到,已反饋。
這次我就做個(gè)例子,隨便搞一下子,如下圖:
為了達(dá)到目的,我需要在上面覆蓋一層標(biāo)簽來(lái)遮蔽下面的這些東西,就像這樣:
然后我們做幾個(gè)控件讓用戶可以輸入卡密并且驗(yàn)證,如圖:
這樣就可以了,接下來(lái)寫(xiě)代碼,我有個(gè)習(xí)慣,那就是寫(xiě)一點(diǎn)測(cè)試一點(diǎn),不是全部寫(xiě)完再測(cè)試,首先我們要做的是測(cè)試數(shù)據(jù)庫(kù)是否能連上,看如下代碼:
做這個(gè)前需要先擺上一個(gè)mysql數(shù)據(jù)庫(kù)的類(lèi)庫(kù),如下圖:
接著我們?cè)賮?lái)寫(xiě)代碼:
運(yùn)行一下子:
OK,接著寫(xiě)輸入卡密驗(yàn)證哪一塊吧
我在構(gòu)思代碼的時(shí)候發(fā)現(xiàn)卡密還需要一個(gè)使用者字段,不然不知道卡密有沒(méi)有使用過(guò),所以加一個(gè)字段吧
然后寫(xiě)相關(guān)代碼,做這個(gè)中間出了些岔子,看上面終極教程的E4A排除運(yùn)行閃退故障,下面看代碼:
事件 主窗口.創(chuàng)建完畢()
MySQL數(shù)據(jù)庫(kù)1.連接數(shù)據(jù)庫(kù)("http://mysql.ray-o.cn/openapi_unsafe.php","localhost:3306","","","mysql_ray_o_cn")
結(jié)束 事件
事件 MySQL數(shù)據(jù)庫(kù)1.連接數(shù)據(jù)庫(kù)完畢(連接結(jié)果 為 邏輯型)
判斷 連接結(jié)果
分支 真
信息框("連接結(jié)果","已連接上","知道了")
分支 假
信息框("連接結(jié)果","連接失敗","知道了")
結(jié)束 判斷
結(jié)束 事件
事件 按鈕1.被單擊()
MySQL數(shù)據(jù)庫(kù)1.查詢記錄("卡密表","卡密,使用者","卡密=" & "'" & 編輯框1.內(nèi)容 & "'")
結(jié)束 事件
變量 集合內(nèi)項(xiàng)目數(shù) 為 整數(shù)型
事件 MySQL數(shù)據(jù)庫(kù)1.查詢記錄完畢(查詢結(jié)果 為 集合)
集合內(nèi)項(xiàng)目數(shù) = 查詢結(jié)果.取項(xiàng)目總數(shù)()
如果 集合內(nèi)項(xiàng)目數(shù) = 0 則
彈出提示("卡密錯(cuò)誤")
否則如果 集合內(nèi)項(xiàng)目數(shù) <> 0 則
如果 查詢結(jié)果.取項(xiàng)目(0)(1) = "" 則
MySQL數(shù)據(jù)庫(kù)1.修改記錄("卡密表","使用者=" & "'" & 手機(jī)1.取IMEI碼() & "'","卡密=" & "'" & 編輯框1.內(nèi)容 & "'")
否則如果 查詢結(jié)果.取項(xiàng)目(0)(1) <> "" 則
彈出提示("卡密已被使用過(guò)")
結(jié)束 如果
結(jié)束 如果
結(jié)束 事件
事件 MySQL數(shù)據(jù)庫(kù)1.修改記錄完畢(添加結(jié)果 為 邏輯型)
判斷 添加結(jié)果
分支 真
彈出提示("卡密激活成功")
結(jié)束 判斷
結(jié)束 事件
這里我還用了一個(gè)手機(jī)組件,看吧:
用它取IMEI碼,用來(lái)驗(yàn)證用戶身份。
下面解釋一下代碼:
這一塊寫(xiě)給我們看的,讓我們知道數(shù)據(jù)庫(kù)是不是正常連接,發(fā)布的時(shí)候需要改寫(xiě)或者刪除,用戶不需要知道數(shù)據(jù)庫(kù)正常與否,頂多當(dāng)服務(wù)器壞了的時(shí)候提示他們服務(wù)器故障,請(qǐng)聯(lián)系開(kāi)發(fā)者。
現(xiàn)在來(lái)整理一下思路:當(dāng)用戶輸入了卡密,接下來(lái)會(huì)干啥?點(diǎn)擊驗(yàn)證按鈕對(duì)吧?驗(yàn)證按鈕的組件對(duì)象名是按鈕1吧?寫(xiě)吧:
我們這句話說(shuō)的就是把卡密輸入框的卡密拿去查數(shù)據(jù)庫(kù),看看有沒(méi)有這個(gè)卡密,同時(shí)看看這個(gè)卡密的使用者是誰(shuí),注意:在MYSQL數(shù)據(jù)庫(kù)里面中文字符必須用單引號(hào)引出,但是在E4A里面做為查庫(kù)的條件,單引號(hào)是做為文本使用的,它旁邊就需要上雙引號(hào),為了穩(wěn),我們也加上單引號(hào),為了方便你們看我就一步步寫(xiě)清楚了。
然后就是查完庫(kù)返回一個(gè)結(jié)果了我們根據(jù)結(jié)果來(lái)判斷這個(gè)卡密是否有效,如果有效則注冊(cè)卡密使用者為本機(jī),如果無(wú)效給出理由:
這是一個(gè)判斷結(jié)構(gòu)的語(yǔ)句塊,分為以下幾個(gè)情況:
查不到這個(gè)卡密,反饋用戶:卡密錯(cuò)誤
查到了這個(gè)卡密,發(fā)現(xiàn)已經(jīng)被注冊(cè),反饋用戶這個(gè)卡密已被使用
查到了這個(gè)卡密,并且無(wú)人注冊(cè),反饋驗(yàn)證成功給客戶
上面我們就完成了卡密驗(yàn)證,接著我們寫(xiě)程序啟動(dòng)或者卡密驗(yàn)證成功后程序測(cè)試卡密是否過(guò)期,如果沒(méi)有過(guò)期的話就把遮住內(nèi)容的標(biāo)簽清除的操作,因?yàn)橛袃蓚€(gè)點(diǎn)要調(diào)用這個(gè)代碼,所以我們圖個(gè)方便寫(xiě)個(gè)過(guò)程吧。
最后寫(xiě)出來(lái)大概就是這些代碼:
變量 查庫(kù)命令頭 為 文本型
事件 主窗口.創(chuàng)建完畢()
MySQL數(shù)據(jù)庫(kù)1.連接數(shù)據(jù)庫(kù)("http://mysql.ray-o.cn/openapi_unsafe.php","localhost:3306","","","mysql_ray_o_cn")
結(jié)束 事件
事件 MySQL數(shù)據(jù)庫(kù)1.連接數(shù)據(jù)庫(kù)完畢(連接結(jié)果 為 邏輯型)
判斷 連接結(jié)果
分支 真
驗(yàn)證()
分支 假
信息框("連接結(jié)果","連接失敗","知道了")
結(jié)束 判斷
結(jié)束 事件
事件 按鈕1.被單擊()
查庫(kù)命令頭 = "查卡密信息"
MySQL數(shù)據(jù)庫(kù)1.查詢記錄("卡密表","卡密,使用者","卡密=" & "'" & 編輯框1.內(nèi)容 & "'")
結(jié)束 事件
變量 集合內(nèi)項(xiàng)目數(shù) 為 整數(shù)型
變量 卡密到期時(shí)間 為 整數(shù)型
變量 設(shè)備時(shí)間 為 整數(shù)型
變量 月份 為 文本型
變量 日 為 文本型
事件 MySQL數(shù)據(jù)庫(kù)1.查詢記錄完畢(查詢結(jié)果 為 集合)
集合內(nèi)項(xiàng)目數(shù) = 查詢結(jié)果.取項(xiàng)目總數(shù)()
判斷 查庫(kù)命令頭
分支 "查卡密信息"
如果 集合內(nèi)項(xiàng)目數(shù) = 0 則
彈出提示("卡密錯(cuò)誤")
否則如果 集合內(nèi)項(xiàng)目數(shù) <> 0 則
如果 查詢結(jié)果.取項(xiàng)目(0)(1) = "" 則
MySQL數(shù)據(jù)庫(kù)1.修改記錄("卡密表","使用者=" & "'" & 手機(jī)1.取IMEI碼() & "'","卡密=" & "'" & 編輯框1.內(nèi)容 & "'")
驗(yàn)證()
否則如果 查詢結(jié)果.取項(xiàng)目(0)(1) <> "" 則
彈出提示("卡密已被使用過(guò)")
結(jié)束 如果
結(jié)束 如果
分支 "查設(shè)備在卡密系統(tǒng)注冊(cè)的信息"
如果 集合內(nèi)項(xiàng)目數(shù) = 0 則
彈出提示("請(qǐng)輸入卡密完成驗(yàn)證")
否則如果 集合內(nèi)項(xiàng)目數(shù) <> 0 則
'開(kāi)始處理時(shí)間文本
卡密到期時(shí)間 = 子文本替換(查詢結(jié)果.取項(xiàng)目(0)(1),".","")
如果 取文本長(zhǎng)度(取月份(取現(xiàn)行時(shí)間())) = 1 則
月份 = 0 & 取月份(取現(xiàn)行時(shí)間())
否則
月份 = 取月份(取現(xiàn)行時(shí)間())
結(jié)束 如果
如果 取文本長(zhǎng)度(取日(取現(xiàn)行時(shí)間())) = 1 則
日 = 0 & 取日(取現(xiàn)行時(shí)間())
否則
日 = 取日(取現(xiàn)行時(shí)間())
結(jié)束 如果
設(shè)備時(shí)間 = 取年份(取現(xiàn)行時(shí)間()) & 月份 & 日
' 信息框("時(shí)間信息",卡密到期時(shí)間 & "|" & 設(shè)備時(shí)間,"確定")
'結(jié)束處理時(shí)間文本
如果 卡密到期時(shí)間 >= 設(shè)備時(shí)間 則
標(biāo)簽2.可視 = 假
編輯框1.可視 = 假
按鈕1.可視 = 假
彈出提示("通過(guò)驗(yàn)證,祝您使用愉快")
否則如果 卡密到期時(shí)間 <= 設(shè)備時(shí)間 則
彈出提示("卡密已到期")
結(jié)束 如果
結(jié)束 如果
結(jié)束 判斷
結(jié)束 事件
事件 MySQL數(shù)據(jù)庫(kù)1.修改記錄完畢(添加結(jié)果 為 邏輯型)
判斷 添加結(jié)果
分支 真
彈出提示("卡密激活成功")
結(jié)束 判斷
結(jié)束 事件
過(guò)程 驗(yàn)證()
查庫(kù)命令頭 = "查設(shè)備在卡密系統(tǒng)注冊(cè)的信息"
MySQL數(shù)據(jù)庫(kù)1.查詢記錄("卡密表","使用者,過(guò)期時(shí)間","使用者=" & "'" & 手機(jī)1.取IMEI碼() & "'")
結(jié)束 過(guò)程
說(shuō)兩個(gè)地方吧,剩下的自行體會(huì):
首先是命令頭,就是這個(gè)東西:
這個(gè)東西的作用就是我們?nèi)绻枰獌纱握{(diào)用到同一個(gè)事件,為了區(qū)分事件下應(yīng)該響應(yīng)那個(gè)代碼塊而設(shè)定的規(guī)則。
另一個(gè)點(diǎn)就是一定要注意不要數(shù)據(jù)庫(kù)連接命令寫(xiě)完了立即調(diào)查詢命令,因?yàn)檫B接命令執(zhí)行了此時(shí)正在連接還沒(méi)有連上,你去查詢肯定什么都查不到,要等連接數(shù)據(jù)庫(kù)完畢后拋出的事件里面寫(xiě)一個(gè)判斷連接成功下面再寫(xiě)這個(gè)查詢,如下圖:
這里的驗(yàn)證過(guò)程會(huì)立即調(diào)查庫(kù)指令
好了先就說(shuō)這么多吧源碼我放在論壇了,本站不支持附件。
https://www.eruyi.cn/forum.php?mod=viewthread&tid=3670&page=1&extra=#pid62715
更多建議: