1 Silverlight访问MSSQL数据库.docx
- 文档编号:2474879
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:8
- 大小:520.74KB
1 Silverlight访问MSSQL数据库.docx
《1 Silverlight访问MSSQL数据库.docx》由会员分享,可在线阅读,更多相关《1 Silverlight访问MSSQL数据库.docx(8页珍藏版)》请在冰豆网上搜索。
1Silverlight访问MSSQL数据库
Silverlight访问MSSQL数据库
在银光中国网(SilverlightChina.Net)有一篇"Silverlight与常用数据库互操作系列"文章,其中介绍了使用Silverlight存取不同数据库的方法和步骤。
但是对于Silverlight存取MSSQL介绍的不够全面,这里我想介绍Silverlight如何通过WCF访问MSSQL数据库存储过程的。
希望对大家能够有所帮助。
我们要实现,用户输入用户名和密码后,点击登录按钮,传递用户名和密码到服务器端,通过WCF访问MSSQL数据库,调用存储过程,在服务器端对用户名和密码进行匹配,匹配成功,则返回登录成功,否则,则是失败。
在文章开始前,我们需要做一下准备工作,
∙开发环境需求:
VS2008SP1,Silverlight3DevelopToolsforVS2008SP1,客户端Silverlight3Runtime,MSSQL2005SP3;
∙建立例程数据库SilverlightDemo,在数据库中建立一个新表Users,包含以下字段;
添加内容到Users表,为了方便起见,密码全部使用明文,在正式项目中,建议对密码字段进行加密使用。
这里,我们验证用户名和密码,有两种简单方式,
一是使用存储过程读取用户名和密码,然后在服务器端进行用户名和密码匹配校验,如果查找到匹配数据,则返回登录成功,否则,则是登录失败;
二是传用户名和密码到存储过程中,在数据库存储过程中进行判断,使用Select语句进行查找,对应用户名和密码,如果查找到匹配结果,则返回用户ID, 服务器端接收到用户ID,则返回登录成功,否则,则是失败;
在本例中,主要是对Silverlight访问数据库进行讲述,所以,对于验证方法,不进行详细描述和讲解,如果有问题,可以留言给我,我们继续讨论,这里,我将使用第一种验证方法。
为此,建立一个简单的存储过程:
1 CREATE PROCEDURE [dbo].[Login]
2 ( @UserName Varchar(30))
3 AS
4
5 Select cUserName, cPassword
6 From Users
7 Where cUserName = @UserName
8
9 RETURN
10
11 SET NOCOUNT ON
在完成上面的准备工作后,开始建立新的Silverlight项目,
1.建立一个新项目"SilverlightDBDemo",
2.在MainPage中建立简单的登录界面,如下:
3.在Web项目中添加新选项
4. 添加一个简单的用户信息类Users,作为WCF的契约成员,当我们从数据库中读取信息后,将赋值给该类的契约成员,方便客户端进行调用;
VS2008将自动生成Users类代码,在类命名前添加数据契约属性[DataContract()]。
为了能够使绑定数据返回修改通知,这里需要继承INotifyPropertyChanged接口,该步骤不添加对本教程也没有影响,为了以后例程代码完整性,这里我继承了该接口。
在接口上点击右键,生成代码。
代码如下:
1 namespace SilverlightDBDemo.Web
2 {
3 [DataContract()]
4 public class Users :
INotifyPropertyChanged
5 {
6
7 #region INotifyPropertyChanged Members
8
9 public event PropertyChangedEventHandler PropertyChanged;
10
11 #endregion
12 }
13 }
14
5.在Users类中,添加契约成员
1 private string userName;
2 [DataMember()]
3 public string UserName
4 {
5 get { return userName; }
6 set { userName = value;}
7 }
8
9 private string password;
10 [DataMember()]
11 public string Password
12 {
13 get { return password; }
14 set { password = value; }
15 }
6.建立构造函数publicUsers(stringsUserName,stringsPassword),传递用户名和密码给契约成员;
1 using System;
2 using System.ComponentModel;
3 using System.Runtime.Serialization;
4
5 namespace SilverlightDBDemo.Web
6 {
7 [DataContract()]
8 public class Users :
INotifyPropertyChanged
9 {
10 private string userName;
11 [DataMember()]
12 public string UserName
13 {
14 get { return userName; }
15 set { userName = value;}
16 }
17
18 private string password;
19 [DataMember()]
20 public string Password
21 {
22 get { return password; }
23 set { password = value; }
24 }
25
26 public Users(string sUserName,string sPassword)
27 {
28 UserName = sUserName;
29 Password = sPassword;
30 }
31
32 #region INotifyPropertyChanged Members
33
34 public event PropertyChangedEventHandler PropertyChanged;
35
36 #endregion
37 }
38 }
7.添加"Silverlight-enabledWCFService",修改服务名字为DBService.svc,需要注意的是,WCFservice对于Silverlight仅支持BasicHttpBinding,而VS2008自动生成是customBinding,很多朋友说使用了"Silverlight-enabledWCFService",链接数据库仍旧失败,无法找到远程服务器,是因为没有使用BasicHttpBinding进行通讯,造成的失败。
后文我将讲述如何修改。
8.添加后,在Web服务器端会有DBService.svc和DBService.svc.cs文件出现,VS2008将自动更新Web项目的类库引用;
9.双击进入DBService.svc.cs文件,可以看到以下代码:
1 using System;
2 using System.Linq;
3 using System.Runtime.Serialization;
4 using System.ServiceModel;
5 using System.ServiceModel.Activation;
6 using System.Collections.Generic;
7 using System.Text;
8
9 namespace SilverlightDBDemo.Web
10 {
11 [ServiceContract(Namespace = "")]
12 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
13 public class DBService
14 {
15 [OperationContract]
16 public void DoWork()
17 {
18 // Add your operation implementation here
19 return;
20 }
21
22 // Add more operations here and mark them with [OperationContract]
23 }
24 }
这里我们没有修改ServiceContract命名空间,所以保持默认为空,AspNet的兼容需求模式我们保持默认。
在正式项目中,我们习惯将所有的[OperationContract]函数放入一个接口文件中,这样方便扩展以及维护,在本例,为了方便大家理解,就不把[OperationContract]放入接口文件。
在VS2008自动生成代码下面直接添加数据库访问代码。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Silverlight访问MSSQL数据库 Silverlight 访问 MSSQL 数据库