一段用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<> 的泛型集合进行操作, ...
随机推荐
- centos系统初始化脚本
#!/bin/bash #检测是否为root用户 ];then echo "Must be root can do this." exit fi #检测网络 echo " ...
- 常见的移动端Web页面问题
移动端Web需要照顾触摸操作的体验,以及更多的屏幕旋转与尺寸适配等问题,非常琐碎,在这里为大家倾力总结多条常见的移动端Web页面问题解决方案,欢迎收看收藏! 1.安卓浏览器看背景图片,有些设备会模糊 ...
- DDMS调试工具
ADT给我们提供了一个非常方便的调试工具,那就是DDMS.使用这个工具,代码调试工作也变得简单起来.我们只需要单击Eclipse界面右上方的DDMS按钮就可以切换到DDMS界面了,如图2-31所示. ...
- Java基础:整型数组(int[]、Integer[])排序
Windows 10家庭中文版,java version "1.8.0_152",Eclipse Oxygen.1a Release (4.7.1a), 参考链接:http://w ...
- vue路径优化之resolve
通过vue-cli来创建vue+webpack的项目时,已经有很多都配置好了,但是路径方面为了方便开发,还可以优化. 1. resolve.extensions 在webpack.base.conf. ...
- 温故而知新--JavaScript书摘(一)
前言: 毕业到入职腾讯已经差不多一年的时光了,接触了很多项目,也积累了很多实践经验,在处理问题的方式方法上有很大的提升.随着时间的增加,愈加发现基础知识的重要性,很多开发过程中遇到的问题都是由最基础的 ...
- eclipse 更换主题
更换系统自带主题 依次点击 window->preferences->General->Appearance->Theme 选择主题 下载eclipse marketplace ...
- 性能测试二十八:环境部署之Dubbo部署
Zookeeper部署 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...
- Oracle学习笔记--第3章 使用sql*plus工具
使用sql*plus工具 1.sqlplus连接方式示例 sqlplus system/123[as sysdba]; 2.查看表结构命令;desc[ribe] e.g. desc scot ...
- Javascript面向对象基础(二)
一: 用定义函数的方式定义类在面向对象的思想中,最核心的概念之一就是类.一个类表示了具有相似性质的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例,即对象.在JavaScript中定义一个 ...