通过Silverlight WCF方式连接Oracle数据库
通过Silverlight WCF方式连接Oracle数据库
2012年11月21日星期三
17:12
这几天搜索了很多关于如何通过Silverlight连接Oracle数据库,网上虽然有很多种方式,但是大部分都需要安装其他的东西,我的方式是从一篇英文文章那里得到的,所以,现在把这个具体的过程,用中文的方式呈现出来。提前说明下关于我的数据库的信息,在下面的操作中会用到,避免大家不知道要用的是哪一个。我的Oracle数据库的实例名是ORCL,用户名是DHadmin,密码是DHhyhd123,表的名字是TT,表中有两个字段(ID和标准名称汉字),属性值分别是(1和崇明岛)。
1、创建Silverlight应用程序,如下图所示:
下面这个界面中,要将启用WCF RIA服务勾选上,如下图:
你也可以在expression Blend创建工程,这样你就可以很容易的创建一个更好的界面的xmal。在这里,我就用VS本身的界面。
2、向工程里添加启用Silverlight功能的 WCF服务。右击项目(带web后缀的那个),在添加中,选择新建项,出现的界面如下,在Silverlight中,选择启用了Silverlight的WCF服务。在名称那里,可以修改名称,我用的是默认的这个名称。单击添加。
现在在你的工程中,就会添加红色区域所示的文件。
3、添加一个新的项目到现在的解决方案中,用来从数据库中获得数据。右击解决方案,在添加里,选择新建项目,新建一个类库,单击确定。如下图:
4、创建了新的项目之后,现在你的解决方案管理器中应该是这个样子的
但是,在这里要说明一点,就是要给上图红框中显示的那个类重命名,名字要和你要连接的那个Oracle数据库中的表的名字一致,一定要这样做,我Oracle数据库中,我要查看的那个表的名字叫TT,所以更改名字后是这样的
现在就开始向TT这个类中添加代码,添加代码之前,要先添加一个引用,
System.Runtime.Serialization,代码如下:
Using System.Runtime.Serialization;
代码添加完成后,要生成这个项目。里面的代码是对应数据库表中的每一个字段值,通过get和set来获得。
5、把新建的这个项目,即ClassLibrary1作为引用添加到SilverlightApplication1.Web中,右击SilverlightApplication1.Web项目下的引用,选择添加引用,在项目中,可以找到
ClassLibrary1,把它添加进来就可以。如下图:
除了添加这个项目引用之外,还需要添加System.Data,System.Data.OracleClient,
System.Collections.Generic。
现在打开之前添加的那个service1.svc.cs文件,在这个文件中,有自带的公共接口DoWork,把这个方法注释掉,添加我们自己的代码,要记得添加如下几个引用:
using System.Collections.Generic;
using ClassLibrary1;
using System.Data;
using System.Data.OracleClient;
我们自己添加的代码如下:
public class Service1
{
[OperationContract]
public List<TT> GetDatabyName(Int32 pInParam)
{
String oracleSql;
List<TT> returnlist = new List<TT>();
String oracleConnString = "Data Source=ORCL;User ID=DHadmin;Password=DHhyhd123;"; OracleConnection cnn = new OracleConnection(oracleConnString);
cnn.Open();
//pass your SQL filter paramenter here
oracleSql = "SELECT * FROM TT WHERE ID=" + pInParam;
OracleCommand cmd = new OracleCommand(oracleSql, cnn);
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "TT");
foreach (DataRow dr in ds.Tables["TT"].Rows)
{
returnlist.Add(new TT
{
ID = Convert.ToInt32(dr["ID"]),
标准名称汉字=dr["标准名称汉字"].ToString()
});
}
return returnlist;
}
//public void DoWork()
//{
// // 在此处添加操作实现
// return;
//}
// 在此处添加更多操作并使用 [OperationContract] 标记它们
}
添加结束后重新生成一下。这里说明一下,一定要重新生成一下,原因在后面的操作中我会说明。
6、给Silverlight项目(SilverlightApplication1)添加服务引用,右击SilverlightApplication1,选择添加服务引用,出现的对话框如下:
单击这个对话框里的发现按钮,会得到如下的结果:
在命名空间那里改一个名字(建议修改,这样在后面的代码中会显得正式点),然后单击确定,添加这个服务引用。这里我就要说明一下,为什么之前我强调做完之后要生成和保存,因为在这里,如果不保存的话,就会有错误的信息提示(错误信息提示见下图)。
遇见这个错误的处理方法就是,单击确定后,重新生成你的工程,然后重新添加服务引用。 添加成功后,你会在你的工程里看见两个新的文件,如下图:
双击ServiceReferences.ClientConfig文件,在这个文件中,endpoint里面,可以看见我们的服务地址。
8、到这里,与数据库的链接基本就结束了,接下来是验证我们已经成功的连接上数据库。在MainPage.xmal文件中,添加一个Button和一个Textbox,为Button添加一个click事件。在事件中,添加代码如下:
using ceshi1.OracelServiceRef;
private void button1_Click(object sender, RoutedEventArgs e)
{
SilverlightApplication1.OracelServiceRef.Service1Client client=new
SilverlightApplication1.OracelServiceRef.Service1Client();
client.GetDatabyNameAsync(Convert.ToInt32(textBox1.Text.ToString()));
client.GetDatabyNameCompleted += new
EventHandler<GetDatabyNameCompletedEventArgs>(client_GetDatabyNameCompleted); client.CloseAsync();
}
void client_GetDatabyNameCompleted(object sender, GetDatabyNameCompletedEventArgs
e)
{
//throw new NotImplementedException();
System.Collections.ObjectModel.ObservableCollection<OracelServiceRef.TT> temp = new System.Collections.ObjectModel.ObservableCollection<TT>();
temp = e.Result;
for (int i = 0; i < temp.Count; i++)
{
MessageBox.Show(temp[i].ID.ToString() + "and" + temp[i].标准名称汉字.ToString()); }
}
运行程序。
这样,用Silverlight连接Oracle数据库就操作完成了。
…… 此处隐藏:1859字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




