在silverlight中通过WCF连接ORACLE DB数据库(转)
转自 http://hi.baidu.com/qianlihanse/item/458aa7c8d93d4e0cac092ff4
这不是我的原创,我也是上网学习的~
How to get data from Oracle DB in silverlight via WCF ?
查看原文可以搜索以上文章名。
这个只是给入门和遇到问题的朋友——毕竟真的有很多小细节没有说明!
而且英文的确看着不舒服。中国进步,还要靠大家的付出啊!!!
-----------------------------------------------------------------------------------------------------------
第一步:新建Silverlight应用程序;
第二步:在.web类型项目上右键,添加“新建项”。选择Silverlight——启用了Silverlight的WCF服务;

然后就多了这个东西:
(图MB)
第三步:在解决方案上右键,添加“新项目”。选择Window——类库;

此类库为调用查询的数据表的属性集合,因此要写上数据表中需要用到字段以及GET、SET方法。
注意此处要在CS文件中添加using System.Runtime.Serialization引用,在类库的引用中添加System.Runtime.Serialization.dll!
这个类库个人理解为一个数据结构,用来存储返回数据表的数据。

第四步:改写第二步中生成的.svc文件下的.svc.cs文件——在.Web类型项目下的(图MB所示)
将:
public void DoWork()
{
// 在此处添加操作实现
return;
}
改写为:
public List<Class1> GetDatabyName(Int32 pInParam)
{
String oracleSql;
List<Class1> returnlist = new List<Class1>();
//用LIST来获取DATASET
//创建ORACLE连接
String oracleConnString = "Data Source=testDB;User Id=TEST;Password=test;";
OracleConnection cnn = new OracleConnection(oracleConnString);
cnn.Open();
oracleSql = "SELECT * FROM TBL_TEST WHERE MYID=" + pInParam;
OracleCommand cmd = new OracleCommand(oracleSql, cnn);
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "TBL_TEST");
foreach (DataRow dr in ds.Tables["TBL_TEST"].Rows)
{
returnlist.Add(new Class1
{
MYID = Convert.ToInt32(dr["MYID"]),
MYRECORD = dr["MYRECORD"].ToString()
});
}
//以LIST形式返回DATASET
return returnlist;
}
注意了,要添加引用:
using System.Collections.Generic;——用来说明List
using ClassLibrary1;
using System.Data.OracleClient;
using System.Data;——用来说明DATASET
在.web下的引用添加System.Data.OracleClient.dll——用来解释ORACLE语句;还有你的类库也要添加!在引用中的项目里添加——用来解释List<>中的数据类型!
----------------------------------最终代码---------------------------------------
using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Collections.Generic;
using ClassLibrary1;
using System.Data.OracleClient;
using System.Data;
namespace SilverlightApplication7.Web
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1
{
[OperationContract]
public List<Class1> GetDatabyName(Int32 pInParam)
{
String oracleSql;
List<Class1> returnlist = new List<Class1>();
//Get your Customer Data from Oracle DB, if you use DataSet, get the DataSet,
//Create Customer Object for each row in your DataTable
String oracleConnString = "Data Source=testDB;User Id=TEST;Password=test;";
OracleConnection cnn = new OracleConnection(oracleConnString);
cnn.Open();
//pass your SQL filter paramenter here
oracleSql = "SELECT * FROM TBL_TEST WHERE MYID=" + pInParam;
//oracleSql = "SELECT * FROM TBL_TEST";
OracleCommand cmd = new OracleCommand(oracleSql, cnn);
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "TBL_TEST");
foreach (DataRow dr in ds.Tables["TBL_TEST"].Rows)
{
returnlist.Add(new Class1
{
MYID = Convert.ToInt32(dr["MYID"]),
MYRECORD = dr["MYRECORD"].ToString()
});
}
return returnlist;
}
// 在此处添加更多操作并使用 [OperationContract] 标记它们
}
}
-------------------------------------------------------------------------
第五步:快成功了!在C#文件(就是除了.web还有类库以外的那个文件头那里,右键,添加“服务引用”);

按发现;不行对吧?
很好,因为你要先按F5编译一次程序。再来!

行了!(不行的同学留言吧~为你们默哀)
第六步:在MainPage.xaml中做一点点修改,首先加一个BUTTON,名为myButton,再加一个TextBox,名为myText。
在MainPage.xaml.cs添加引用using System.Collections.ObjectModel;using SilverlightApplication7.ServiceReference1;
最后MainPage.xaml.cs完整代码为:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using SilverlightApplication7.ServiceReference1;
namespace SilverlightApplication7
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void myButton_Click(object sender, RoutedEventArgs e)
{
SilverlightApplication7.ServiceReference1.Service1Client client = new SilverlightApplication7.ServiceReference1.Service1Client();
//Pass your parameter , pass id 4 will return string "Ray"
client.GetDatabyNameAsync(Convert.ToInt32(myText.Text.ToString()));
client.GetDatabyNameCompleted += new EventHandler<GetDatabyNameCompletedEventArgs>(client_GetDatabyNameCompleted);
//Close the connection, when you get the error connection timeout , acctually, the connections limited to 10 for each client.
client.CloseAsync();
}
private void client_GetDatabyNameCompleted(object sender, GetDatabyNameCompletedEventArgs e)
{
//We need a collection object to receive the return list form WCF
//We can only use the class defined in Web Service to create client instance
System.Collections.ObjectModel.ObservableCollection<ServiceReference1.Class1> temp =
new ObservableCollection<ServiceReference1.Class1>();
temp = e.Result;
for (int i = 0; i < temp.Count; i++)
{
MessageBox.Show(temp[i].MYID.ToString() + " and " + temp[i].MYRECORD.ToString());
}
}
}
}
最后总观~

-------------------------------------------------------
对了,你还要有一个ORACLE数据库,我这个例子是:数据库名:testDB;用户名:TEST;密码:test;所以对应语句为Data Source=testDB;User Id=TEST;Password=test;
然后生成一个表——在ORACLE的SQL PLUS中或者什么的,自己解决:
CREATE TABLE TBL_TEST
(
MYID NUMBER(20),
MYRECORD VARCHAR2(50 BYTE)
)
Insert into TBL_TEST(MYID, MYRECORD)Values(1, 'Hello');
Insert into TBL_TEST(MYID, MYRECORD)Values(2, 'I');
Insert into TBL_TEST(MYID, MYRECORD)Values(3, 'am');
Insert into TBL_TEST(MYID, MYRECORD)Values(4, 'Ray');
表名为TBL_TEST
--------------------------------------------
最后最后再提醒,记得在MainPage.xaml中的Butto语句中添加Click事件——如最后所示!
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="205,216,0,0" Name="myButton" VerticalAlignment="Top" Width="75" Click="myButton_Click" />
在silverlight中通过WCF连接ORACLE DB数据库(转)的更多相关文章
- DELPHI中使用UNIDAC连接ORACLE数据库
DELPHI中使用UNIDAC连接ORACLE数据库 最近在DELPHI中使用到UNIDAC连接到oracle数据库,这样可以不要安装oracle客户端,比较方便使用:所以简单学习了一下,主要是用 ...
- DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常
最近,DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常. 版本说明 commons-dbcp-1.4.jar commons-pool-1 ...
- win7下VS.NET中通过LinqToSQL连接oracle数据库
.NetFramework3.5提供了LinqToSQL组件,为我们访问数据库提供了方便.我用的是VS+Oracle开发工具.也想体验一下快捷方便的感觉. 1.连接Oracle数据库 在连接Oracl ...
- VS2010 VS2012 如何连接Oracle 11g数据库
oracle是开发者常用的数据库,在做.NET开发是,由于Vs自带的驱动只能连接oracle 10g及以下版本,那么如何连接oracle 11g呢? 工具/原料 事先安装VS2010或者VS201 ...
- Java连接Oracle/MySQL数据库教程
一.下载 oracle java驱动下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090 ...
- python通过mongoengine中connect函数连接多个数据库
mongoengine支持程序同时连接多个数据库,这些数据库可以位于一个或多个mongo之中,通过alias名称区分不同的连接即可. 可以通过switch_db切换到不同的数据库,进行读写操作,swi ...
- NaviCat Primium远程连接Oracle 11g数据库操作方法
说明:作者使用的系统是windows 10 64位系统,使用的软件及插件都是基于64位系统进行安装.一. 软件准备 1.windows 10 64位 操作系统 2.NaviCat Primium 11 ...
- PL/SQL Developer工具包和InstantClient连接Oracle 11g数据库
一.前言 PLSQL Developer是Oracle数据库开发工具,很牛也很好用,PLSQL Developer功能很强大,可以做为集成调试器,有SQL窗口,命令窗口,对象浏览器和性能优化等功能. ...
- sqldbx配置连接Oracle 12C数据库
本地开发环境: Windows10 64位.Oracle 12C客户端 32位.sqlDBX (32位) =============================================== ...
随机推荐
- 第1章 Express MongoDB 搭建多人博客
学习环境 Node.js : 0.10.22 + Express : 3.4.4 + MongoDB : 2.4.8 + 快速开始 安装 Express express 是 Node.js 上最流行的 ...
- 初用Ubuntu常见问题及解决方案之一
1.我的Vaio Fit15e的无线网卡是BCM43142,装了Ubuntu后为了装驱动折腾了好久,因为这款网卡在Broadcom官网都找不到驱动,google了一大圈,一个最简单的命令可以解决这个问 ...
- checkbox选中与取消选择
先上代码 <form> 你爱好的运动是?<br/> <input type="checkbox" name="items" val ...
- BlackHat会议上将公布一款免费的汽车黑客工具
汽车,无可厚非是现代社会很重要的交通工具,但与此同时却也带来了诸多安全隐患,不管怎样,汽车安全都是我们不可忽视的一个重大问题. 即将免费分享该工具 近日一名法国研究者将发布一款检测汽车安全漏洞的工具, ...
- 315Mhz、433Mhz无线遥控信号的解码分析和模拟
摘要 前段时间学习无线电的同时了解到arduino是作为技能尚未成熟技术宅的我继树莓派又一个不错的选择.于是花了200元购得3块arduino开发板(2*nano&1*uno)和其他传感器等, ...
- Python12期培训班-day1-登陆验证代码分享
#!/usr/bin/env python import sys import getpass afile = 'afile' bfile = 'bfile' circulation_num=0 #循 ...
- bigworld源码分析(5)——BaseApp分析
BaseApp负载部分,核心代码缺失...网上的源码中都找不到,暂时没办法分析其核心内容,很遗憾,继续寻找吧,等找到了,再继续自己的分析.
- ios项目接入sdk事项
使用cocos2d-x引擎创建的项目在xcode里可以看到都带有一个ios目录,把要接入的sdk的包含.framework库文件和.bundle的资源文件的父目录拖入到xcode项目里的这个ios目录 ...
- YHLMR009 交货单查询
*********************************************************************** * Title : YHLMR009 * * Appli ...
- Oracle函数--字符串拼接
常用的字符串聚合(拼接)函数介绍 1.WMSYS.WM_CONCAT 从oracle 10G开始支持,使用案例如下: select deptno,wmsys.wm_concat(ename) from ...