天天看點

Flex擷取MySQL資料庫資料

我的環境為:Flash Builder4.6+MyEclipse10.6+MySQL5.6+32位Win7旗艦版

參考文章:

http://kb.cnblogs.com/page/77057/

http://blog.csdn.net/sunchunmei555/article/details/6913883

------------------------------------------------------------------------------------------------------------------------------------------------------------------

初學Flex,在此做下筆記,我使用BlazeDS來通路伺服器資料。

這例子是擷取MySQL資料庫表中的一條記錄,并顯示出來,效果如下:

Flex擷取MySQL資料庫資料

看完效果,接下來我簡單的說下實作過程。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

首先是MySQL資料庫表的建立,為友善測試,表中就一條記錄。

資料庫名:test    表名:tbAdmin

截圖如下:

Flex擷取MySQL資料庫資料

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

弄好資料庫後,我們就可以用MyEclipse建立web工程了,建好web工程後,我們需要下載下傳BlazeDS.jar包來搭建BlazeDS環境,

BlazeDS.jar下載下傳位址:http://download.csdn.net/detail/friendan/6593275

下載下傳好BlazeDS.jar後,解壓,得到兩個檔案夾:META-INF和WEB-INF

将解壓得到的兩個檔案夾META-INF和WEB-INF複制到web工程的WebRoot目錄,覆寫掉原來的兩個同名檔案夾,

這樣BlazeDS環境,就搭建好了,簡單吧。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

簡言之,用BlazeDS.jar解壓得到的兩個檔案夾META-INF和WEB-INF覆寫掉web工程的兩個同名檔案夾,

BlazeDS環境就搭建好了,很簡單的。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

BlazeDS環境搭建好後,我們就可以編寫一個java類來擷取資料庫表中的記錄了,我寫的java類代碼如下:

import bean.Admin;
import dao.AdminDAO;

public class AdminDAOImpl implements AdminDAO{

	@Override
	public List<Admin> GetAllAdmin() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Admin GetAdmin(int id) {
		try {
			String sql="select * from tbAdmin where id='1'";
			sql=sql.replace("1",String.valueOf(id));
			//System.out.println(sql);
			ResultSet rs=DbCRUD.Select(sql);
			int row=0;
			Admin admin=new Admin();
			while(rs.next())
			{
				admin.setId(rs.getInt("id"));
				admin.setUsrName(rs.getString("usrName"));
				admin.setUsrPass(rs.getString("usrPass"));
				//System.out.println(rs.getString(1)+"---"+rs.getString(2));
			}
			return admin;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
}
           

上面這個類有一個方法,public Admin GetAdmin(int id),我就是在Flex中調用這個方法來擷取MySQL資料庫資料的。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

接下來設定remoting-config.xml,這樣Flex才可以通路我們以上編寫的java類AdminDAOImpl,設定代碼如下:

<destination id="adminDAOImpl">  

        <properties>  

            <source>dao.impl.AdminDAOImpl</source>  

        </properties>  

</destination>  

截圖如下:

Flex擷取MySQL資料庫資料

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

好,以上就是伺服器端的主要設定和代碼了,接下來可以進行Flex開發了。

-------------------------------------------------------------------------------------------------------------------------

導入用到的Flex包:

<fx:Script>
		<![CDATA[
			//導入程式用到的包
			import mx.controls.Alert; 
			import mx.rpc.events.ResultEvent;
			import mx.rpc.events.FaultEvent;
		]]>
	</fx:Script>
           

---------------------------------------------------------------------------------------------------------------------------------------------------

遠端對象聲明和回調方法:

注意<s:RemoteObject  .../>标簽中的destination="adminDAOImpl",要與remoting-config.xml檔案配置中的保持一緻,

具體請看前文。

<fx:Declarations>
		<!-- 将非可視元素(例如服務、值對象)放在此處 -->
		<s:RemoteObject id="roAdmin" destination="adminDAOImpl">  
			<s:method name="GetAdmin" result="rstGetAdmin(event)" fault="fltGetAdmin(event)"/>  
		</s:RemoteObject> 
	</fx:Declarations>
	 
	<fx:Script>  
		<![CDATA[ 
			    
			//調用遠端方法GetAdmin(int id)成功時
			private function rstGetAdmin(event:ResultEvent):void
			{ 
				var str:String =String(event.result.id);    //使用者id
				str+=" ";
				str+=event.result.usrName;//使用者名
				str+=" ";
				str+=event.result.usrPass;//使用者密碼
				Alert.show(str); 
			} 
			//調用遠端方法GetAdmin(int id)失敗時
			private function fltGetAdmin(event:FaultEvent):void
			{
				Alert.show(event.message.toString());//顯示錯誤資訊 
			} 
		]]>  
	</fx:Script>  
           

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

最後就是調用遠端對象了中的方法了:

<fx:Script>
		<![CDATA[
			//登陸按鈕
			protected function btnLogin_clickHandler(event:MouseEvent):void
			{
				this.roAdmin.GetAdmin(1);//調用遠端對象的方法:public Admin GetAdmin(int id)
			}
			
		]]>
	</fx:Script>
           

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

大工告成,再貼一下效果圖:

Flex擷取MySQL資料庫資料

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Flex擷取MySQL資料庫資料

您的十分滿意是我追求的宗旨。

您的一點建議是我後續的動力。