Silverligh访问数据库方法技巧指导

开发 开发工具
Silverligh访问数据库虽然不能够以直接的方式进行,但是我们可以通过其他的方式来实现这一功能。在这里就为大家介绍一下相关实现方法。

Silverligh的应用范围比较广泛。在开发人员实际使用中,可以轻松的实现各种基于多媒体方面功能。基于安全原因的考虑,Silverlight是不允许直接访问数据库的。但还是有很多方法来间接实现Silverlight对数据库的访问。#t#

比如以下的三种方式:1 RESTful API;2 在Silverlight下借助JavaScript来实现访问数据库;3 利用.NET Web服务模板——Silverlight-enabled。本文将主要介绍一下后俩种方法。

利用JavaScript实现Silverlight与数据库的交互

只要在Silverlight事件处理的后面添加调用以下简单的JavaScript代码即可。其中”callWebService”是JavaScript的函数。

  1. protected void btnSubmit
    (object sender,EventArgs e)  
  2. {  
  3. System.Windows.Browser.HtmlPage.
    Window.Invoke("callWebService", null);  

关于JavaScript的调用可以参照一下内容:

通过ScriptServiceAttribute添加

  1. [ScriptService]  
  2. public class UserValidationService: 
    System.Web.Services.WebService  
  3. {  
  4. [WebMethod]  
  5. public bool ValidateUserName
    (string strInput)  
  6. {  
  7. return !GetUserByUserName(strInput); 
    //If user exists return false 
    indicates the name is no longer availabe.  
  8. }  
  9. private bool GetUserByUserName
    (string strUserName)  
  10. {  
  11. bool blnIsUserExists = false;   
  12. //Call database API to see if the 
    username is availabe, set blnIsUser
    Exists to true if exists.  
  13. return blnIsUserExists;  
  14. }  

通过页面添加ScriptMananger控件

  1. < asp:ScriptManager runat="server"
     ID="scriptManagerId"> 
  2. < Services> 
  3. < asp:ServiceReference Path=
    "UserValidationService.asmx" /> 
  4. < /Services> 
  5. < /asp:ScriptManager> 

像调用JavaScript局部函数一样调用Webservice

  1. < script type="text/javascript"> 
  2. function validateUserName()  
  3. {  
  4. var userName = document.getElementById
    ("txtUserName").value;  
  5. UserValidationService.ValidateUserName
    (userName,showValidateResult,validate
    UserNameError);  
  6. }   
  7. function validateUserNameError(result)  
  8. {  
  9. //Do nothing if any error, ideally, 
    we should log this error to database.  
  10. }  
  11. function showValidateResult(result)  
  12. {  
  13. //Since it is only a boolean value, 
    no need to get result.d, if result 
    contains .net object,  
  14. // use result.length and result.d 
    to retrieve the object.  
  15. if(!result)  
  16. {   
  17. //Not available  
  18. }else  
  19. {  
  20. //Username is still available  
  21. }  
  22. }  
  23. < /script> 

利用Silverlight-enabled Webservice实现Silverlight与数据库的交互

首先通过模板创建一个Silverlight-enabled Webservice,然后将数据库和其他Server-related添加到服务里。接下来,将此服务添加引用到Silverlight 应用中。***利用如下代码从Silverlight 应用中调用webservice。

  1. using MySilver.MyService;  
  2. ......  
  3. .....  
  4. private void btnSend_Click
    (object sender, RoutedEventArgs e)  
  5. {  
  6. if (!String.IsNullOrEmpty
    (txtMessage.Text.Trim()))   
  7. {  
  8. lstHisotryMessage.Items.Add("Gene: " 
    + txtMessage.Text.Trim());   
  9. GeneMessage message = new GeneMessage();   
  10. message.Body = txtMessage.Text.Trim();  
  11. MyServiceclient = new MyService();   
  12. client.SendMessageCompleted += 
    new EventHandler
    < SendMessageCompleted
    EventArgs
    >(client_SendMessageCompleted);   
  13. client.SendMessageAsync(message);  
  14. }  
  15. else  
  16. {  
  17. MessageBox.Show("You cannot send empty message!");   
  18. }  
  19. }  
  20. protected void client_SendMessage
    Completed(object sender, SendMessage
    CompletedEventArgs e)  
  21. {  
  22. txtMessage.Text = e.Result.MessageID.ToString(); 

 

责任编辑:曹凯 来源: IT168
相关推荐

2011-04-13 14:07:17

OracleSybase数据库

2011-03-07 17:35:09

JavaACCESS数据库

2011-03-04 14:13:02

MySQL数据库

2011-01-21 11:12:01

Spring

2011-03-10 11:17:03

数据库设计技巧

2011-03-29 12:59:53

SilverlightWCF RIA Ser访问数据库

2011-06-24 15:57:35

SQL AzureDAC

2010-01-18 17:45:33

VB.NET线程访问数

2010-05-12 17:45:03

MySQL数据库引擎

2010-11-03 11:36:53

访问DB2表

2011-03-22 16:31:35

Access数据库

2011-03-03 11:07:57

Spring数据库访问ORM

2010-05-20 14:52:42

MySQL数据库

2009-07-02 09:35:02

hibernate访问

2009-09-15 10:02:44

Linq to SQL

2011-03-16 17:26:22

动态数据库

2013-11-26 09:47:47

ORM

2009-10-29 17:33:51

VB.NET线程方法

2010-11-29 11:51:59

Sybase数据库维护

2010-01-26 16:55:35

Android数据库操
点赞
收藏

51CTO技术栈公众号