Silverlight实用窍门系列:30.Silverlight中创建一个最简单的WCF RIA Services访问数据库实例【实例源码+数据库下载】
来源:互联网 发布:墨西哥美洲角球数据 编辑:程序博客网 时间:2024/05/17 22:25
本文将建立一个最简单的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文件中我们实现这个契约函数,代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;using System.Data;using System.Data.SqlClient;namespace SLGetDataFromWCFRIA.Web{ // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“SLWCFRIA”。 public class SLWCFRIA : ISLWCFRIA { public void DoWork() { } public string GetData() { DataSet ds= DB.Getdata("select * from userinfo"); return ds.GetXml(); } }}
第七步:我们在SQL SERVER2008中创建一个示例数据库名为SLRiaTest。在这个数据库里面新增一个UserInfo表,在里面添加字段如下:
第八步:编写一个类,来连接SLRiaTest数据库,获取DataSet数据集。
/// <summary> /// DB 的摘要说明 /// </summary> public class DB { private static IsolationLevel m_isoLevel = IsolationLevel.ReadUncommitted; private static string connStr = string.Empty; private DB() { } #region DB2 Access Functions static public IsolationLevel IsolationLevel { get { return m_isoLevel; } } /// <summary> /// Gets Connection out of Web.config /// </summary> /// <returns>Returns SqlConnection</returns> public static SqlConnection GetConnection() { if (connStr == string.Empty) { AppSettingsReader configurationAppSettings = new AppSettingsReader(); connStr = "Data Source=CXL-DC6F5F6CA80;POOLING=FALSE;database=SLRiaTest;User ID=sa;Password=123456"; } SqlConnection conn = new SqlConnection(connStr); conn.Open(); return conn; } /// <summary> /// Gets data out of database using a plain text string command /// </summary> /// <param name="sql">string command to be executed</param> /// <returns>DataTable with results</returns> static public DataSet Getdata(string sql) { using (SqlConnection conn = GetConnection()) { using (SqlTransaction trans = conn.BeginTransaction(m_isoLevel)) { try { using (SqlCommand cmd = conn.CreateCommand()) { if (sql != null) { sql = sql.ToLower().Replace("<;", "");//.Replace(Convert.ToChar(32).ToString(), " ").Replace(" ", " ").Replace("%32", " ").Replace("%20", " "); sql = sql.Replace(">;", ""); sql = sql.Replace("script", ""); sql = sql.Replace("object", ""); sql = sql.Replace("applet", ""); sql = sql.Replace("[", ""); sql = sql.Replace("]", ""); sql = sql.Replace("execute", ""); sql = sql.Replace("exec", ""); sql = sql.Replace("union", ""); sql = sql.Replace("drop", ""); sql = sql.Replace("delete", ""); // sql = sql.Replace("chr", ""); //sql = sql.Replace("mid", ""); sql = sql.Replace("truncate", ""); sql = sql.Replace("nchar", ""); // sql = sql.Replace("varchar", ""); //sql = sql.Replace("char", ""); sql = sql.Replace("alter", ""); // sql = sql.Replace("cast", ""); sql = sql.Replace("exists", ""); sql = sql.Replace("update", ""); } cmd.Transaction = trans; cmd.CommandType = CommandType.Text; cmd.CommandText = sql; using (DataSet ds = new DataSet()) { using (SqlDataAdapter da = new SqlDataAdapter()) { da.SelectCommand = cmd; da.SelectCommand.Connection = conn; da.Fill(ds); return ds; } } } } finally { trans.Commit(); } } } } #endregion }
第九步:鼠标右键点击SLGetDataFromWCFRIA项目“添加服务引用”即引用刚才我们编写的WCF服务。
第十步:添加一个UserInfo的实体类集合。代码如下:
/// <summary> /// 用户实体类 /// </summary> public class UserInfo { private string _ID; private string _UserName; private string _UserAddr; private string _UserTel; public string ID { get { return _ID; } set { _ID = value; } } public string UserName { get { return _UserName; } set { _UserName = value; } } public string UserAddr { get { return _UserAddr; } set { _UserAddr = value; } } public string UserTel { get { return _UserTel; } set { _UserTel = value; } } }
第十一步:点击MainPage.xaml文件,添加一个DataGird控件命名为grShow,在MainPage.xaml.cs文件中编写以下代码获取WCF RIA services读取到的数据库数据:
public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); //创建一个代理类的实例 SLWCFRIAClient client = new SLWCFRIAClient(); //调用GetData方法并加载事件 client.GetDataAsync(); client.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(client_GetDataCompleted); } public List<UserInfo> userList = new List<UserInfo>(); void client_GetDataCompleted(object sender, GetDataCompletedEventArgs e) { using (XmlReader xReader = XmlReader.Create(new StringReader(e.Result))) { //XmlReader读取XML数据 while (xReader.ReadToFollowing("Table")) { xReader.ReadToDescendant("ID"); string id = xReader.ReadElementContentAsString(); xReader.ReadToNextSibling("UserName"); string username = xReader.ReadElementContentAsString(); xReader.ReadToNextSibling("UserAddr"); string useraddr = xReader.ReadElementContentAsString(); xReader.ReadToNextSibling("UserTel"); string usertel = xReader.ReadElementContentAsString(); //实例化类并添加进实体类List<> UserInfo uinfo = new UserInfo(){ID=id, UserName=username,UserAddr=useraddr,UserTel=usertel}; userList.Add(uinfo); } this.grShow.ItemsSource = userList; } } }
最后我们看最后的效果图,本实例采用VS2010+Silverlight 4.0+MS SQL SERVER 2008,点击 SLGetDataFromWCFRIA.rar 下载本实例源码和示例数据库。
- Silverlight实用窍门系列:30.Silverlight中创建一个最简单的WCF RIA Services访问数据库实例【实例源码+数据库下载】
- Silverlight实用窍门系列:20.后台CS代码中创建四种常用的动画效果【附带源码实例】
- Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
- Silverlight实用窍门系列:40.Silverlight中捕捉视频,截图保存到本地【附带实例源码】
- Silverlight实用窍门系列:33.OOB模式下WebBrowser的简单应用--模拟浏览器和百度地图【附带源码实例】
- 一个简单的 Silverlight 4 应用程序(MEF+ MVVM+ WCF RIA Services)第一部分
- 一个简单的 Silverlight 4 应用程序(MEF+ MVVM+ WCF RIA Services)--第二部分
- 一个简单的 Silverlight 4 应用程序(MEF+ MVVM+ WCF RIA Services)第三部分
- 一个简单的 Silverlight 4 应用程序(MEF+ MVVM+ WCF RIA Services)第一部分
- 更强悍的Silverlight: WCF RIA Services
- Silverlight实用窍门系列:13.基于Popup浮动窗体控件模拟ToolTip的实现【附带实例源码】
- Silverlight WCF RIA服务(六)创建RIA Services 类库
- Silverlight WCF RIA服务(六)创建RIA Services 类库
- Silverlight WCF RIA服务 (三)创建一个RIA Services Solution
- Silverlight WCF RIA服务 (三)创建一个RIA Services Solution
- WCF+Silverlight 数据库访问【综述】
- Silverlight中连接MySQL数据库实例详解
- Silverlight + RIA Service的SUID的实例
- SVN使用中的经验浅谈
- SQL存在一个表而不在另一个表中的数据
- 一行显示多种颜色。
- 转 OFBiz安全组
- C#,GDI+开发飞行仪表
- Silverlight实用窍门系列:30.Silverlight中创建一个最简单的WCF RIA Services访问数据库实例【实例源码+数据库下载】
- 如何排查解决修改表结构,改表名超时的问题
- 图像处理之(直方图)反向投影
- android监听电话状态问题
- jsp中常用的form表单里内容输入小结
- 提交按钮设置背景图片,以及鼠标经过换背景图
- linux 修改shell提示
- asp.net生成和下载的vcard文件无法导入问题分析
- 指针与内存对齐