日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Flex數(shù)據(jù)庫連接的方法集錦

本文和大家重點討論一下連接Flex數(shù)據(jù)庫三種方法,F(xiàn)lex是不能直接連接數(shù)據(jù)庫的,這一點大家需要知道,它只能間接地連接數(shù)據(jù)庫。Flex中提供了三種方式:HttpService,WebService和RemoteObject。

公司主營業(yè)務:成都網(wǎng)站制作、網(wǎng)站設計、外貿(mào)網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出碌曲免費做網(wǎng)站回饋大家。

連接Flex數(shù)據(jù)庫三種方法

首先,做一點說明。Flex是不能直接連接數(shù)據(jù)庫的,這一點大家需要知道,它只能間接地進行連接Flex數(shù)據(jù)庫。Flex中提供了三種方式:HttpService,WebService和RemoteObject。其中HttpService可以直接獲取XML中的數(shù)據(jù),還可以通過JSP,ASP以及PHP讀取數(shù)據(jù)庫中的數(shù)據(jù),這個比較簡單,而且網(wǎng)上也有很多例子,我就不多說了。WebService我不懂,請自己查資料。我一直用的是JAVA對象連接數(shù)據(jù)庫,感覺這個挺方便,而且J2EE的技術已經(jīng)很成熟。今天的教程就是以Flex+JAVA+SQLServer獲取數(shù)據(jù)庫公告信息為例簡單說一下RemoteObject的用法。

前提

1.確保你安裝了FlexDataService。這個對于單個CUP無限APP是免費的,可以去Adobe下載。如果只是讀取XML文件是不需要這個的,連接數(shù)據(jù)庫就需要它了。
2.安裝了FlexBuilder或者有FlexSDK。我這里使用的是FlexBuilder(IDE就是方便啊^_^)。
3.安裝了SQLServer數(shù)據(jù)庫。
4.安裝了JRUN或者tomcat或其它的J2EE容器,因為發(fā)布的時候我們的程序要運行在J2EE平臺上。
5.安裝了JDK。

第一步:創(chuàng)建Flex數(shù)據(jù)庫

這里我們有一個公告表,表名為Bulletin。結(jié)構(gòu)如下:

字段名稱字段類型說明
ID自動編號自動編號
titleNvarchar(100)題目
datedatatime日期
authorNvarchar(20)作者
contentntext內(nèi)容
在數(shù)據(jù)庫中創(chuàng)建這個表。保存之后進入下一步。#p#

第二步:在JAVA中編寫獲取公告的代碼

首先,我們要創(chuàng)建一個公告類來專門保存獲取的公告信息,代碼如下。

 
 
 
  1. NoticeInfo.java
  2. packagenet.zhuoqun.connectDB;
  3. importjava.util.Date;
  4. publicclassNoticeInfo{
  5. privateStringtitle;//標題
  6. privateStringauthor;//作者
  7. privateStringcontent;//內(nèi)容
  8. privateDatedates;//時間
  9. publicStringgetAuthor(){
  10. returnauthor;
  11. }
  12. publicvoidsetAuthor(Stringauthor){
  13. this.author=author;
  14. }
  15. ………………//其它get和set方法。
  16. }

創(chuàng)建好這個之后我們要創(chuàng)建一個數(shù)據(jù)查詢類:DataServiceImpl.java來查詢Flex數(shù)據(jù)庫,并將查詢結(jié)果傳給將要創(chuàng)建的Flex程序。由于我們不清楚有多少條記錄,所以就借助一下JAVA中的ArrayList這個類,它位于java.util包中。先創(chuàng)建一個ArrayList:
ArrayListnoticeList=newArrayList();
查詢數(shù)據(jù)庫之后,每讀取一條記錄就添加到noticeList。

 
 
 
  1. while(rs.next()){
  2. NoticeInfotemp=newNoticeInfo();
  3. temp.setAuthor(rs.getString("author"));
  4. temp.setContent(rs.getString("content"));
  5. temp.setDates(rs.getDate("date"));
  6. temp.setTitle(rs.getString("title"));
  7. noticeList.add(temp);
  8. }

查詢完畢之后你就可以把這個noticeList傳回去,你也可以傳回去一個NoticeInfo數(shù)組:

 
 
 
  1. NoticeInfo[]notices=newNoticeInfo[noticeList.size()];
  2. for(inti=0;i
  3. notices=(NoticeInfo)noticeList.get(i);
  4. }
  5. returnnotices;

我這里用的是后一種方法。如果你直接把noticeList傳回去的話,記住一點,JAVA的ArrayList類型的對象到了Flex中會變成ArrayCollection類型的。
現(xiàn)在JAVA部分的代碼就寫好了。
DataServiceImpl.java的全部代碼如下:

 
 
 
  1. packagenet.zhuoqun.connectDB;
  2. importjava.sql.*;
  3. importjava.util.ArrayList;
  4. importjava.util.Date;
  5. publicclassDataServiceImpl{
  6. privateConnectionconn=null;
  7. privateStatementstmt=null;
  8. //以下是數(shù)據(jù)庫以及驅(qū)動信息
  9. publicfinalstaticStringDRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";
  10. publicfinalstaticStringCONN_STR_PRE="jdbc:microsoft:sqlserver://";
  11. publicfinalstaticStringHOST_NAME="localhost:1433;";
  12. publicfinalstaticStringDATABASE_NAME="DatabaseName=mydata";
  13. publicfinalstaticStringUSERNAME="aaa";
  14. publicfinalstaticStringPASSWORD="aaa";
  15. publicDataServiceImpl(){
  16. }
  17. //查詢數(shù)據(jù)庫
  18. privateResultSetexecuteQuery(StringsqlText){
  19. try{
  20. Class.forName(DRIVER);
  21. }catch(ClassNotFoundExceptione){
  22. e.printStackTrace();
  23. }
  24. try{
  25. conn=DriverManager.getConnection(CONN_STR_PRE+HOST_NAME+DATABASE_NAME,USERNAME,PASSWORD);
  26. stmt=conn.createStatement();
  27. ResultSetrs=stmt.executeQuery(sqlText);
  28. returnrs;
  29. }catch(SQLExceptione){
  30. e.printStackTrace();
  31. }
  32. returnnull;
  33. }
  34. //查詢公告.這個是本程序的關鍵代碼
  35. publicNoticeInfo[]getNotices(){
  36. ArrayListnoticeList=newArrayList();
  37. StringsqlText="selectauthor,content,date,titlefromBulletin";
  38. ResultSetrs=executeQuery(sqlText);
  39. try{
  40. while(rs.next()){
  41. NoticeInfotemp=newNoticeInfo();
  42. temp.setAuthor(rs.getString("author"));
  43. temp.setContent(rs.getString("content"));
  44. temp.setDates(rs.getDate("date"));
  45. temp.setTitle(rs.getString("title"));
  46. noticeList.add(temp);
  47. }
  48. NoticeInfo[]notices=newNoticeInfo[noticeList.size()];
  49. for(inti=0;i
  50. notices=(NoticeInfo)noticeList.get(i);
  51. }
  52. returnnotices;
  53. }catch(SQLExceptione){
  54. e.printStackTrace();
  55. returnnull;
  56. }
  57. }
  58. }

#p#第三步:配置FlexDataService

1,把剛才寫的JAVA文件編譯。打開FDS的安裝文件夾,將編譯的文件拷貝到\jrun4\servers\default\flex\WEB-INF\classes文件夾中,進行下面的配置。
2.打開FDS的安裝文件夾。進入jrun4\servers\default\flex\WEB-INF\flex目錄。里面是關于FlexDataService的配置文件,我們這里只看RemoteObject如何配置,其它配置信息請自己看幫助?,F(xiàn)在我們打開里面的remoting-config.xml文件。向里面添加如下信息,作為的子標簽:
程序代碼

 
 
 
  1. net.zhuoqun.connectDB.DataServiceImpl

當你設定了destination的時候,你就引用了了可以用來連接相應類的信息通道(messagingchannel)。它的id必須在文件中是獨一無二的。source屬性是指你編譯的JAVA類在classes文件夾中的路徑。由于我的DataServiceImpl類在classes\net\zhuoqun\connectDB中,所以source的值為net.zhuoqun.connectDB.DataServiceImpl。記住,不要寫.class后綴。標簽還可以有一個子標簽,其作用我在這里就不說了,大家自己看相關文檔(關于FDS的配置其實有很多東西,這些在幫助文檔里都有,我這里不多說了,也說不過來,自己看吧)。
現(xiàn)在我們已經(jīng)配置好了后臺的FDS,做完了整個程序的大部分工作,接下來就是前臺Flex程序調(diào)用的事情了。

第四步:創(chuàng)建Flex程序

打開FlexBuilder,新建一個工程ConnectDB。菜單欄中File->New->FlexProject,這時會彈出一個對話框,選擇FlexDataService,創(chuàng)建了一個Flex工程。

#p#第五步:通過RemoteObject訪問Flex數(shù)據(jù)庫

打開工程中生成的主文件ConnectDB.mxml,聲明一個RemoteObject:

程序代碼

 
 
 
  1. result="proccessResult(event.result)"fault="Alert.show(event.fault.faultString,'Error')"/>

其中destination的值是剛才我們在配置FDS的時候設定的destination。result表示在這個RemoteObject成功返回之后所要做的動作,這里我們調(diào)用一個方法proccessResult()來處理返回的數(shù)據(jù),它的參數(shù)event.result就是從服務器段獲得的數(shù)據(jù),數(shù)據(jù)是作為一個對象傳過來的。fault表示在這個RemoteObject請求失敗時要做的處理,這里我們會彈出一個顯示錯誤信息的對話框。

接下來我們要聲明一個DataGrid控件來顯示公告的標題和發(fā)布日期:

程序代碼

 
 
 

其中headerText是顯示在上方的表頭,dataField表示要顯示的數(shù)據(jù)域,為什么數(shù)據(jù)域是title和dates呢?因為我們傳回的是一個NoticeInfo對象數(shù)組,雖然它是作為一個對象傳回來的,但是其中的數(shù)據(jù)結(jié)構(gòu)并沒有變,那些數(shù)據(jù)域的名字也沒有變,所以我們可以根據(jù)NoticeInfo中的變量設定dataField。labelFunction屬性是用來格式化顯示的,因為傳回來的是格林威治時間,所以我們需要將其格式化然后顯示出來。注意,這里只是顯示兩個數(shù)據(jù)域,并不代表其它的數(shù)據(jù)都沒有了,它們?nèi)匀淮嬖?,只是沒有顯示出來。

接下來,在標簽中編寫proccessResult()方法和格式化日期的formatDate方法:
程序代碼

 
 
 
  1. privatefunctionproccessResult(result:Object):void
  2. {
  3. myDG.dataProvider=ArrayUtil.toArray(result);
  4. }
  5. privatefunctionformatDate(item:Object,column:DataGridColumn):String
  6. {
  7. returndf.format(item.dates);
  8. }//

df是一個DateFormatter,在下面會給出。關于如何格式化DataGrid的顯示
//以及DateFormatter這里就不討論了,幫助里寫得很清楚
這個函數(shù)只是簡單地將獲得的數(shù)據(jù)傳給myDG的dataProvider。result的類型是Object,因為數(shù)據(jù)是作為一個對象傳過來的。之所以調(diào)用ArrayUtil.toArray()這個方法,是因為返回的記錄可能只有一條,而myDG的dataProvider顯示單個對象的時候可能會出錯,所以安全起見先將其轉(zhuǎn)換成數(shù)組。
最后,我們編寫調(diào)用RemoteObject的方法,使其在程序啟動時就調(diào)用。

程序代碼

 
 
 
  1. privatefunctioninitApp():void
  2. {
  3. getData.getNotices();
  4. }

其中getData是RemoteObject的id,getNotices()是DataServiceImpl.java中的方法。在這里可以直接調(diào)用它。當然,如果DataServiceImpl.java有其它方法,也可以通過這種方式直接調(diào)用。

接下來設定組件創(chuàng)建完畢時調(diào)用initApp()方法,在中添加一個creationComplete屬性:
程序代碼

 
 
 
  1. fontSize="12"creationComplete="initApp()">

ConnectDB.mxml的全部代碼:
程序代碼

 
 
 
  1. fontSize="12"creationComplete="initApp()">
  2. importmx.controls.Alert;
  3. importmx.utils.ArrayUtil;
  4. privatefunctioninitApp():void
  5. {
  6. getData.getNotices();
  7. }
  8. privatefunctionproccessResult(result:Object):void
  9. {
  10. myDG.dataProvider=ArrayUtil.toArray(result);
  11. }
  12. privatefunctionformatDate(item:Object,column:DataGridColumn):String
  13. {
  14. returndf.format(item.dates);
  15. }//df是一個DateFormatter,在下面會給出。
  16. 關于如何格式化DataGrid的顯示
  17. //以及DateFormatter這里就不討論了,幫助里寫得很清楚
  18. ]]>
  19. result="proccessResult(event.result)"fault="Alert.show(event.fault.faultString,'Error')"/>

整個工程終于完成,啟動JRUN,然后運行程序,查看程序結(jié)果。如果是其他數(shù)據(jù)庫,只需要改一下數(shù)據(jù)庫驅(qū)動信息就可以了


當前題目:Flex數(shù)據(jù)庫連接的方法集錦
網(wǎng)址分享:http://www.dlmjj.cn/article/cdgjcdo.html