编程使用c#连接到IBM db2的两种方式
一:使用c#通过odbc连接到IBM db2
使用 ConnectionString 属性连接到各种数据源。
部署:只要在客户端安装IBM DB2 ODBC driver。配置DSn即可。
1):可以单独下载DB2 Run-Time Client,大约(86.6m),安装后则odbc驱动程序安装成功。下载地址:ftp://ftp.software.ibm.com/ps/products/db2/fixes2/english-us/db2winIA32v8/fixpak/FP17a_WR21440/FP17a_WR21440_RTCL.exe
2):也可以直接安装ibm db2数据库后,该驱动程序自动安装。下载地址http://www6.software.ibm.com/sdfdl/v2/regs2/db2pmopn/Express-C/DB2ExpressC9/Xa.2/Xb.AjZr_0m973fVBNZX63eCwwrnyaoISX2bvOX3Ehc/Xc.db2exc_952_WIN_x86.zip/Xd./Xf.LPr.D1vk/Xg.4854742/Xi.swg-db2expresscviper2/XY.regsrvs/XZ.C7tZ8b_Fn0_ruc3stDVpbwY2QpI/db2exc_952_WIN_x86.zip
测试通过
1:dsn
2:driver
代码:
private const string dsn = "DSN=OutBound";
private const string conn = "Driver={IBM DB2 ODBC DRIVER};Database=sample;hostname=192.168.1.46;port=50000;protocol=TCPIP; uid=admin; pwd=admin";
private void button1_Click(object sender, EventArgs e)
{
// OdbcDataReader reader = ExecuteReader(dsn, "select * from admin.vi_cs_precalloutcust");
OdbcDataReader reader = ExecuteReader(conn, "select * from admin.vi_cs_precalloutcust");
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
this.textBox1.Text += reader[0].ToString() + "\r\n";
}
}
reader.Close();
}
public static OdbcDataReader ExecuteReader(string connectionStr, string strSQL)
{
OdbcConnection connection = new OdbcConnection(connectionStr);
OdbcCommand cmd = new OdbcCommand(strSQL, connection);
try
{
connection.Open();
OdbcDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
}
catch (SqlException E)
{
WriteLogFile.WriteMessage("DBOper.log", "error DBHelper.ExecuteReader " + E.Message.ToString());
}
return null;
}
二:使用c#通过
连接到IBM db2
参见https://www6.software.ibm.com/developerworks/cn/dmdd/library/tutorials/dm0504hoy/tutorial/index.html
部署:需要客户端安装DB2 Runtime Client Lite。大约500多M。下载地址ftp://ftp.software.ibm.com/ps/products/db2/fixes2/english-us/db2winIA32v8/fixpak/FP17_WR21416/FP17_WR21416_RTLITE.zip
测试未通过。发布到另外一台机器,总是显示“Length cannot be less than zero. Parameter name: length ”的错误。
代码:
vs2005测试通过,引用IBM.Data.DB2.dll(net2.0版本),引用IBM.Data.ApplicationBlocks.DB2.dll
private void button1_Click(object sender, EventArgs e)
{
DB2DataReader dr = null;
string connString = "DATABASE=SAMPLE;SERVER=192.168.1.46:50000;User ID=admin;Password=admin;";
try
{
dr = DB2Helper.ExecuteReader(connString, CommandType.Text, "select * from vi_cs_precalloutcust");
while (dr.Read())
{
txtResults.Text = txtResults.Text + dr.GetValue(0) + " (" + dr.GetValue(1) + ")" + Environment.NewLine;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
if (dr != null)
{
((IDisposable)dr).Dispose();
}
}
编程使用c#连接到IBM db2的两种方式的更多相关文章
- Java并发编程(十三)线程间协作的两种方式:wait、notify、notifyAll和Condition
在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权.因为生产者如果 ...
- python 之 并发编程(线程理论,开启线程的两种方式,进程与线程的区别,线程对象的其他方法)
9.9 线程理论 1.什么是线程 线程指的是一条流水线的工作过程 进程根本就不是一个执行单位,进程其实是一个资源单位,一个进程内自带一个线程,线程才是执行单位 2.进程VS线程 同一进程内的线程们共享 ...
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- javascript消除字符串两边空格的两种方式,面向对象和函数式编程。python oop在调用时候的优点
主要是javascript中消除字符串空格,比较两种方式的不同 //面向对象,消除字符串两边空格 String.prototype.trim = function() { return this.re ...
- 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- python 之 并发编程(开启子进程的两种方式,进程对象的属性)
第九章并发编程 同一个程序执行多次是多个进程 import time import os print('爹是:',os.getppid()) #父进程PID,(pycharm) print('me ...
- python制作电脑定时关机办公神器,另含其它两种方式,无需编程!
小编本人目前就是在电脑面前工作,常常会工作到凌晨两三点还在为自己的梦想奋斗着.有时在办公椅上就稀里糊涂睡着了,我相信有很多朋友和我一样,这样是很不好的.第一对身体不好,第二对电脑不好. 对身体 ...
- 我给女朋友讲编程CSS系列(1) –添加CSS样式的3种方式及样式表的优先权
如果说,原生态就是美,那么,我们就没有必要穿衣打扮. 网页是什么? 说白了,网页就是一堆[html标签]有序的搭配,让[CSS属性值]整整容,请[Javascript语言]处理一下事件. 一个人的整容 ...
- java并发编程(十五)内存可见两种方式 加锁和volatile
1.volatile变量是一种稍弱的同步机制在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比synchronized关键字更轻量级的同步机制. ...
随机推荐
- 華氏溫度轉化為攝氏溫度的簡單JavaScript代碼
今天,跟著W3School學到了"JavaScript函數",代碼都挺簡單的,在運算符調用函數的地方寫了一個小程序.原碼程序是這樣的: <!DOCTYPE html> ...
- goroutine上下文切换机制
goroutine是go语言的协程,go语言在语言和编译器层面提供对协程的支持.goroutine跟线程一个很大区别就是线程是操作系统的对象,而goroutine是应用层实现的线程.goroutine ...
- springcloud高可用方案
1. 场景描述 公司在规划后续可能会做中台服务,考虑用微服务的方案,让用springcloud部署个简单的高可用Demo. 2. 解决方案 2.1 方案说明 demo用了5台虚拟机: (1)1台gat ...
- [HNOI2011]数学作业 题解
这道题看着挺难然而其实看破了也挺容易的.首先N极其的大,几乎要炸掉long long ,所以O(n)的算法一定是扑街了,身为一个脑残志坚的OIer,怎能不想到矩阵快速幂优化呢? 有趣的是这道题矩阵有很 ...
- BZOJ4152 The Captain(dijkstra+巧妙建图)
BZOJ4152 The Captain 题面很简洁: 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. 很明显 ...
- js继承的关系(一)
js继承的关系多,而且拥有不同的特点.同时也是必须了解掌握的知识点.首先,要先知道什么是构造函数? 构造函数 构造函数和普通函数的区别:仅在于调用方式不同,任何函数,只要通过 new 操作符来调用,那 ...
- http://www.jianshu.com/p/2dd54ec0bb43 程序员纪录片
http://www.jianshu.com/p/2dd54ec0bb43 程序员纪录片
- QRowTable表格控件(三)-效率优化之-合理使用QStandardItem
目录 一.开心一刻 二.概述 三.效果展示 四.QStandardItem 1.QStandardItem是什么鬼 2.性能分析 3.QStandardItem使用上的坑 五.相关文章 原文链接:QR ...
- CF543B Destroying Roads 题解
看到没有题解就贡献一波呗 分析: 这题其实就是想让我们求一个图中两条最短路的最短(好把更多的边删掉). 我们先考虑一条最短路,别问我我怎么会的显然,就是s和t跑个最短路再用n-就行. 然后就是两条喽! ...
- [leetcode] 45. Jump Game II(hard)
原题 题意: 是Jump Game的衍生题(题解),题意求跳到最后一格所需最少步数,(默认所测数据永远可以跳到最后一格). 思路: 利用贪心,遍历数组,记录在每一步可跳跃到的最大区域. 1.当前步数 ...