在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位) =============================================== ...
随机推荐
- Ubuntu下部分文件操作的命令
(1)创建目录 mkdir filefoldname (2)删除空目录 rmdir filefoldname (3)删除非空目录及其中所有文件 rm -rf filefoldname (4)移动文件或 ...
- Sql 注意点
1. Set.Select赋值 使用SELECT语句来替代SET命令的主要优点是:可以在一个操作内同时给多个变量赋值.执行下面的SELECT语句,通过SELECT语句赋值的变量就可以用于任何操作了. ...
- javascript钩子机制
钩子机制是这样的,大家按照某一规则写一个方法(这个规则在方法名称上),然后页面加载完之前,统一执行所有的钩子函数. 注意callHooks方法,里面的局部变量s就是钩子函数名称中一定要有的内容.——这 ...
- iOS学习之NSPredictae及搜索框的实现
NSPredicate Predicate 即谓词逻辑, Cocoa框架中的NSPredicate用于查询,作用是从数据堆中根据条件进行筛选.计算谓词之后返回的结果永远为BOOL类型的值,当程序使用谓 ...
- 团队开发——冲刺1.e
冲刺阶段一(第五天) 冲刺阶段一(第五天) 1.昨天做了什么?优化界面细节. 查看C#资料,再解决自己电脑的问题. 2.今天准备做什么? 为解决自己电脑的问题,查找关于C#的资料,后期做准备.
- Android Framework层Power键关机流程(一,Power长按键操作处理)
一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManag ...
- PC缺少一个或多个网络协议 qq可登录(win10)
打开适配器连接 1打开网络适配器 2卸载microsoft 3 网络客户端 4重启
- Linux命令行与图形界面切换方法
1.实时切换 1.1 命令行->图形 startx 1.2 图形->命令行 Ctrl+Alt+F1--F6 2.启动默认 2.1 启动进入命令行 修改/etc/inittab文件 &quo ...
- SpringMVC——form标签的使用
----------------------------------------------------------------------------------- <%@page impor ...
- 数迹学——Asp.Net MVC4入门指南(3):添加一个视图
方法返回值 ActionResult(方法执行后的结果) 例子1 public ActionResult methordName() { return "string"; } 例 ...