1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace TestConsole
  10. {
  11. /// <summary>
  12. /// 测试类
  13. /// </summary>
  14. [Serializable]
  15. public class TestDemo
  16. {
  17. /// <summary>
  18. /// 数据库连接字符串
  19. /// </summary>
  20. private readonly string connectionString = "server=.;database=TestDB;uid=sa;pwd=123456";
  21.  
  22. /// <summary>
  23. /// 从数据库中查询所有记录
  24. /// </summary>
  25. /// <returns></returns>
  26. private DataTable GetTableFromDatabase()
  27. {
  28. using (SqlConnection conn = new SqlConnection(connectionString))
  29. {
  30. try
  31. {
  32. conn.Open();
  33. SqlDataAdapter sda = new SqlDataAdapter("select Id,Name,ValueA,ValueB from TestTable", conn);
  34. DataSet ds = new DataSet();
  35. sda.Fill(ds);
  36.  
  37. DataTable dbTable = null;
  38. if (ds != null)
  39. {
  40. dbTable = ds.Tables[];
  41. }
  42. return dbTable;
  43. }
  44. catch (Exception e)
  45. {
  46. throw e;
  47. }
  48. }
  49. }
  50.  
  51. /// <summary>
  52. /// 修改
  53. /// </summary>
  54. /// <param name="value"></param>
  55. /// <param name="nameValue"></param>
  56. private void Update(int value, string nameValue)
  57. {
  58. string updateSql = "update TestTable set ValueA=" + value + " where Name='" + nameValue + "'";
  59. using (SqlConnection conn = new SqlConnection(connectionString))
  60. {
  61. using (SqlCommand cmd = new SqlCommand(updateSql, conn))
  62. {
  63. try
  64. {
  65. conn.Open();
  66. int rows = cmd.ExecuteNonQuery();
  67. }
  68. catch (System.Data.SqlClient.SqlException e)
  69. {
  70. conn.Close();
  71. throw e;
  72. }
  73. }
  74. }
  75. }
  76.  
  77. /// <summary>
  78. /// 从内存获取DataTable
  79. /// </summary>
  80. /// <returns></returns>
  81. private DataTable GetTableFromMemory()
  82. {
  83. DataTable dt = new DataTable("TestTable");
  84. dt.Columns.Add("Id", typeof(System.Int32));
  85. dt.Columns.Add("Name", typeof(System.String));
  86. dt.Columns.Add("ValueA", typeof(System.Int32));
  87. dt.Columns.Add("ValueB", typeof(System.String));
  88.  
  89. DataRow row;
  90.  
  91. row = dt.NewRow();
  92. row["Id"] = ;
  93. row["Name"] = "ItemA";
  94. row["ValueA"] = ;
  95. dt.Rows.Add(row);
  96.  
  97. row = dt.NewRow();
  98. row["Id"] = ;
  99. row["Name"] = "ItemC";
  100. row["ValueA"] = ;
  101. dt.Rows.Add(row);
  102.  
  103. return dt;
  104. }
  105.  
  106. /// <summary>
  107. /// 测试方法
  108. /// </summary>
  109. public void TestMethod()
  110. {
  111. String nameValue = "ItemC";
  112.  
  113. //从内存获取DataTable,并找到值为ItemC的记录
  114. DataTable memoryTable = GetTableFromMemory();
  115. DataRow[] memoryArr = memoryTable.Select("Name='" + nameValue + "'");
  116. int valueA = ;
  117. int.TryParse(memoryArr[]["ValueA"].ToString(), out valueA);
  118.  
  119. //将内存表中Name=ItemC的ValueA更新到数据表中
  120. Update(valueA, nameValue);
  121.  
  122. //将数据库中的ValueB数据栏及其对应的值添加到内存表中
  123. DataTable dbTable = GetTableFromDatabase();
  124. if (dbTable != null && dbTable.Rows.Count > )
  125. {
  126. //遍历数据表中的记录
  127. foreach (DataRow dr in dbTable.Rows)
  128. {
  129. DataRow[] tempDR = memoryTable.Select("Name='" + dr["Name"] + "'");
  130. if (tempDR.Length > )
  131. {
  132. tempDR[]["ValueB"] = dr["ValueB"];
  133. }
  134. else
  135. {
  136. DataRow row = memoryTable.NewRow();
  137. row["Id"] = dr["Id"];
  138. row["Name"] = dr["Name"];
  139. row["ValueA"] = dr["ValueA"];
  140. row["ValueB"] = dr["ValueB"];
  141. memoryTable.Rows.Add(row);
  142. }
  143. }
  144. }
  145. }
  146. }
  147. }

一段用c#操作datatable的代码的更多相关文章

  1. 9段高效率开发PHP程序的代码

    php是世界上最好的语言 在php网站开发中,大家都希望能够快速的进行程序开发,如果有能直接使用的代码片段,提高开发效率,那将是起飞的感觉.今天由杭州php工程师送出福利来了,以下9段高效率开发PHP ...

  2. Redis:安装、配置、操作和简单代码实例(C语言Client端)

    Redis:安装.配置.操作和简单代码实例(C语言Client端) - hj19870806的专栏 - 博客频道 - CSDN.NET Redis:安装.配置.操作和简单代码实例(C语言Client端 ...

  3. SELECT控件操作的JS代码示例

    SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...

  4. C#开发中使用Npoi操作excel实例代码

    C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...

  5. 30个php操作redis常用方法代码例子

    From: http://www.jb51.net/article/51884.htm 这篇文章主要介绍了30个php操作redis常用方法代码例子,本文其实不止30个方法,可以操作string类型. ...

  6. php foreach 操作数组的代码

    php foreach 操作数组的代码.   foreach()有两种用法:  foreach(array_name as $value)  {  statement;  }  这里的array_na ...

  7. 30 个 php 操作 redis 常用方法代码例子

    这篇文章主要介绍了 30 个 php 操作 redis 常用方法代码例子 , 本文其实不止 30 个方法 , 可以操作 string 类型. list 类型和 set 类型的数据 , 需要的朋友可以参 ...

  8. 收藏的一段关于java大数运算的代码

    收藏的一段关于java大数运算的代码: package study_02.number; import java.math.BigDecimal; import java.math.BigIntege ...

  9. 如何使用linq操作datatable进行分组

    使用微软.net的孩子们应该都知道linq吧,要知道linq可是其他高级语言没有的技术,比如php,java等等,但是起初我对linq的认识只是停留在对 list<> 的泛型集合进行操作, ...

随机推荐

  1. 云服务器 linux文件系统异常an error occurren during the file system check导致服务器启动失败

    云服务器 linux文件系统异常an error occurren during the file system check导致服务器启动失败 文件系统宕机,重启后报错,无法启动 处理流程: 1.编辑 ...

  2. Web 中调用FreeSWITCH的Portal GUI配置记录

    具体设定步骤: ①加载 mod_xml_rpc 模块:load mod_xml_rpc 若想让该模块在FreeSWITCH启动时而自动加载,在conf/autoload_configs/modules ...

  3. Java字符串的操作

    判断字符串是否存在 使用str.contains("values") public class one { /*判断某个字符串是否存在*/ public static void m ...

  4. intellij idea svn 修改文件后,父文件夹也标注修改

    svn文件修改后,默认只有当前文件更改而父文件没有标注,很不直观:查了一顿后,发现,可以设置: File—->settings—->version control—–>勾选show ...

  5. 步步为营-33-Md5(32)加密与Base64加密

    说明: 1:直接贴码 using System; using System.Collections.Generic; using System.ComponentModel; using System ...

  6. jquery追加元素的不同语法

    问题 项目中越来越多的地方需要实现无刷新来更新页面局部内容,使用ajax从后台获取数据然后追加到页面中.那么怎么获取数据之后如何实现元素的追加呢? 解决 jQuery提供追加元素函数,掌握常用的四种追 ...

  7. C#检查服务状态和启动关闭服务

    WinForm 判断服务状态,显示服务名称和状态 https://blog.csdn.net/u013063880/article/details/78626200 C#获得服务,判断服务状态,启动服 ...

  8. jsp+servlet实现文件的上传和下载

    实现文件的上传和下载首先需要理解几个知识,这样才可以很好的完成文件的上传和下载: (1):上传文件是上传到服务器上,而保存到数据库是文件名 (2):上传文件是以文件转换为二进制流的形式上传的 (3): ...

  9. sed & awk常用正则表达式

    正则表达式元字符 正则表达式中有两种基本元素: 以字面值或变量表示的值(如.代表任意单个字符). 操作符(如*代表将前面的字符重复任意次). 元字符汇总 特殊字符 用途 . 匹配除换行符以外的任意单个 ...

  10. <构建之法>阅读笔记6

    第九章:项目经理 是讲项目经理的作用功能和重要性,书里面主要讲的是微软的PM(Programe Manager)和其他团队PM(Project Manager)的区别,还介绍了PM的能力要求以及人物, ...