Silverlight学习笔记[4] - 在Silverlight中通过WCF连接ORACLE DB数据库(译)

Silverlight学习笔记[4] - 在Silverlight中通过WCF连接ORACLE DB数据库(译),第1张

概述http://hi.baidu.com/%C7%A7%C0%EF%BA%AE%C9%AB/blog/item/f18b7cc46cfe29dc38db4945.html 这不是我的原创,我也是上网学习的~ How to get data from Oracle DB in silverlight via WCF ? 查看原文可以搜索以上文章名。 这个只是给入门和遇到问题的朋友——毕竟真的有很多小细

http://hi.baidu.com/%C7%A7%C0%EF%BA%AE%C9%AB/blog/item/f18b7cc46cfe29dc38db4945.html

这不是我的原创,我也是上网学习的~

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;//用来说明Listusing 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,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" name="mybutton" VerticalAlignment="top" WIDth="75" Click="mybutton_Click" />

总结

以上是内存溢出为你收集整理的Silverlight学习笔记[4] - 在Silverlight中通过WCF连接ORACLE DB数据库(译)全部内容,希望文章能够帮你解决Silverlight学习笔记[4] - 在Silverlight中通过WCF连接ORACLE DB数据库(译)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069917.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存