搜索.net连接db2与as400的方式
使用ODBC或者是OLEDB data provider都可以与db2或者as400交互,但相应速度影响了程序的执行效率。
在阅读.net资料时知道了,采用DBMS产商提供的.net data provider可以提高.net访问其数据库的速度。
对于db2来说,采用OLEDB 方式,代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
OleDbConnection dbConn = new OleDbConnection();
dbConn.ConnectionString = "Provider=IBMDADB2;Database=XXX;Hostname=XXX.XXX.XXX.XXX;Protocol=TCPIP; Port=XXXX;Uid=XXX;Pwd=XXX;";
if (dbConn.State != System.Data.ConnectionState.Open)
dbConn.Open();
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter("select * from TABLEXXX;", dbConn);
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
DateTime et = DateTime.Now;
TimeSpan span = et - bt;
Response.Write("执行使用" + span.Seconds + "秒时间");
dbConn.ConnectionString = "Provider=IBMDADB2;Database=XXX;Hostname=XXX.XXX.XXX.XXX;Protocol=TCPIP; Port=XXXX;Uid=XXX;Pwd=XXX;";
if (dbConn.State != System.Data.ConnectionState.Open)
dbConn.Open();
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter("select * from TABLEXXX;", dbConn);
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
DateTime et = DateTime.Now;
TimeSpan span = et - bt;
Response.Write("执行使用" + span.Seconds + "秒时间");
采用db2方式代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
DB2Connection dbConn = new DB2Connection();
dbConn.ConnectionString = "Server=XXX.XXX.XXX.XXX:XXX;Database=XXXX;UID=XXX;PWD=XXX;";
if (dbConn.State != System.Data.ConnectionState.Open)
dbConn.Open();
DataSet ds = new DataSet();
DB2DataAdapter da = new DB2DataAdapter("select * from TABLEXXX;", dbConn);
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
DateTime et = DateTime.Now;
TimeSpan span = et - bt;
Response.Write("执行使用"+span.Seconds+"秒时间");
dbConn.ConnectionString = "Server=XXX.XXX.XXX.XXX:XXX;Database=XXXX;UID=XXX;PWD=XXX;";
if (dbConn.State != System.Data.ConnectionState.Open)
dbConn.Open();
DataSet ds = new DataSet();
DB2DataAdapter da = new DB2DataAdapter("select * from TABLEXXX;", dbConn);
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
DateTime et = DateTime.Now;
TimeSpan span = et - bt;
Response.Write("执行使用"+span.Seconds+"秒时间");
两种方式同时读取同一张小数据量的数据表,第一次执行时都会花费较长一段时间,oledb会花费36秒,db2db会花费32秒时间。这4秒钟的价值在小数据量查询中可能没有能够体现多少。但如果有较大的数据量的时候,应该会有更大的差别。
对于as/400而言,i系列的db2,提供的数据库连接串会有所不同。对于.net framework的支持,windows Client Access 5.3以下只提供OLEDB的连接方式,而iDb2Db的连接方式只有在5.3以上。对于.net framework2.0的支持,却要有windows Client Access6.1以上。因为各种条件限制,这边暂时没有时间完成这部分的测试。
随便,as/400的windows Client Access是与400小型机绑定出售的,所以一般网络上找不到公司已购买的以外的版本,ibm官网上提供的是SP包,下载安装是可以,但好像用处不大。