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[];
}
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"] = ;
row["Name"] = "ItemA";
row["ValueA"] = ;
dt.Rows.Add(row); row = dt.NewRow();
row["Id"] = ;
row["Name"] = "ItemC";
row["ValueA"] = ;
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 = ;
int.TryParse(memoryArr[]["ValueA"].ToString(), out valueA); //将内存表中Name=ItemC的ValueA更新到数据表中
Update(valueA, nameValue); //将数据库中的ValueB数据栏及其对应的值添加到内存表中
DataTable dbTable = GetTableFromDatabase();
if (dbTable != null && dbTable.Rows.Count > )
{
//遍历数据表中的记录
foreach (DataRow dr in dbTable.Rows)
{
DataRow[] tempDR = memoryTable.Select("Name='" + dr["Name"] + "'");
if (tempDR.Length > )
{
tempDR[]["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);
}
}
}
}
}
}

一段用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. svn数据库自动备份脚本

    创建一个存放备份数据的路径 mkdir /data/svnbak -p 采用shell脚本的方式实现自动备份 #vim backup.sh #!/bin/bash log="/data/sv ...

  2. Ex 6_3 修建酒店所获得的利润..._第五次作业

    假设profit[i]为在前i个位置修建酒店所获得的最大利润,当i=0时,profit[0]=0.当i>0时,若j为上一个满足m[i]-m[j]k的位置.若profit[i-1]>prof ...

  3. Go语言规格说明书 之 通道类型(Channel types)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  4. Storm的部署

    配置方案如下 node1 Nimbus zookeeper node2 Supervisor zookeeper node3 Supervisor zookeeper node4 Supervisor ...

  5. jmeter常用组件

    测试计划(Test Plan) 是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器. 线程组(Thread Group) 代表一定数量的并发用户,它可以用来模拟并发用户发送请 ...

  6. .NetCore下利用Jenkins如何将程序自动打包发布到Docker容器中运行

    说道这一块纠结了我两天时间,感觉真的很心累,Jenkins的安装就不多说了 这里我们最好直接安装到宿主机上,应该pull到的jenkins版本是2.6的,里面很多都不支持,我自己试了在容器中安装的情况 ...

  7. POJ1417 True Liars 并查集 动态规划 (种类并查集)

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ1417 题意概括 有一群人,p1个好人,p2个坏人. 他们说了n句话.(p1+p2<=600,n ...

  8. BZOJ1258 [CQOI2007]三角形tri 模拟

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1258 题意概括 这种图中,一个三角形的三边如果被其他某一个三角形的一条边包括,那么我们说该三角形和 ...

  9. 026 使用大数据对网站基本指标PV案例的分析

    案例: 使用电商网站的用户行为日志进行统计分析 一:准备 1.指标 PV:网页流浪量 UV:独立访客数 VV:访客的访问数,session次数 IP:独立的IP数 2.上传测试数据 3.查看第一条记录 ...

  10. C++和java的区别和联系

    今晚,数院的一个兄弟借我Java课本,顺便问了一句“Java和C++到底有啥区别啊”.一下子有点问蒙了,“啊额.....运行平台不同....”  "一个在高层,一个在底层...." ...