1. // 2015/07/08
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Data;
  8. using System.Data.SqlClient;
  9.  
  10. namespace DataTapleSample
  11. {
  12. class Program
  13. {
  14. static void Main(string[] args)
  15. {
  16. // 通用的专门用来保存数据库中数据的类型
  17. DataTable table = new DataTable();
  18.  
  19. // 在DataTable 中保存数据之前,必须先定义结构
  20. DataColumn stuid =
  21. //new DataColumn("StuId",System.Type.GetType("System.Int32"));
  22. new DataColumn("StuId",typeof(int));//简写方式和前者等价
  23. DataColumn stuname = new DataColumn("stuName",typeof(string));
  24. DataColumn stuaddress = new DataColumn("stuaddress",typeof(string));
  25.  
  26. // 创建表的结构
  27. table.Columns.Add(stuid);
  28. table.Columns.Add(stuname);
  29. table.Columns.Add(stuaddress);
  30.  
  31. // 表的约束
  32. // 主键约束
  33. table.PrimaryKey = new DataColumn[]{stuid};
  34.  
  35. // 非空约束
  36. // stuaddress.AllowDBNull = false;
  37. // 唯一约束:stuname.Unique;
  38.  
  39. // 如何在 DataTable 中保存数据
  40. // DataRow 表示保存在 DataTable 中的一行数据
  41. DataRow row = table.NewRow();
  42.  
  43. // 使用 NewRow 方法创建的行,结构与表是相同的(如下三种方法,建议第一种)
  44. // row[stuid] = 1;
  45. // row[1] = "XXXX";
  46. // row[stuaddress] = "XXXX";
  47. row[stuid] = 7;
  48. row[stuname] = "XX";
  49. row[stuaddress] = "XXX";
  50.  
  51. // 现在加入到 DataTable 中
  52. table.Rows.Add(row);
  53.  
  54. // 访问保存在 DataTable 中的数据
  55. foreach (DataRow r in table.Rows)
  56. {
  57. Console.WriteLine("stuid:{0},stuName:{1},stuaddress:{2}",r[0],r[1],r[2]);
  58. }
  59. Console.ReadKey();
  60. }
  61. }
  62. }
  63. //////////////////////////////////////////////////////////////
  64. // next
  65.  
  66. // 2015/07/08
  67. // DataTable && SqlDataReader
  68. using System;
  69. using System.Collections.Generic;
  70. using System.Linq;
  71. using System.Text;
  72. using System.Threading.Tasks;
  73. using System.Data;
  74. using System.Data.SqlClient;
  75.  
  76. namespace StuDataTable
  77. {
  78. class Program
  79. {
  80. static void Main(string[] args)
  81. {
  82. // 保存在 DataTable 中
  83. DataTable table = new DataTable();
  84.  
  85. string connectionString = "server=.;database=BookSample;uid=sa;pwd=123456";
  86. using (SqlConnection connection = new SqlConnection(connectionString))
  87. {
  88. string sql = "select ID,StuName,Phone from students";
  89. SqlCommand cmd = new SqlCommand(sql,connection);
  90.  
  91. connection.Open();
  92.  
  93. using (SqlDataReader reader = cmd.ExecuteReader())
  94. {
  95. // 根据查询结果的结构来创建对应的 DataTable
  96. int columnCount = reader.FieldCount; // 查询结果的列数
  97.  
  98. // 逐列创建
  99. for (int i = 0; i < columnCount; i++)
  100. {
  101. DataColumn column = new DataColumn(
  102. reader.GetName(i),
  103. reader.GetFieldType(i)
  104. );
  105. table.Columns.Add(column);
  106. }
  107.  
  108. // 逐行从数据库中读取数据
  109. while (reader.Read())
  110. {
  111. DataRow row = table.NewRow();
  112.  
  113. for (int i = 0; i < columnCount; i++)
  114. {
  115. row[i] = reader[i];
  116. }
  117. table.Rows.Add(row);
  118. }
  119. }
  120.  
  121. }
  122.  
  123. // 现在数据库中的数据已经保存到内存中特殊的集合中
  124. foreach (DataRow row in table.Rows)
  125. {
  126. // 将 ID 读取出来
  127. Console.WriteLine(row["ID"]);
  128. }
  129. Console.ReadKey();
  130. }
  131. }
  132. }
  133.  
  134. /*
  135. 相关阅读:
  136. https://msdn.microsoft.com/zh-cn/library/system.data.datatable.aspx
  137. https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldatareader.aspx
  138.  
  139. */

  

DataTable && SqlDataReader帮助理解小程序的更多相关文章

  1. 微信小程序开发:学习笔记[7]——理解小程序的宿主环境

    微信小程序开发:学习笔记[7]——理解小程序的宿主环境 渲染层与逻辑层 小程序的运行环境分成渲染层和逻辑层. 程序构造器

  2. 微信小程序开发——以简单易懂的浏览器页面栈理解小程序的页面路由

    前言: 对于小程序的页面路由,如果没有一定开发经验的话,理解起来还是会有些困难的.哪怕是有一定小程序开发经验的开发者,能够完全理解掌握的恐怕也不多. 这里就以另外一种方式来详细的介绍小程序的页面栈及路 ...

  3. 小程序学习-理解小程序中响应式单位rpx

    微信小程序的官方文档用rpx来做响应式布局单位!那什么是rpx,应该如何设置呢?今天我们就来好好了解一下. [像素]:它不是自然界的物理长度,指基本原色素及其灰度的基本编码. [物理像素]:它是显示器 ...

  4. DataAdapter&&DataSet 帮助理解小程序

    // 2105/07/08 // DataAdapter&&DataSet using System; using System.Collections.Generic; using ...

  5. 微信小程序简单入门理解

    简单的小程序示例结构: (一):理解小程序结构app.js,app.json,app.wxss ①app.js,app.json是小程序结构必要的部分,app.wxss可选择 ②app.js用于创建小 ...

  6. 教你理解微信小程序的生命周期和运行原理

    转自:http://blog.csdn.net/tsr106/article/details/53052879  写微信小程序,他的生命周期不能不知道,不知道小程序就会出现各种bug而无法解决.小助君 ...

  7. 理解微信小程序的生命周期和运行原理

    写微信小程序,他的生命周期不能不知道,不知道小程序就会出现各种bug而无法解决.小助君公众号带你学习小程序的生命周期和运行原理. 小程序由两大线程组成:负责界面的线程(view thread)和服务线 ...

  8. 理解微信小程序的双线程模型

    有过微信小程序开发经验的朋友应该都知道"双线程模型"这个概念,本文简单梳理一下双线程模型的一些科普知识,学识浅薄,若有错误欢迎指正. 我以前就职于「小程序·云开发」团队,在对外的一 ...

  9. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

随机推荐

  1. vs2012中的小技巧

    解除起始页: 网站(或者叫项目)-属性-启动选项-使用当前页 发布项目: 有些文件在发布的时候,不能发布到指定文件夹中,所以要手动修改该文件的属性 修改两处: 复制到输出目录:始终复制 生成操作:内容

  2. .htaccess 使用大全

    重新和重定向 注意:首先需要服务器安装和启用mod_rewrite模块. 强制 www RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com ...

  3. JNI介绍(转)

    源:JNI介绍 JNI是在学习Android HAL时必须要面临一个知识点,如果你不了解它的机制,不了解它的使用方式,你会被本地代码绕的晕头转向,JNI作为一个中间语言的翻译官在运行Java代码的An ...

  4. bzoj-1834 network 网络扩容 【网络流】

    这题就是复习下网络流. #include <bits/stdc++.h> #define rep(i, a, b) for (int i = a; i <= b; i++) #def ...

  5. 充电-ios(未完更新中...

    [reference]http://www.cocoachina.com/ios/20160323/15770.html OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装 ...

  6. adb报错:The connection to adb is down, and a severe&nbs

    我觉得这就像是adb的大姨妈一样,不过处理起来还是很easy滴:  1.报错:BUILD FAILEDD:\workspace\ganji\build.xml:144: The following e ...

  7. WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图(转载)

    WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图 1.前言 在前面我花了两个篇幅来讲解行列号的获取,也解释了为什么要获取行列号.在这一章,我将把常见的几种请求瓦片时的URL样式罗列出来,并 ...

  8. Mysql中常见索引操作

  9. C-Sharp网络编程案例解析(Socket类的使用)

    Server端: using System; using System.Collections.Generic; using System.Text; using System.Net; using ...

  10. CSS中设置margin:0 auto; 水平居中无效的原因分析

    很多初学制作网页的朋友,可能会遇到的一个常见问题,就是在CSS中加了margin:0 auto;却没有效果,不能居中的问题,margin:0 auto;的意思就是:上下边界为0,左右根据宽度自适应,其 ...