




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Good is good, but better carries it.精益求精,善益求善。Silverlight访问数据库之Access数据库银光中国Silverlight资源社区论坛Silverlight访问数据库之Access数据库时间:2009-12-1022:21来源:博客园作者:Kinglee点击:3540次Silverlight与SQLServer或SQLServerExpress的互操作,已成为我们常见的开发Siverlight应用程序的一种模式。可是在开发一些小型应用程序时,我们就需要使用一些小巧的轻量级的数据库,比如Access数据库。由于VisualStudio中并没有直
2、接提供Silverlight与Access互操作的系列方法。于是本文就将为大家介绍Silverlight与SQLServer或SQLServerExpress的互操作,已成为我们常见的开发Siverlight应用程序的一种模式。可是在开发一些小型应用程序时,我们就需要使用一些小巧的轻量级的数据库,比如Access数据库。由于VisualStudio中并没有直接提供Silverlight与Access互操作的系列方法。于是本文就将为大家介绍如何让Silverlight使用Access作为后台数据库。准备工作1)建立起测试项目细节详情请见强大的DataGrid组件2_数据交互之ADO.NETEnt
3、ityFrameworkSilverlight学习笔记10。2)创建测试用数据库如下图所示,创建一个名为Employees.mdb的Access数据库,建立数据表名称为Employee。将该数据库置于作为服务端的项目文件夹下的App_Data文件夹中,便于操作管理。建立数据模型EmployeeModel.cs文件(放置在服务端项目文件夹下)usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;namespacedatagridnaccessdbpublicclassEmployeeModelpublicintEmployeeI
4、Dget;set;publicstringEmployeeNameget;set;publicintEmployeeAgeget;set;建立服务端WebService右击服务端项目文件夹,选择Add-NewItem,按下图所示建立一个名为EmployeesInfoWebService.asmx的WebService,作为Silverlight与Access数据库互操作的桥梁。创建完毕后,双击EmployeesInfoWebService.asmx打开该文件。将里面的内容修改如下:usingSystem;usingSystem.Collections.Generic;usingSystem.L
5、inq;usingSystem.Web;usingSystem.Web.Services;usingSystem.Data.OleDb;/引入该命名空间为了操作Access数据库usingSystem.Data;namespacedatagridnaccessdb/SummarydescriptionforEmployeesInfoWebService/WebService(Namespace=/)WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)System.ComponentModel.ToolboxItem(false)/T
6、oallowthisWebServicetobecalledfromscript,usingASP.NETAJAX,uncommentthefollowingline./System.Web.Script.Services.ScriptServicepublicclassEmployeesInfoWebService:System.Web.Services.WebServiceWebMethod/获取雇员信息publicListGetEmployeesInfo()ListreturnedValue=newList();OleDbCommandCmd=newOleDbCommand();SQLE
7、xcute(SELECT*FROMEmployee,Cmd);OleDbDataAdapterEmployeeAdapter=newOleDbDataAdapter();EmployeeAdapter.SelectCommand=Cmd;DataSetEmployeeDataSet=newDataSet();EmployeeAdapter.Fill(EmployeeDataSet);foreach(DataRowdrinEmployeeDataSet.Tables0.Rows)EmployeeModeltmp=newEmployeeModel();tmp.EmployeeID=Convert.
8、ToInt32(dr0);tmp.EmployeeName=Convert.ToString(dr1);tmp.EmployeeAge=Convert.ToInt32(dr2);returnedValue.Add(tmp);returnreturnedValue;WebMethod/添加雇员信息publicvoidInsert(Listemployee)employee.ForEach(x=stringCmdText=INSERTINTOEmployee(EmployeeName,EmployeeAge)VALUES(+x.EmployeeName+,+x.EmployeeAge.ToStri
9、ng()+);SQLExcute(CmdText););WebMethod/更新雇员信息publicvoidUpdate(Listemployee)employee.ForEach(x=stringCmdText=UPDATEEmployeeSETEmployeeName=+x.EmployeeName+,EmployeeAge=+x.EmployeeAge.ToString();CmdText+=WHEREEmployeeID=+x.EmployeeID.ToString();SQLExcute(CmdText););WebMethod/删除雇员信息publicvoidDelete(List
10、employee)employee.ForEach(x=stringCmdText=DELETEFROMEmployeeWHEREEmployeeID=+x.EmployeeID.ToString();SQLExcute(CmdText););/执行SQL命令文本,重载1privatevoidSQLExcute(stringSQLCmd)stringConnectionString=PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASOURCE=+Server.MapPath(App_DataEmployees.mdb;);OleDbConnectionConn=new
11、OleDbConnection(ConnectionString);Conn.Open();OleDbCommandCmd=newOleDbCommand();Cmd.Connection=Conn;Cmd.CommandTimeout=15;Cmd.CommandType=CommandType.Text;Cmd.CommandText=SQLCmd;Cmd.ExecuteNonQuery();Conn.Close();/执行SQL命令文本,重载2privatevoidSQLExcute(stringSQLCmd,OleDbCommandCmd)stringConnectionString=
12、PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASOURCE=+Server.MapPath(App_DataEmployees.mdb;);OleDbConnectionConn=newOleDbConnection(ConnectionString);Conn.Open();Cmd.Connection=Conn;Cmd.CommandTimeout=15;Cmd.CommandType=CommandType.Text;Cmd.CommandText=SQLCmd;Cmd.ExecuteNonQuery();之后,在Silverlight客户端应用程序文件夹下,
13、右击References文件夹,选择菜单选项AddServiceReference.。如下图所示,引入刚才我们创建的WebService(别忘了按Discover按钮进行查找)。创建Silverlight客户端应用程序MainPage.xaml文件MainPage.xaml.cs文件usingSystem;usingSystem.Collections.Generic;usingSystem.Collections.ObjectModel;usingSystem.Linq;usingSystem.Net;usingSystem.Windows;usingSystem.Windows.Contr
14、ols;usingSystem.Windows.Documents;usingSystem.Windows.Input;usingSystem.Windows.Media;usingSystem.Windows.Media.Animation;usingSystem.Windows.Shapes;usingSystem.Xml;usingSystem.Xml.Linq;usingSystem.Windows.Browser;usingSilverlightClient.EmployeesInfoServiceReference;namespaceSilverlightClientpublicp
15、artialclassMainPage:UserControlintoriginalNum;/记录初始时的Employee表中的数据总数ObservableCollectiondeletedID=newObservableCollection();/标记被删除的对象publicMainPage()InitializeComponent();this.Loaded+=newRoutedEventHandler(MainPage_Loaded);this.btnGetData.Click+=newRoutedEventHandler(btnGetData_Click);this.btnSaveAl
16、l.Click+=newRoutedEventHandler(btnSaveAll_Click);this.dfEmployee.DeletingItem+=newEventHandler(dfEmployee_DeletingItem);voiddfEmployee_DeletingItem(objectsender,System.ComponentModel.CancelEventArgse)deletedID.Add(dfEmployee.CurrentItemasEmployeeModel);/正在删除时,将被删除对象进行标记,以便传给服务端真正删除。voidbtnSaveAll_Cl
17、ick(objectsender,RoutedEventArgse)ListupdateValues=dfEmployee.ItemsSource.Cast().ToList();ObservableCollectionreturnValues=newObservableCollection();if(updateValues.CountoriginalNum)/添加数据for(inti=originalNum;i=updateValues.Count-1;i+)returnValues.Add(updateValues.ToArray()i);EmployeesInfoWebServiceS
18、oapClientwebClient=newEmployeesInfoWebServiceSoapClient();webClient.InsertCompleted+=newEventHandler(webClient_InsertCompleted);webClient.InsertAsync(returnValues);/必须考虑数据集中既有添加又有更新的情况returnValues.Clear();updateValues.ForEach(x=returnValues.Add(x);webClient.UpdateCompleted+=newEventHandler(webClient
19、_UpdateCompleted);webClient.UpdateAsync(returnValues);elseif(updateValues.CountoriginalNum)/删除数据EmployeesInfoWebServiceSoapClientwebClient=newEmployeesInfoWebServiceSoapClient();webClient.DeleteCompleted+=newEventHandler(webClient_DeleteCompleted);webClient.DeleteAsync(deletedID);else/更新数据updateValu
20、es.ForEach(x=returnValues.Add(x);EmployeesInfoWebServiceSoapClientwebClient=newEmployeesInfoWebServiceSoapClient();webClient.UpdateCompleted+=newEventHandler(webClient_UpdateCompleted);webClient.UpdateAsync(returnValues);voidwebClient_UpdateCompleted(objectsender,System.ComponentModel.AsyncCompletedEventArgse)tbResult.Text=更新成功!;GetEmployees();/更新originalNum防止数据的重复插入,感谢园友紫色永恒的及时指出!voidwebClient_DeleteCompleted(objectsender,System.Compo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省普宁市勤建学校2024-2025学年高二下学期第二次调研考试政治试题
- 教学课件走进实验室测量:实验探究的重要环节
- 2025年阿里3轮面试都问了RecyclerView你都能答出来吗
- 2024-2025学年下学期高一生物人教版期末必刷常考题之基因指导蛋白质的合成
- 建筑施工特种作业-建筑架子工(普通脚手架)真题库-3
- 散文构思小说题目及答案
- 10 3 二项分布 超几何分布和正态分布-高考数学真题分类 十年高考
- 2023-2024学年四川省宜宾市高二下学期期末学业质量监测数学试题(解析版)
- 剖切面的种类与剖切方法
- 2023-2024学年湖北省咸宁市高二下学期期末考试数学试卷(解析版)
- GB/T 4706.8-2024家用和类似用途电器的安全第8部分:电热毯、电热垫、电热衣及类似柔性发热器具的特殊要求
- 正压式空气呼吸器使用培训课件
- 08S305 小型潜水排污泵选用及安装
- 初中自荐信范文
- 血培养采集课件
- 广东省茂名市直属学校2023-2024学年七年级下学期期末数学试题
- 小学语文部编版六年级下册全册阅读知识点(分单元课时编排)
- JBT 2231.3-2011 往复活塞压缩机零部件 第3部分:薄壁轴瓦
- 2024-2030年中国果酱行业市场规模调研及前景趋势预测报告
- 2024中车大连机车车辆限公司招聘高校毕业生170人高频考题难、易错点模拟试题(共500题)附带答案详解
- 2023年中移动家庭网关终端技术规范
评论
0/150
提交评论