一段用c#操作datatable的代码
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的代码的更多相关文章
- 9段高效率开发PHP程序的代码
php是世界上最好的语言 在php网站开发中,大家都希望能够快速的进行程序开发,如果有能直接使用的代码片段,提高开发效率,那将是起飞的感觉.今天由杭州php工程师送出福利来了,以下9段高效率开发PHP ...
- Redis:安装、配置、操作和简单代码实例(C语言Client端)
Redis:安装.配置.操作和简单代码实例(C语言Client端) - hj19870806的专栏 - 博客频道 - CSDN.NET Redis:安装.配置.操作和简单代码实例(C语言Client端 ...
- SELECT控件操作的JS代码示例
SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...
- C#开发中使用Npoi操作excel实例代码
C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...
- 30个php操作redis常用方法代码例子
From: http://www.jb51.net/article/51884.htm 这篇文章主要介绍了30个php操作redis常用方法代码例子,本文其实不止30个方法,可以操作string类型. ...
- php foreach 操作数组的代码
php foreach 操作数组的代码. foreach()有两种用法: foreach(array_name as $value) { statement; } 这里的array_na ...
- 30 个 php 操作 redis 常用方法代码例子
这篇文章主要介绍了 30 个 php 操作 redis 常用方法代码例子 , 本文其实不止 30 个方法 , 可以操作 string 类型. list 类型和 set 类型的数据 , 需要的朋友可以参 ...
- 收藏的一段关于java大数运算的代码
收藏的一段关于java大数运算的代码: package study_02.number; import java.math.BigDecimal; import java.math.BigIntege ...
- 如何使用linq操作datatable进行分组
使用微软.net的孩子们应该都知道linq吧,要知道linq可是其他高级语言没有的技术,比如php,java等等,但是起初我对linq的认识只是停留在对 list<> 的泛型集合进行操作, ...
随机推荐
- saltStack运维工具的部署及master迁移实现的过程详解
服务器端:192.168.3.87 客户端:192.168.3.86.192.168.3.108 1.salt服务器端安装 192.168.3.87 rpm -Uvh http://mirrors.y ...
- JS 自己实现Map
function MyMap() { var items = {}; this.has = function (key) { return key in items; }; this.set = fu ...
- javascript 浮点数比较
Js中两个浮点数比较,不能使用=== 必须用相减绝对值小于极小的一个数字来判断 Math.abs(1/3 - (1-2/3))<0.0001 这样的方式来判断.
- 大型NodeJS项目架构与优化
使用场景: proxy(API冗余,跨域) vue ssr(服务端渲染) socket(大并发,通讯) 区块链(创业公司,新兴行业) 讨论什么? NodeJS异步IO原理及优化方案 NodeJS内存管 ...
- javascript this详解(转)
在面向对象编程语言中,对于this关键字我们是非常熟悉的.比如C++.C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的.JavaScrip ...
- Renderscript图像处理
作者:慧能 最近正在学习renderscript,后期会整理一篇完整的文档,先记着.... https://blog.csdn.net/codemydream/article/details/5346 ...
- PHP常见错误提示含义解释
1.Notice: Undefined variable: 变量名 in 注:使用了一个没有被定义的变量 2.Parse error: syntax error, unexpected T_ELSE ...
- 《剑指offer》-孩子们的游戏(圆圈中最后剩下的数)
每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指定一个数m ...
- 检查Rabbitmq中队列及消息个数,还有清空的方法
rabbitmqctl list_queues rabbitmqctl purge_queue kafka_queue (不推荐)使用reset方式重置rabbitmq即清空掉rabbitmq所有的队 ...
- POJ 2385 Apple Catching【DP】
题意:2棵苹果树在T分钟内每分钟随机由某一棵苹果树掉下一个苹果,奶牛站在树#1下等着吃苹果,它最多愿意移动W次,问它最多能吃到几个苹果.思路:不妨按时间来思考,一给定时刻i,转移次数已知为j, 则它只 ...