Silverlight實用竅門系列: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文件中我們實現這個契約函數,代碼如下:

複製代碼
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數據集。

DB.cs數據庫訪問類
複製代碼
/// <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(), "&nbsp;").Replace(" ", "&nbsp;").Replace("%32", "&nbsp;").Replace("%20", "&nbsp;"); 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 下載本實例源碼和示例數據庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章