设为首页 收藏本站
查看: 1271|回复: 0

[经验分享] .net 连接DB2数据库 ,采用sqlserver 2000的链接服务解决方案总结

[复制链接]

尚未签到

发表于 2016-11-17 03:43:02 | 显示全部楼层 |阅读模式
  绪论
  现在手上有一个项目,是要为陕西联通开发一个内部综合信息平台;整合平台的功能并不复杂,但是本系统牵扯到了系统整合,用户同步和单点登录认证。内部平台需要和门户系统的数据进行同步,以便实现用户单点登录和统一认证。门户的系统用的是IBM的产品架设的,服务器是Linux操作系统, 数据库是DB2 8.2,平台开发语言是Java、JSP。综合信息平台服务器是Microsoft server 2003 操作系统,数据库是Microsoft Sqlserver2000 ,开发语言是C#、asp.net。
    工作一:要完成C#(ASP.net)连接到远程
  步骤一:安装DB2运行时客户端
  Db2数据库一般人不用,了解的人自然很少。C#连接到db2 数据库 需要装客户端吗?刚开始我也不知道是不是需要装客户端,我当然不愿意装它,在试验了好多方法以后我都没有连接成功!因此我开始考虑装客户端,我发现db2有一种叫做运行时的客户端,文件也不大,安装很方便,于是我就在我的服务器上安装了db2的运行时客户端。
  
  步骤二:建立数据源。
  在服务器上—》开始—》管理工具—》建立数据源。
  

DSC0000.jpg

  点击链接服务器中的表,可以查看表的名字,但是你还不能看见表的结构和内容,想查看表的内容需要用查询分析器来操作,编写sql语句来操作数据库。但好处是你可以在Microsoft sql server 2000 下面完成对db2数据库的操作。这样感觉是不是有点神奇呢,其实道理很简单,一想你就明白了。这也许就是连接服务器存在的意义吧。
下面写一个语句试验一下连接服务器。

DSC0001.jpg

  结束
下面贴出我写的一个为了完成用户数据同步的存储过程,供大家参考一下,你可以根据你的需要编写你自己的存储过程,也可以将其添加成数据库作业定时调度


  create PROCEDURE UpdateDB2UsersAS--定义游标变量Declare   myCursor   cursor   For   select  [ID],changetype,changetime from OPENQUERY (db2 ,'select * from db2inst1.userinfo') where changetime>(select max(changetime) as locallast from userinfo)open   myCursor --定义变量declare @ID intdeclare @changetype varchar(50)declare @changetime varchar(50)--循环记录集Fetch   next   From   myCursor   into  @ID,@changetype,@changetime   While   @@FETCH_STATUS   =0   begin   --处理单条记录  IF (ltrim(rtrim(@changetype))='add' )BEGINIf EXISTS(select [id] from userinfo where [id]=@ID)begindelete from userinfo where [id]=@ID--SET IDENTITY_INSERT WebData.dbo.USERINFO ONinsert into userinfo select * from OPENQUERY (db2 ,'select * from db2inst1.userinfo') where [ID]=@IDendelsebegininsert into userinfo select * from OPENQUERY (db2 ,'select * from db2inst1.userinfo') where [ID]=@ID--更新到user表insert into users(USERNAME,mobile,upassword,chinaname,uid,CuCompanyNumber,DepartmentNumber,comefrom,usertype)select rtrim(UID),rtrim(mobile),rtrim(UID),rtrim(cn),rtrim(UID),rtrim(CuCompanyNumber),rtrim(DepartmentNumber),1,7 from userinfo where [ID]=@IDendENDELSE IF(ltrim(rtrim(@changetype))='modify')begindelete from userinfo where [id]=@ID--SET IDENTITY_INSERT WebData.dbo.USERINFO ONinsert into userinfo select * from OPENQUERY (db2 ,'select * from db2inst1.userinfo') where [ID]=@IDendFetch   next   From   myCursor   into  @ID,@changetype,@changetime    end   Close   myCursor   Deallocate   myCursor
     DSC0002.jpg
  如果你没有安装运行时客户端或者客户端是找不到IBM DB2 ODBC DRIVER 的。
  
  说明:到这一步 你就可以用ODBC数据源来连接db2数据库了。当让你也可以用db2的命令行来连接数据库。 DSC0003.jpg
  
  
  using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.Odbc;using System.Runtime.InteropServices;public partial class DB2Conn : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){Response.Write("hello");#region 连接测试//string odbc = "Dsn=DB2;uid=appuser;mode=SHARE;dbalias=TDIDB;pwd=password";OdbcConnection c = new OdbcConnection(odbc);c.Open();string sqlx = "select * from db2inst1.userinfo FETCH FIRST 10 ROWS ONLY";string sqlx1 = "describe table db2inst1.userinfo";OdbcCommand cmd = new OdbcCommand(sqlx1, c);OdbcDataReader dr = cmd.ExecuteReader();while (dr.Read()){Response.Write(dr[0].ToString() + "<br/>");}dr.Close();dr.Dispose();#endregion}}
  
步骤三:为了开发方便你可以选做步骤三

为DB2数据库添加链接服务。什么是连接服务器。这个你上网搜索一下就知道了,其实都是很简单的东西。我是在Microsoft SqlServer2000 中建立的链接服务。做这一步的前提是你必须完成前面两个步骤。

  也可以用C#代码来连接数据库。代码参考如下

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301246-1-1.html 上篇帖子: 自己开发DB2工具 (7) 下篇帖子: DB2 Sqlstate: 40001 发生了伴随自动回滚的超时或死锁
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表