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

[经验分享] 如何把数据放到C#的心里之 DB2实例

[复制链接]

尚未签到

发表于 2016-11-18 10:07:52 | 显示全部楼层 |阅读模式
  平时偶尔因为工作需要得自己写一些小工具去操作数据库,因为只是需要实现一些小的功能,也不涉及多类型的数据库,也许就是一次性的使用。所以此时那些大而全的数据库操作框架,也就不再那么适合我了。而本篇博文主要是记录自己在工作中主要使用的几种方式进行,归纳与汇总。
  一、目的。
  
  1、了解数据库操作的基本步骤。
  2、了解使用ODBC的方式进行数据库的基本操作。
  3、了解使用OleDb的方式进行数据库的基本操作。
  4、了解使用数据库厂商提供的数据库操作类库的方式进行数据库操作。
  二、基本原理与过程。
  1、一般我们操作数据库主要设计的几个步骤基本上是固定的。
  
  1、新建数据库连接
  2、创建数据库命令并且设置相关参数
  3、执行数据库命令获取返回结果
  4、关闭数据库连接
  2、预备内容(因为涉及的文后使用的ODBC的方式使用的DSN,需要配置预先配置下ODBC)
  要想使用DB2数据库的ODBC必须得自己安装对应的驱动程序。微软只为自己的数据库和Oracle的数据库提供了默认就安装的驱动程序。具体的驱动下载和安装可以自己百度得之。
DSC0000.jpg

DSC0001.jpg

  给数据源填写上有意义的命名之后,如果在下拉框中没有你的数据库的话,直接点击添加即可。
DSC0002.jpg   

DSC0003.jpg

  DB2的默认端口号50000,如果你不清楚自己是否修改过默认的端口号的话,你可以通过在db2的实例中输入db2 get dbm cfg 命令,找到你自己对于的端口信息即可。
  3、使用ODBC的方式进行数据库的基本操作。
  C#中的System.Data.Odbc命名空间提供了很多集成好了的数据库操作类。
  第一步、使用OdbcConnection 创建与数据库的连接。
  通过使用指定的连接字符串,创建对应的数据库连接即可。
  
  "Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;"
  "Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=Yes"
  "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\Northwind.mdb"
  "Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls"
  "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\bin"
  "DSN=dsnname"
  上面的几个样式是微软的MSDN上给出的相应的配置方法。最简单的方式就是使用最后面的一种。因为我在使用时,都会建立好相应的DSN。
  第二步、创建数据库命令并且设置相关的参数。
  最普通的方法是使用时创建 OdbcCommand类的实例,这个类可以执行SQL语句或存储过程。通过使用两个参数实例化这个类的方法。
  OdbcCommand(String, OdbcConnection) 第一个参数确定了需要执行的SQL或存储过程。第二个参数确定了在那个数据库连接上执行。
  第三步、执行数据库命令获取返回结果集,并且对结果机进行处理。
  OdbcCommand实例提供三个基本的数据库操作方法。
  ExecuteReader():执行对查询返回的结果集。
  ExecuteNonQuery():执行数据 更新语句。(Insert,Delete,Update,Set)
  ExecuteScalar():从数据库中返回查询结果集的第一行的第一列。
  使用OdbcDataAdapter 类搭配OdbcCommandBuilder可以用来填充 DataSet。
  代码实例:
  
      1:   private bool Connection2DB2WithODBC()
   2:   {
   3:              try
   4:              {
   5:                  OdbcConnection odbcConnection = new OdbcConnection("DSN=localdbInst"); //创建连接
   6:                  string commandText = "INSERT INTO DB2INST1.TEST (ID, NAME, AGE) VALUES (3, 'candy', 30)";
   7:                  string commandText2 = " Select count(*) from test";
   8:                  string commandText3 = "Select * from test";
   9:                  OdbcCommand command = new OdbcCommand(commandText3);  //创建命令
  10:                  command.Connection = odbcConnection;
  11:   
  12:                  odbcConnection.Open();  //打开数据库连接
  13:   
  14:                  //                command.ExecuteNonQuery();
  15:                  //                int count = (int)command.ExecuteScalar();
  16:                  //                MessageBox.Show("The Count of table is:" + count);
  17:                  OdbcDataReader reader = command.ExecuteReader(); //执行数据库命令
  18:                  string content = "";
  19:                  while (reader.Read())
  20:                  {
  21:                      string id = (string)reader[0];
  22:                      string name = (string)reader[1];
  23:                      int age = (int)reader[2];
  24:                      content += "Id:" + id + "  name:" + name + "  age:" + age + Environment.NewLine;
  25:                  }
  26:                  MessageBox.Show(content);
  27:                  odbcConnection.Close();
  28:              }
  29:              catch (OdbcException exception)
  30:              {
  31:                  MessageBox.Show(exception.Message + exception.ErrorCode + exception.Data);
  32:                  return false;
  33:              }
  34:              return true;
  35:   }
  4、通过OleDB的连接方式进行数据库操作。
  百度百科定义OleDB:OLE DB(OLEDB)是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化问题语言(SQL)能力,还具有面向其他非SQL数据类型的通路。
  说明Ole DB相对于ODBC来说支持的范围更加广泛一点。
  创建连接的方式 MSDN 上有具体的规范。

  "Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=Yes"
  "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\bin\LocalAccess40.mdb"
  "Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI"
  "Provider=IBMDADB2;" + "Data Source=databaseName;UID=username;PWD=password;"

  其余的步骤和ODBC是一样的只不过实例化的类不同了而已。
  连接代码实例。





   1:   private bool Connection2DB2WithOleDb()
   2:   {
   3:        try
   4:        {
   5:          OleDbConnection con = new OleDbConnection("Provider=IBMDADB2;" + "Data Source=sample;UID=db2inst1;PWD=kivision@123;");
   6:          con.Open();
   7:        }
   8:        catch (Exception)
   9:        {
  10:           return false;
  11:        }
  12:        return true;
  13:   }
  5、使用IBM 提供的程序集。安装完客户端之后在安装的目录下的BIN目录下有个netf11的目录,这个目录中提供的程序集,可以很方便的操作DB2数据库。功能也相对较齐全点。针对性也比较强。
  使用IBM提供的这个程序集,不仅有通过使用ODBC具有的方法之外,还可以返回为XmlReader形式的结果集。数据的通用性也大大的提升了。同样为DB2编程中经常使用的参数赋值提供了很多方便的方法。
  连接代码实例:



   1:  private bool Connection2DB2()
   2:  {
   3:      DB2Connection cn = new DB2Connection("Database=SAMPLE;UserID=db2inst1;Password=kivision@123;Server=192.168.1.102");
   4:      DB2Command myCommand = new DB2Command("INSERT INTO DB2INST1.TEST (ID, NAME, AGE) VALUES (2, 'kasson', 25)");
   5:      myCommand.Connection = cn;
   6:      try
   7:      {
   8:          cn.Open();
   9:          myCommand.ExecuteNonQuery();
  10:          cn.Close();
  11:      }
  12:      catch (Exception )
  13:      {
  14:          return false;
  15:      }
  16:      return true;
  17:  }



三、使用总结。

本篇博文主要介绍了在开发中经常使用的几种数据库连接方式,并且在使用过程中,个人感觉ODBC和Ole DB基本上没有多大的区别,Ole DB相对而言支持的内容更加广泛一些而已。反过来的意思也就是说,ODBC相比Ole DB更加专业。同理对于厂商提供的程序集来说,也是一样的。本着不重复造轮子的原则,推荐优先选择厂商提供的程序集。不过对于一些数据库如果要使用厂家提供的便利需要安装一下额外的产品。

运维网声明 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-302014-1-1.html 上篇帖子: DB2索引类型介绍 下篇帖子: DB2字符函数简介及使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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