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. css实现左(右)侧固定宽度,右(左)侧宽度自适应 ---清除浮动

    老话长谈,css的不固定适应布局   不管是面试还是在平时的工作中,这样的布局形式一直都在用着,很常见,所以今天我就拿出来在唠叨一下, 既是给自己一个备忘存储,也是一个学习巩固的参考,知道大家都会,还 ...

  2. jmeter之使用代理录制脚本

    从loadrunner到jmeter,录制压力测试脚本好像都只支持IE,近来才知道jmeter还有自带的录制脚本元件, 且支持IE.Chrome及Firefox等多种浏览器.这里就记录一下通过jmet ...

  3. C 长字符串换行方法

    C中字符串有时候会出现很长的情况,如果不换行书写查看起来很不方便. 长字符串拆分成多行处理也是C规范的一部分. 方法1. 利用双引号" " ,将长字符串分成多个子串换行,C会自动无 ...

  4. html----不常见标签

    控制文字滚动 <!-- direction="right up down left" --> <!-- behavior:滚动方式(包括3个值:scroll.sl ...

  5. Codeforces 519D A and B and Interesting Substrings(二维map+前缀和)

    题目链接:http://codeforces.com/problemset/problem/519/D 题目大意:给你一串字符串s仅由小写字母组成,并且对于'a'~'z'都给了一个值.求子串t满足t的 ...

  6. 用switch语句判断月份,打印出当前月份所在的季节

    var today=new Date(); var abc=today.getMonth(); switch (abc) { case 0: case 1: case 2: document.writ ...

  7. DailyWallpaper v1.03 released

    根据这一段时间的使用发现了一些问题,重新修正一下. 修正电脑从休眠状态中恢复时如果没有网络连接程序报错的bug. 添加了异常处理语句,防止抓取网页数据时的错误. 这个版本将是最后一个bug fix版本 ...

  8. JS高级 - 面向对象4(json方式面向对象)

    把方法包在一个Json里 var p1 = { name: "唐三", sex: "男", dreamdu: { URL: "www.dreamdu. ...

  9. 《JavaScript 高级程序设计》第三章:基本概念

    目录 语法 标识符 严格模式 关键字 保留字 变量 数据类型 运算符 表达式与语句 语法 "语法"指的是一门语言的书写风格,JavaScript 的语法风格很类似于 C 以及 Ja ...

  10. Oracle 11.2.0.4 For Windows 64bit+32bit 数据库

    1.Oracle11G 32BIT介质官方链接 适用于Windows 32bit的Oracle Database 11G 第2版U4(11.2.0.4)Oracle11.2.0.4  Windows3 ...