操作数据类

避免代码重用、造对象太多、不能分工开发

利用面向对象的方法,把数据访问的方式优化一下,利用封装类

 

一般封装成三个类:

1.数据连接类 提供数据连接对象

需要引用命名空间: using System.Data.SqlClient;

例:

  1. public class DBConnect
  2. {
  3. private static string connstring = "server=.;database=mydb;user=sa;pwd=123";
  4.  
  5. public static SqlConnection Conn //利用静态的方法 通过某个对象或方法可以获取到连接对象
  6. {
  7. get { //只读属性
  8. return new SqlConnection(connstring);
  9. }
  10. }
  11. }

2.实体类 根据数据库中的表来做

比如Nation表 就建一个Nation类

表名=类名;封装的字段=表里面的属性

例:

  1. public class Nation
  2. {
  3. private string code;
  4.  
  5. public string Code
  6. {
  7. get { return code; }
  8. set { code = value; }
  9. }
  10. private string name;
  11.  
  12. public string Name
  13. {
  14. get { return name; }
  15. set { name = value; }
  16. }
  17. }

3.数据访问类 实现对表的各种操作 增删改查

需要引用命名空间: using System.Data.SqlClient;

查询所有数据返回的是一个集合,利用List<写存放数据的类型> 泛型集合(广泛利用于集合里面存对象)

例:

  1. //主要实现对Nation表的各种操作(增删改查)
  2. public class NationDA
  3. {
  4. private SqlConnection _conn; //连接对象
  5. private SqlCommand _cmd; //命令对象
  6. private SqlDataReader _dr; //读取器对象
  7.  
  8. //构造方法来初始化连接对象 命令对象
  9. public NationDA()
  10. {
  11. _conn = DBConnect.Conn; //对连接对象进行初始化
  12. _cmd = _conn.CreateCommand(); //对命令对象进行初始化
  13. }
  14.  
  15. //添加数据的方法
  16. public bool Add(string code,string name)
  17. {
  18. _cmd.CommandText = "insert into Nation values(@code,@name)";
  19. _cmd.Parameters.AddWithValue("@code",code);
  20. _cmd.Parameters.AddWithValue("@name",name);
  21.  
  22. _conn.Open();
  23. int n = _cmd.ExecuteNonQuery();
  24. _conn.Close();
  25.  
  26. if (n > )
  27. {
  28. return true;
  29. }
  30. else
  31. {
  32. return false;
  33. }
  34. }
  35.  
  36. //查询所有数据的方法
  37. public List<Nation> Select()
  38. {
  39. _cmd.CommandText = "select * from Nation";
  40. _conn.Open();
  41. _dr = _cmd.ExecuteReader();
  42.  
  43. //定义一个空的集合
  44. List<Nation> list = new List<Nation>();
  45.  
  46. if (_dr.HasRows)
  47. {
  48. while (_dr.Read())
  49. {
  50. //造一个Nation对象
  51. Nation data = new Nation();
  52. data.Code = _dr[].ToString();
  53. data.Name = _dr[].ToString();
  54.  
  55. //扔到集合里面
  56. list.Add(data);
  57. }
  58. }
  59. _conn.Close();
  60. return list;
  61. }
  62. //根据条件查询的方法
  63. public List<Nation> Select(string code)
  64. {
  65. _cmd.CommandText = "select * from Nation where Code=@code";
  66. _cmd.Parameters.Clear();
  67. _cmd.Parameters.AddWithValue("@code",code);
  68. _conn.Open();
  69. _dr = _cmd.ExecuteReader();
  70.  
  71. //定义一个空的集合
  72. List<Nation> list = new List<Nation>();
  73.  
  74. if (_dr.HasRows)
  75. {
  76. while (_dr.Read())
  77. {
  78. //造一个Nation对象
  79. Nation data = new Nation();
  80. data.Code = _dr[].ToString();
  81. data.Name = _dr[].ToString();
  82.  
  83. //扔到集合里面
  84. list.Add(data);
  85. }
  86. }
  87.  
  88. _conn.Close();
  89. return list;
  90. }
  91.  
  92. //删除方法
  93. public bool Delete(string code)
  94. {
  95. _cmd.CommandText = "delete from Nation where Code=@code";
  96. _cmd.Parameters.Clear();
  97. _cmd.Parameters.AddWithValue("@code",code);
  98.  
  99. _conn.Open();
  100. int n = _cmd.ExecuteNonQuery();
  101. _conn.Close();
  102.  
  103. if (n > )
  104. {
  105. return true;
  106. }
  107. else
  108. {
  109. return false;
  110. }
  111. }
  112.  
  113. //修改方法
  114. public bool Update(string code,string name)
  115. {
  116. _cmd.CommandText = "update Nation set Name=@name where Code=@code";
  117. _cmd.Parameters.Clear();
  118. _cmd.Parameters.AddWithValue("@code",code);
  119. _cmd.Parameters.AddWithValue("@name",name);
  120.  
  121. _conn.Open();
  122. int n = _cmd.ExecuteNonQuery();
  123. _conn.Close();
  124.  
  125. if (n > )
  126. {
  127. return true;
  128. }
  129. else
  130. {
  131. return false;
  132. }
  133.  
  134. }
  135.  
  136. public string NationName(string code)
  137. {
  138. _cmd.CommandText = "select Name from Nation where Code=@code";
  139. _cmd.Parameters.AddWithValue("@code",code);
  140.  
  141. _conn.Open();
  142. _dr = _cmd.ExecuteReader();
  143.  
  144. if (_dr.HasRows)
  145. {
  146. _dr.Read();
  147. return _dr[].ToString();
  148. }
  149. else
  150. {
  151. return "汉族";
  152. }
  153.  
  154. _conn.Close();
  155.  
  156. }
  157. }

查看元素使用foreach遍历集合

※foreach里面不能加减任何一个元素,但可以修改数据

例:

  1. Console.WriteLine("请输入代号:");
  2. string code = Console.ReadLine();
  3.  
  4. List<Nation> list = da.Select(code);
  5.  
  6. foreach (Nation data in list)
  7. {
  8. Console.WriteLine(data.Code + "--" + data.Name);
  9. }

ADO.NET 数据库操作类的更多相关文章

  1. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  2. Android打造属于自己的数据库操作类。

    1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...

  3. PHP 数据库操作类:ezSQL

    EZSQL类介绍: 下载地址:http://www.jb51.net/codes/26393.htmlezsql是一个小型的快速的数据库操作类,可以让你很容易地用PHP操作各种数据库( MySQL.o ...

  4. 通用数据库操作类,前端easyui-datagrid,form

    实现功能:     左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[ ...

  5. php : mysql数据库操作类演示

    设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...

  6. php MySQL数据库操作类源代码

    php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...

  7. 一个基于PDO的数据库操作类(新) 一个PDO事务实例

    <?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录 ...

  8. ecshop数据库操作类

    ECShop v2.7.2没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现. 好处:实现非常轻量,只有一个文件,27Kb,大大减小了分发包的文件大小. 当网站需要做me ...

  9. 设计模式 - 单例模式mysql数据库操作类

    待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...

随机推荐

  1. (中等) POJ 1054 The Troublesome Frog,记忆化搜索。

    Description In Korea, the naughtiness of the cheonggaeguri, a small frog, is legendary. This is a we ...

  2. jquery中,使用append增加元素时,该元素的绑定监听事件失效

    举例:如果在一个<div id="resultArea"></div>中,通过append添加一个id="checkOutTip"的文本 ...

  3. 在阿里云ECS(CentOS6.5)上安装redis

    下载所需的redis 命令: wget http://download.redis.io/releases/redis-3.0.7.tar.gz 结果: 解压redis压缩文件: 命令: .tar.g ...

  4. [转]解决Maven报错"Plugin execution not covered by lifecycle configuration"

    [转]解决Maven报错"Plugin execution not covered by lifecycle configuration" 导入Myabtis源码后,POM文件会报 ...

  5. mongodb 3.x connect with credential

    package mongoDb; import java.net.UnknownHostException; import java.util.ArrayList; import java.util. ...

  6. JNI错误总结(转)

    源:JNI错误总结 最近公司里要用JNI技术,用java去调用已经写好的本地DLL库.之前自己也没接触过相关技术,其中花了大部分时间在调试改错上面,网上对于错误的解决方案也不多,现在项目接近完工,自己 ...

  7. PHP内核变量存储

    PHP作为一门弱类型语言,其变量类型可任意改变.而C作为PHP的底层实现,是通过结构及联合来实现PHP变量的弱类型特性的.在PHP源码中,Zend/zend.h文件有关于PHP变量的结构定义. 01 ...

  8. .net中的4种事务总结

    在 一个MIS系统中,没有用事务那就绝对是有问题的,要么就只有一种情况:你的系统实在是太小了,业务业务逻辑有只要一步执行就可以完成了.因此掌握事务处 理的方法是很重要,进我的归类在.net中大致有以下 ...

  9. iOS 开发 之 测试框架kiwi

    1. 在Podfile中加入 target :VVStackTests, :exclusive => true do pod 'Kiwi/XCTest' end 2.下载kiwi模板 XCode ...

  10. Python3基础 pop() 删除 键为指定值的项

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...