成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

連接Flex數據庫三種方法

開發 后端
連接Flex數據庫三種方法你是否了解,Flex是不能直接連接數據庫的,這一點大家需要知道,它只能間接地連接數據庫。

本文和大家重點討論一下連接Flex數據庫三種方法,Flex中提供了三種方式:HttpService,WebService和RemoteObject。其中HttpService可以直接獲取XML中的數據,還可以通過JSP,ASP以及PHP讀取Flex數據庫中的數據,這個比較簡單。

Flex連接Flex數據庫三種方法

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

前提

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

***步:創建Flex數據庫

這里我們有一個公告表,表名為Bulletin。結構如下:
◆字段名稱字段類型說明
◆ID自動編號自動編號
◆titleNvarchar(100)題目
◆datedatatime日期
◆authorNvarchar(20)作者
◆contentntext內容
在Flex數據庫中創建這個表。保存之后進入下一步。#p#

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

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

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

創建好這個之后我們要創建一個數據查詢類:DataServiceImpl.java來查詢Flex數據庫,并將查詢結果傳給將要創建的Flex程序。由于我們不清楚有多少條記錄,所以就借助一下JAVA中的ArrayList這個類,它位于java.util包中。先創建一個ArrayList:
 

  1. ArrayListnoticeList=newArrayList(); 

查詢Flex數據庫之后,每讀取一條記錄就添加到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);  

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

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

我這里用的是后一種方法。如果你直接把noticeList傳回去的話,記住一點,JAVA的ArrayList類型的對象到了Flex中會變成ArrayCollection類型的。
現在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. //以下是Flex數據庫以及驅動信息  
  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. }  
  18. //查詢Flex數據庫  
  19. privateResultSetexecuteQuery(StringsqlText){  
  20. try{  
  21. Class.forName(DRIVER);  
  22. }catch(ClassNotFoundExceptione){  
  23. e.printStackTrace();  
  24. }  
  25. try{  
  26. conn=DriverManager.getConnection(CONN_STR_PRE+HOST_NAME+DATABASE_NAME,USERNAME,PASSWORD);  
  27. stmt=conn.createStatement();  
  28. ResultSetrs=stmt.executeQuery(sqlText);  
  29. returnrs;  
  30. }catch(SQLExceptione){  
  31. e.printStackTrace();  
  32. }  
  33. returnnull;  
  34. }  
  35. //查詢公告.這個是本程序的關鍵代碼  
  36. publicNoticeInfo[]getNotices(){  
  37. ArrayListnoticeList=newArrayList();  
  38. StringsqlText="selectauthor,content,date,titlefromBulletin";  
  39. ResultSetrs=executeQuery(sqlText);  
  40. try{  
  41. while(rs.next()){  
  42. NoticeInfotemp=newNoticeInfo();  
  43. temp.setAuthor(rs.getString("author"));  
  44. temp.setContent(rs.getString("content"));  
  45. temp.setDates(rs.getDate("date"));  
  46. temp.setTitle(rs.getString("title"));  
  47. noticeList.add(temp);  
  48. }  
  49. NoticeInfo[]notices=newNoticeInfo[noticeList.size()];  
  50. for(inti=0;i<noticeList.size();i++){  
  51. notices=(NoticeInfo)noticeList.get(i);  
  52. }  
  53. returnnotices;  
  54. }catch(SQLExceptione){  
  55. e.printStackTrace();  
  56. returnnull;  
  57. }  
  58. }  
  59. }  

#p#第三步:配置FlexDataService

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

  1. <destinationiddestinationid="dataService"> 
  2. <properties> 
  3. <source>net.zhuoqun.connectDB.DataServiceImpl</source> 
  4. </properties> 
  5. </destination> 


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

第四步:創建Flex程序

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

第五步:通過RemoteObject訪問Flex數據庫

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

  1. <mx:RemoteObjectidmx:RemoteObjectid="getData"destination="dataService"result="proccessResult(event.result)  
  2. "fault="Alert.show(event.fault.faultString,'Error')"/> 

 

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

◆下來我們要聲明一個DataGrid控件來顯示公告的標題和發布日期:
程序代碼
 

  1. <mxataGrididmxataGridid="myDG"> 
  2. <mx:columns> 
  3. <mxataGridColumnheaderTextmxataGridColumnheaderText="標題"dataField="title"/> 
  4. <mxataGridColumnheaderTextmxataGridColumnheaderText="發布日期"dataField="dates"labelFunction="formatDate"/> 
  5. </mx:columns> 
  6. </mx:DataGrid> 

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

◆接下來,在<mx:Script>標簽中編寫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這里就不討論了,幫助里寫得很清楚
這個函數只是簡單地將獲得的數據傳給myDG的dataProvider。result的類型是Object,因為數據是作為一個對象傳過來的。之所以調用ArrayUtil.toArray()這個方法,是因為返回的記錄可能只有一條,而myDG的dataProvider顯示單個對象的時候可能會出錯,所以安全起見先將其轉換成數組。

◆***,我們編寫調用RemoteObject的方法,使其在程序啟動時就調用。

程序代碼
 

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

其中getData是RemoteObject的id,getNotices()是DataServiceImpl.java中的方法。在這里可以直接調用它。當然,如果DataServiceImpl.java有其它方法,也可以通過這種方式直接調用。接下來設定組件創建完畢時調用initApp()方法,在<mx:Application>中添加一個creationComplete屬性:
程序代碼
 

  1. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"fontSize="12"creationComplete="initApp()"> 

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

  1. <?xmlversionxmlversion="1.0"encoding="utf-8"?> 
  2. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"fontSize="12"creationComplete="initApp()"> 
  3. <mx:Script> 
  4. <![CDATA[  
  5. importmx.controls.Alert;  
  6. importmx.utils.ArrayUtil;  
  7. privatefunctioninitApp():void  
  8. {  
  9. getData.getNotices();  
  10. }  
  11. privatefunctionproccessResult(result:Object):void  
  12. {  
  13. myDG.dataProvider=ArrayUtil.toArray(result);  
  14. }  
  15. privatefunctionformatDate(item:Object,column:DataGridColumn):String  
  16. {  
  17. returndf.format(item.dates);  
  18. }//df是一個DateFormatter,在下面會給出。關于如何格式化DataGrid的顯示  
  19. //以及DateFormatter這里就不討論了,幫助里寫得很清楚  
  20. ]]> 
  21. </mx:Script> 
  22. <mx:DateFormatteridmx:DateFormatterid="df"formatString="YYYY-MM-DD"/> 
  23. <mx:RemoteObjectidmx:RemoteObjectid="getData"destination="dataService"result="proccessResult(event.result)
  24. "fault="Alert.show(event.fault.faultString,'Error')"/> 
  25. <mx:DataGrididmx:DataGridid="myDG"> 
  26. <mx:columns> 
  27. <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="標題"dataField="title"/> 
  28. <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="發布日期"dataField="dates"labelFunction="formatDate"/> 
  29. </mx:columns> 
  30. </mx:DataGrid> 
  31. </mx:Application> 

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


 

【編輯推薦】

  1. Flex客戶端工程路徑規劃指導
  2. Flex開發者必須知道的10件事
  3. 技術前沿 看Flex客戶端緩存技術如何使用
  4. 12個Flex常用功能代碼再現
  5. 學習筆記 Flex國際化如何支持其他語言

 

 

責任編輯:佚名 來源: csdn.net
相關推薦

2009-07-22 11:33:14

JDBC連接Sybas

2010-07-30 10:30:58

Flex數據綁定

2010-11-19 14:51:09

Oracle數據庫關閉

2010-09-13 15:41:23

sql server數

2009-07-23 15:17:54

JDBC連接Acces

2010-08-13 15:08:55

Flex數據訪問

2009-10-28 18:00:34

Visual C#數據

2010-11-09 13:37:26

SQLSERVER查詢

2023-05-16 16:07:07

大數據數據管理工具

2021-10-09 06:59:36

技術MyBatis數據

2010-10-20 13:52:07

SQL Server數

2009-07-08 12:56:32

編寫Servlet

2011-05-26 13:16:37

Oracle數據庫備份

2010-08-04 10:42:08

Flex數據庫

2010-08-04 10:32:56

Flex連接數據庫

2023-02-24 16:45:02

2023-10-13 10:45:18

HTTP數據

2011-06-10 10:43:12

Ubuntu應用安裝

2009-06-23 10:45:18

Hibernate支持

2013-01-04 15:47:54

Android開發平鋪UI設計
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91国自视频| 精彩视频一区二区三区 | 亚洲欧美视频一区 | 成人国产精品色哟哟 | 嫩草懂你的影院入口 | 色婷婷精品 | 91不卡| 超碰成人在线观看 | 欧美区日韩区 | 午夜免费观看网站 | 精品网| 二区三区av| a在线v| 欧美性受xxxx | 一级特黄视频 | 天堂男人av | 免费在线观看一区二区三区 | 国产成人99久久亚洲综合精品 | 免费在线黄色av | 亚洲精品99 | 一区二区在线观看免费视频 | 91久久夜色精品国产网站 | 国产日韩欧美二区 | 99久久久国产精品 | 久久中文字幕一区 | 很很干很很日 | 成人片在线看 | 午夜精品导航 | 亚洲精品亚洲人成人网 | 中文字幕日韩欧美 | 99久久久久国产精品免费 | 在线国产一区二区 | 天天干免费视频 | 精品视频在线一区 | 国产精品久久久久久久久久免费看 | 一区二区三区四区不卡视频 | 国产一区免费 | 91视频入口| 91在线电影 | 欧美在线小视频 | 国产一区 |