30.Silverlight中创建一个最简单的WCF RIA Services访问数据库实例

简介:

 本文将建立一个最简单的WCF RIA Services访问数据库的实例,附带有数据库文件,可以在Sql Server中附加数据库,在本文中并没有采用ADO.NET实体数据模型绑定数据库,而是单独写一个类来连接数据库查询数据表并返回值,下面我们看详细 步骤。

        第一步:首先我们打开VS2010,新建一个Silverlight应用程序项目SLGetDataFromWCFRIA。

        第二步:点击确定之后,在弹出的“新建Silverlight应用程序”窗口中,选中“启用 WCF RIA 服务”复选框然后确定。

        第三步:在创建好的项目中,鼠标右键点击“SLGetDataFromWCFRIA.Web”项目,然后“添加”-->“新建项”-->“WCF服务”,命名为SLWCFRIA.svc。

        第四步:在上一步生成的ISLWCFRIA.cs文件中,我们可以定义相关的通信的契约,在本实例中我们定义一个string GetData()契约。

        第五步:在SLWCFRIA.svc.cs文件中我们实现这个契约函数,代码如下:

 


 
 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Runtime.Serialization; 
  5. using System.ServiceModel; 
  6. using System.Text; 
  7. using System.Data; 
  8. using System.Data.SqlClient; 
  9.  
  10. namespace SLGetDataFromWCFRIA.Web 
  11. // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“SLWCFRIA”。 
  12. public class SLWCFRIA : ISLWCFRIA 
  13. public void DoWork() 
  14. public string GetData() 
  15. DataSet ds= DB.Getdata("select * from userinfo"); 
  16. return ds.GetXml(); 

        第七步:我们在SQL SERVER2008中创建一个示例数据库名为SLRiaTest。在这个数据库里面新增一个UserInfo表,在里面添加字段如下:

        第八步:编写一个类,来连接SLRiaTest数据库,获取DataSet数据集。

DB.cs数据库访问类


  
  
  1. /// <summary> 
  2.    /// DB 的摘要说明 
  3.    /// </summary> 
  4.    public   class  DB 
  5.    { 
  6.        private static IsolationLevel m_isoLevel = IsolationLevel.ReadUncommitted; 
  7.        private static string connStr = string.Empty; 
  8.  
  9.        private DB() 
  10.        { 
  11.        } 
  12.  
  13.        #region DB2 Access Functions 
  14.  
  15.        static public IsolationLevel IsolationLevel 
  16.        { 
  17.            get 
  18.            { 
  19.                return m_isoLevel; 
  20.            } 
  21.        } 
  22.  
  23.        /// <summary> 
  24.        /// Gets Connection out of Web.config 
  25.        /// </summary> 
  26.        /// <returns>Returns SqlConnection</returns
  27.        public static SqlConnection GetConnection() 
  28.        { 
  29.            if (connStr == string.Empty) 
  30.            { 
  31.                AppSettingsReader configurationAppSettings = new AppSettingsReader(); 
  32.                connStr = "Data Source=CXL-DC6F5F6CA80;POOLING=FALSE;database=SLRiaTest;User ID=sa;Password=123456"
  33.            } 
  34.  
  35.            SqlConnection conn = new SqlConnection(connStr); 
  36.            conn.Open(); 
  37.            return conn; 
  38.        } 
  39.  
  40.        /// <summary> 
  41.        /// Gets data out of database using a plain text string command 
  42.        /// </summary> 
  43.        /// <param name="sql">string command to be executed</param> 
  44.        /// <returns>DataTable with results</returns
  45.        static public DataSet Getdata(string sql) 
  46.        { 
  47.            using (SqlConnection conn = GetConnection()) 
  48.            { 
  49.                using (SqlTransaction trans = conn.BeginTransaction(m_isoLevel)) 
  50.                { 
  51.                    try 
  52.                    { 
  53.                        using (SqlCommand cmd = conn.CreateCommand()) 
  54.                        { 
  55.                            if (sql != null
  56.                            { 
  57.                                sql = sql.ToLower().Replace("<;""");//.Replace(Convert.ToChar(32).ToString(), "&nbsp;").Replace(" ""&nbsp;").Replace("%32""&nbsp;").Replace("%20""&nbsp;"); 
  58.                                sql = sql.Replace(">;"""); 
  59.                                sql = sql.Replace("script"""); 
  60.                                sql = sql.Replace("object"""); 
  61.                                sql = sql.Replace("applet"""); 
  62.                                sql = sql.Replace("["""); 
  63.                                sql = sql.Replace("]"""); 
  64.                                sql = sql.Replace("execute"""); 
  65.                                sql = sql.Replace("exec"""); 
  66.                                sql = sql.Replace("union"""); 
  67.                                sql = sql.Replace("drop"""); 
  68.                                sql = sql.Replace("delete"""); 
  69.                                //  sql = sql.Replace("chr"""); 
  70.                                //sql = sql.Replace("mid"""); 
  71.                                sql = sql.Replace("truncate"""); 
  72.                                sql = sql.Replace("nchar"""); 
  73.                                //  sql = sql.Replace("varchar"""); 
  74.                                //sql = sql.Replace("char"""); 
  75.                                sql = sql.Replace("alter"""); 
  76.                                // sql = sql.Replace("cast"""); 
  77.                                sql = sql.Replace("exists"""); 
  78.                                sql = sql.Replace("update"""); 
  79.                            } 
  80.                            cmd.Transaction = trans; 
  81.                            cmd.CommandType = CommandType.Text; 
  82.                            cmd.CommandText = sql; 
  83.                            using (DataSet ds = new DataSet()) 
  84.                            { 
  85.                                using (SqlDataAdapter da = new SqlDataAdapter()) 
  86.                                { 
  87.                                    da.SelectCommand = cmd; 
  88.                                    da.SelectCommand.Connection = conn; 
  89.                                    da.Fill(ds); 
  90.                                    return ds; 
  91.                                } 
  92.                            } 
  93.                        } 
  94.                    } 
  95.                    finally 
  96.                    { 
  97.                        trans.Commit(); 
  98.                    } 
  99.                } 
  100.            } 
  101.        } 
  102.  
  103.        #endregion 
  104.  
  105.    } 

        第九步:鼠标右键点击SLGetDataFromWCFRIA项目“添加服务引用”即引用刚才我们编写的WCF服务。

        第十步:添加一个UserInfo的实体类集合。代码如下:

 


  
  
  1. /// <summary> 
  2.     /// 用户实体类 
  3.     /// </summary> 
  4.     public class UserInfo 
  5.     { 
  6.         private string _ID; 
  7.         private string _UserName; 
  8.         private string _UserAddr; 
  9.         private string _UserTel; 
  10.  
  11.         public string ID 
  12.         { 
  13.             get { return _ID; } 
  14.             set { _ID = value; } 
  15.         } 
  16.  
  17.         public string UserName 
  18.         { 
  19.             get { return _UserName; } 
  20.             set { _UserName = value; } 
  21.         } 
  22.  
  23.         public string UserAddr 
  24.         { 
  25.             get { return _UserAddr; } 
  26.             set { _UserAddr = value; } 
  27.         } 
  28.  
  29.         public string UserTel 
  30.         { 
  31.             get { return _UserTel; } 
  32.             set { _UserTel = value; } 
  33.         } 
  34.     } 

        第十一步:点击MainPage.xaml文件,添加一个DataGird控件命名为grShow,在MainPage.xaml.cs文件中编写以下代码获取WCF RIA services读取到的数据库数据:

 


 
 
  1. public partial class MainPage : UserControl 
  2.   { 
  3.       public MainPage() 
  4.       { 
  5.           InitializeComponent(); 
  6.           //创建一个代理类的实例 
  7.           SLWCFRIAClient client = new SLWCFRIAClient(); 
  8.           //调用GetData方法并加载事件 
  9.           client.GetDataAsync(); 
  10.           client.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(client_GetDataCompleted); 
  11.       } 
  12.       public  List<UserInfo> userList = new List<UserInfo>(); 
  13.       void client_GetDataCompleted(object sender, GetDataCompletedEventArgs e) 
  14.       { 
  15.           using (XmlReader xReader = XmlReader.Create(new StringReader(e.Result))) 
  16.           { 
  17.               //XmlReader读取XML数据 
  18.               while (xReader.ReadToFollowing("Table")) 
  19.               { 
  20.                   xReader.ReadToDescendant("ID"); 
  21.                   string id = xReader.ReadElementContentAsString(); 
  22.                   xReader.ReadToNextSibling("UserName"); 
  23.                   string username = xReader.ReadElementContentAsString(); 
  24.  
  25.                   xReader.ReadToNextSibling("UserAddr"); 
  26.                   string useraddr = xReader.ReadElementContentAsString(); 
  27.  
  28.                   xReader.ReadToNextSibling("UserTel"); 
  29.                   string usertel = xReader.ReadElementContentAsString(); 
  30.                   //实例化类并添加进实体类List<> 
  31.                   UserInfo uinfo = new UserInfo(){ID=id, UserName=username,UserAddr=useraddr,UserTel=usertel}; 
  32.                   userList.Add(uinfo); 
  33.               } 
  34.               this.grShow.ItemsSource = userList; 
  35.           } 
  36.  
  37.       } 
  38.   } 

        最后我们看最后的效果图,本实例采用VS2010+Silverlight 4.0+MS SQL SERVER 2008,点击 SLGetDataFromWCFRIA.rar 下载本实例源码和示例数据库。



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/822557

相关文章
|
1月前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
1月前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
114 61
|
1月前
|
存储 负载均衡 监控
数据库多实例的深入解析
【10月更文挑战第24天】数据库多实例是一种重要的数据库架构方式,它为数据库的高效运行和灵活管理提供了多种优势。在实际应用中,需要根据具体的业务需求和技术环境,合理选择和配置多实例,以充分发挥其优势,提高数据库系统的性能和可靠性。随着技术的不断发展和进步,数据库多实例技术也将不断完善和创新,为数据库管理带来更多的可能性和便利。
109 57
|
1月前
|
缓存 负载均衡 监控
数据库多实例的负载均衡技术深入
【10月更文挑战第23天】数据库多实例负载均衡技术是确保数据库系统高效运行的重要手段。通过合理选择负载均衡策略、实时监控实例状态、不断优化调整,能够实现资源的最优分配和系统性能的提升。在实际应用中,需要根据具体情况灵活运用各种负载均衡技术,并结合其他相关技术,以满足不断变化的业务需求。
|
1月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
87 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
SQL Shell 数据库
在TDengine容器中创建初始化数据库的Shell命令实例
以上就是在Docker容器环境中部署并初始化TDengine数据库的全过程,希望对你有所帮助。
88 0
|
4月前
|
SQL Java 关系型数据库
应用DriverManager类创建sqlserver数据库连接实例 JSP中使用数据库
该博客文章介绍了在JSP中使用JDBC连接SQL Server数据库的方法,包括加载数据库驱动、建立数据库连接的过程,并提供了一个使用DriverManager类创建数据库连接的Java示例代码。
|
5月前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之如何将数据库从一个PolarDB实例导入到另一个PolarDB实例
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
存储 Serverless API
Serverless 架构实现弹幕场景问题之在initializer方法中初始化数据库实例如何解决
Serverless 架构实现弹幕场景问题之在initializer方法中初始化数据库实例如何解决
33 0
下一篇
DataWorks