一段用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<> 的泛型集合进行操作, ...
随机推荐
- 功率 dbm 和 mw 的换算
射频知识; 功率/电平(dBm):放大器的输出能力,一般单位为w.mw.dBm.dBm是取1mw作基准值,以分贝表示的绝对功率电平. 换算公式:电平(dBm)=10lgw5W → 10lg5000 ...
- 面向对象特征:封装、多态 以及 @propetry装饰器
(继承补充)组合 obj=fun()#对象 obj.attr=foo()#对象的属性等于另一个对象 什么是组合: A类的对象具备某一个属性,该属性的值是B类的对象 基于这种方式就把A类与B ...
- 如何选取一个神经网络中的超参数hyper-parameters
1.什么是超参数 所谓超参数,就是机器学习模型里面的框架参数.比如聚类方法里面类的个数,或者话题模型里面话题的个数等等,都称为超参数.它们跟训练过程中学习的参数(权重)是不一样的,通常是手工设定的,经 ...
- Ex 6_3 修建酒店所获得的利润..._第五次作业
假设profit[i]为在前i个位置修建酒店所获得的最大利润,当i=0时,profit[0]=0.当i>0时,若j为上一个满足m[i]-m[j]k的位置.若profit[i-1]>prof ...
- 擅于使用JS的eval方法
样例如下: var appsDetails = {“app1”:"", “app2”:"", “app3”:"", “app4”:" ...
- sql in语句
转自http://www.1keydata.com/cn/sql/sql-in.php 在 SQL 中,在两个情况下会用到 IN 这个指令:这一页将介绍其中之一 -- 与 WHERE 有关的那一个情况 ...
- Zookeeper单机安装部署与配置(二)
在上篇博客中简单介绍了Zookeeper的特点和应用场景,详情可参考:<Zookeeper简介(一)>,那么这篇博客我们介绍一下关于Zookeeper的单机模式安装步骤与配置. 环境准备 ...
- python 全栈开发,Day140(RabbitMQ,基于scrapy-redis实现分布式爬虫)
一.RabbitMQ 队列 在生产者消费模型中,比如去餐馆吃饭的例子.生产者相当于厨师,队列相当于服务员,消费者就是你. 我们必须通过服务员,才能吃饭! 如果队列满了,队列会一直hold住.必须让消费 ...
- MVC的WebViewPage
采用Razor引擎的View文件(.cshtml或者.vbhtml)最终都会编译成一个WebViewPage类型,所以通过RazorView/WebFormView体现的View的呈现机制最终体现在对 ...
- 交叉编译和安装ARM板(RK3288)和Linux 3.10上的RTL8188无线网卡驱动
插入无线网卡,输入ifconfig,发现没有检测到网卡. 输入lsusb,查看无线网卡型号. 我用的无线网卡是EDUP的网卡,包装盒里有一张驱动光盘,把光盘里linux下的驱动目录复制下来.如果没有驱 ...