using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace TestConsole
{/// <summary>/// 测试类/// </summary>
    [Serializable]public class TestDemo{/// <summary>/// 数据库连接字符串/// </summary>private readonly string connectionString = "server=.;database=TestDB;uid=sa;pwd=123456";/// <summary>/// 从数据库中查询所有记录/// </summary>/// <returns></returns>private DataTable GetTableFromDatabase(){using (SqlConnection conn = new SqlConnection(connectionString)){try{conn.Open();SqlDataAdapter sda = new SqlDataAdapter("select Id,Name,ValueA,ValueB from TestTable", conn);DataSet ds = new DataSet();sda.Fill(ds);DataTable dbTable = null;if (ds != null){dbTable = ds.Tables[0];}return dbTable;}catch (Exception e){throw e;}}}/// <summary>/// 修改/// </summary>/// <param name="value"></param>/// <param name="nameValue"></param>private void Update(int value, string nameValue){string updateSql = "update TestTable set ValueA=" + value + " where Name='" + nameValue + "'";using (SqlConnection conn = new SqlConnection(connectionString)){using (SqlCommand cmd = new SqlCommand(updateSql, conn)){try{conn.Open();int rows = cmd.ExecuteNonQuery();}catch (System.Data.SqlClient.SqlException e){conn.Close();throw e;}}}}/// <summary>/// 从内存获取DataTable/// </summary>/// <returns></returns>private DataTable GetTableFromMemory(){DataTable dt = new DataTable("TestTable");dt.Columns.Add("Id", typeof(System.Int32));dt.Columns.Add("Name", typeof(System.String));dt.Columns.Add("ValueA", typeof(System.Int32));dt.Columns.Add("ValueB", typeof(System.String));DataRow row;row = dt.NewRow();row["Id"] = 1;row["Name"] = "ItemA";row["ValueA"] = 20;dt.Rows.Add(row);row = dt.NewRow();row["Id"] = 67;row["Name"] = "ItemC";row["ValueA"] = 90;dt.Rows.Add(row);return dt;}/// <summary>/// 测试方法/// </summary>public void TestMethod(){String nameValue = "ItemC";//从内存获取DataTable,并找到值为ItemC的记录DataTable memoryTable = GetTableFromMemory();DataRow[] memoryArr = memoryTable.Select("Name='" + nameValue + "'");int valueA = 0;int.TryParse(memoryArr[0]["ValueA"].ToString(), out valueA);//将内存表中Name=ItemC的ValueA更新到数据表中
            Update(valueA, nameValue);//将数据库中的ValueB数据栏及其对应的值添加到内存表中DataTable dbTable = GetTableFromDatabase();if (dbTable != null && dbTable.Rows.Count > 0){//遍历数据表中的记录foreach (DataRow dr in dbTable.Rows){DataRow[] tempDR = memoryTable.Select("Name='" + dr["Name"] + "'");if (tempDR.Length > 0){tempDR[0]["ValueB"] = dr["ValueB"];}else{DataRow row = memoryTable.NewRow();row["Id"] = dr["Id"];row["Name"] = dr["Name"];row["ValueA"] = dr["ValueA"];row["ValueB"] = dr["ValueB"];memoryTable.Rows.Add(row);}}}}}
}

转载于:https://www.cnblogs.com/subendong/p/10448216.html

一段用c#操作datatable的代码相关推荐

  1. C#和C常用的API操作窗口的代码积累

    C#和C常用的API操作窗口的代码积累 IntPtr awin = MouseHookHelper.FindWindow("WeChatMainWndForPC", "微 ...

  2. mysqlierror php_php操作mysqli(示例代码)

    php操作mysqli(示例代码) 更新时间:2013年10月28日 08:56:20   作者: php操作mysqli的示例代码.需要的朋友可以过来参考下,希望对大家有所帮助 define(&qu ...

  3. android中屏保功能项目,【Android】一段时间不操作弹出【屏保】效果

    仿屏保效果 最近项目的一个小Demo,和大家分享一下,本篇文章主要展示的是一个仿屏保的效果,用户在一段时间不操作会自动弹出屏保页面,当处于屏保页面的时候,[两秒内连续]按两次键盘[回车键]就会退出屏保 ...

  4. 详细介绍了Linux下配置文件的读取方法及fgyhtrh读取操作的C代码实现

    认识指针数组和数组指针从内存方面分析 Linux具有免费.可靠.安全.稳定.多平台等特点,因此深受广大程序员的欢迎.  为了体现软件产品的灵活性,可添加配置文件存放某些重要的参数,在部署的时候根据实际 ...

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

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

  6. C#--动态操作DataTable

    C#动态操作DataTable(新增行.列.查询行.列等) 方法一:动态创建一个DataTable ,并为其添加数据 public void CreateTable()         {       ...

  7. MYSQL连接一段时间不操作后出现异常的解决方案

    MYSQL连接一段时间不操作后出现异常的解决方案 参考文章: (1)MYSQL连接一段时间不操作后出现异常的解决方案 (2)https://www.cnblogs.com/bokejiayuan/p/ ...

  8. 百度搜索引擎提供了一段嵌入到页面中的代码

    百度搜索引擎提供了一段嵌入到页面中的代码 <form action="http://www.baidu.com/baidu" target="_blank" ...

  9. 一段动态生成表格的JSP代码讲解

    一段动态生成表格的JSP代码讲解 <table border="1" width="600px" align="center"> ...

最新文章

  1. Artificial Intelligence and Change Management
  2. linux下面tomcat域名配置
  3. xampp运行php中文乱码,dvwa+xampp搭建显示乱码的问题及解决方案
  4. Javascript和android原生互调
  5. java数组变量_关于java 的数组引用变量
  6. 降准对房价与股市的影响!
  7. Windows Server 2008 R2 企业版操作说明手册
  8. 一个开源的网页画板,真的太方便了
  9. 巨建华担任BCF理事
  10. 阿里云服务器购买后如何做好安全防护?
  11. 《基于短时分数阶傅里叶变换的时频分析方法》
  12. 无盘系统服务器虚拟内存,Windows7无盘虚拟内存如何设置
  13. 入门了解开发板是做什么用的?
  14. PCIe系列专题之二:2.8 事务排序机制
  15. LeanCloud 一至二月变化
  16. HCL实验-使用ACL进行SSH服务器的登录源限制的简单实验(NAT+SSH+ACL)
  17. 9个免费开源的bug追踪软件
  18. Python的format用法详解
  19. 苹果笔记本设置MAC地址和ip地址
  20. ModuleNotFoundError: No module named ‘sklearn.__check_build._check_build‘解决方案

热门文章

  1. java中关键字缺省(default)
  2. 2021-2027全球与中国铝质气雾罐市场现状及未来发展趋势
  3. 元宇宙来了,用好名字好概念赋能中国制造国际营销的初步构想
  4. postman后端返回的数据显示中文乱码解决
  5. Excel操作:如何锁定单元格、有几种方法实现分类汇总
  6. 这个Python游戏库,打开就能玩一天!
  7. PCB钻孔输出的一个简单动作,却带来工厂的命运转折
  8. GITLAB email不发送腾讯企业邮箱解决方案
  9. 捕鱼问题 matlab,鱼捕捞问题(数学建模).docx
  10. google浏览器被2345强制绑定