几步走,教你创建简单访问数据库方法

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

本文将建立一个最简单的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. namespace SLGetDataFromWCFRIA.Web{  
  10.     // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“SLWCFRIA”。  
  11.     public class SLWCFRIA : ISLWCFRIA  
  12.     {  
  13.         public void DoWork()  
  14.         {  
  15.         }  
  16.         public string GetData()  
  17.         {  
  18.             DataSet dsDB.Getdata("select * from userinfo");  
  19.             return ds.GetXml();  
  20.         }  
  21.     }  
  22. }          
  23.  

#p#

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

 

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

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

第九步:鼠标右键点击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.     public string ID  
  11.     {  
  12.         get { return _ID; }  
  13.         set { _ID = value; }  
  14.     }  
  15.     public string UserName  
  16.     {  
  17.         get { return _UserName; }  
  18.         set { _UserName = value; }  
  19.     }  
  20.     public string UserAddr  
  21.     {  
  22.         get { return _UserAddr; }  
  23.         set { _UserAddr = value; }  
  24.     }  
  25.     public string UserTel  
  26.     {  
  27.         get { return _UserTel; }  
  28.         set { _UserTel = value; }  
  29.     }  
  30. }  

第十一步:点击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.                 xReader.ReadToNextSibling("UserAddr");  
  25.                 string useraddr = xReader.ReadElementContentAsString();  
  26.                 xReader.ReadToNextSibling("UserTel");  
  27.                 string usertel = xReader.ReadElementContentAsString();  
  28.                 //实例化类并添加进实体类List<> 
  29.                 UserInfo uinfo = new UserInfo(){ID=idUserName=username,UserAddr=useraddr,UserTel=usertel};  
  30.                 userList.Add(uinfo);  
  31.             }  
  32.             this.grShow.ItemsSource = userList;  
  33.         }  
  34.     }  
  35. }  

最后我们看最后的效果图,本实例采用VS2010+Silverlight 4.0+MS SQL SERVER 2008,复制下述网址 (http://files.cnblogs.com/chengxingliang/SLGetDataFromWCFRIA.rar)即可下载本实例源码和示例数据库

 

 原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/03/28/1996434.html

【编辑推荐】

  1. 晒晒我的通用数据访问层
  2. 一句代码实现批量数据绑定 上
  3. 一句代码实现批量数据绑定 下
  4. 一步一步设计你的数据库1
  5. 不重复随机数列生成算法
责任编辑:艾婧 来源: 博客园
相关推荐

2010-09-17 20:28:29

2009-11-11 15:24:35

ADO创建数据库

2009-09-17 09:57:08

linq创建数据库

2009-09-09 13:07:37

创建Linq数据库

2010-01-04 17:54:41

Silverligh访

2011-04-13 14:07:17

OracleSybase数据库

2011-03-07 17:35:09

JavaACCESS数据库

2010-05-06 09:30:16

Oracle创建数据库

2011-04-12 10:33:46

Windows CE数创建

2011-01-21 11:12:01

Spring

2011-06-24 15:57:35

SQL AzureDAC

2011-04-06 09:09:17

MySQL数据库备份

2011-05-19 13:25:15

MySQL数据库优化

2020-11-24 17:22:15

数据库MySQL技术

2009-11-11 11:33:08

VB.NET线程访问数

2016-09-13 22:46:41

大数据

2010-05-17 10:24:44

MySQL数据库

2010-11-03 11:36:53

访问DB2表

2017-10-16 16:43:05

数据库Oracle数据丢失

2010-06-13 17:47:43

MySQL数据库
点赞
收藏

51CTO技术栈公众号