DataReader的用法程序简析
// 2015/07/05
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient; namespace DataReaderSample
{
class Program
{
static void Main(string[] args)
{
// 集合,强类型的集合
System.Collections.Generic.List<StudentModel> list = new List<StudentModel>(); string connectionString = "server=.;database=BookSample;uid=LJK;pwd=123456";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string sql = "select ID,StuName ,phone from students";
SqlCommand cmd = new SqlCommand(sql,connection); // 通过数据库中的游标来辅助查询结果
SqlDataReader reader = cmd.ExecuteReader(); // DataReader 通过 Read 方法来读数据库中的记录
while (reader.Read())
{
Console.WriteLine("成功读取了一条记录");
// 读取的数据保存在 DataReader 对象内
int stuId = reader.GetInt32(0);
string stuName = reader.GetString(1);
string Phone = reader.GetString(2); //上面的程序还可以用下面的代码代替(第二种方法)
//这种方法得出的是object类型,所以要强制转换一下
//int stuId = (int)reader[0];(值类型)
//string stuName = reader[1] as string;(引用类型)
//string Phone = reader[2]; //另外一种方式,下标为字段名,即使select语句修改也无影响
//string stuName = reader["StuName"] as string;(引用类型) // 将读取的数据表示为对象实例
StudentModel model = new StudentModel();
model.StuID = stuId;
model.Stuname = stuName;
model.phone = Phone; list.Add(model); // 输出字段
// Console.WriteLine("StuId:{0} StuName = {1} Phone = {2}",stuId,stuName,Phone);
// Console.WriteLine("StuId:{0} StuName = {1} ", stuId, stuName);
}
// 游标也必须关闭
reader.Dispose();
}
// 当读取完成的时候,我们得到一个集合,其中包含若干个的对象实例
// 这些对象实例的数据来自数据库 foreach (StudentModel model in list)
{
Console.WriteLine("{0} {1} {2}",model.StuID,model.Stuname,model.phone);
}
Console.ReadKey();
}
}
}
/*
数据库中的数据是 null,与.NET下的null不一致
数据库中的null在.NET环境下,专门使用一个特殊的类型来表示
System.DBNull.Value
可用如下方法解决:
string region = null;
if(!reader.IsDBNull(3))
{
region = reader.GetString(3);
}
//假如为整形方法如下:
可空类型,只能用于值类型
int? reportsTo -= null;
//对于可控类型来说,现在也有两个状态
//reportsTo.HasValue
//reportsTo.Value if(!reader.IsDBNull(4))
{
reportsTo = reader.GetInt32(4);
}
*/ //另一个类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace DataReaderSample
{
public class StudentModel
{
private int stuId;
public int StuID
{
get { return stuId;}
set { stuId = value;}
}
public string Stuname { set; get; }
public string phone { set; get; } }
} //仅仅读取第一行第一列的值方法如下
// 2015/07/05
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient; namespace DataReaderSample
{
class Program
{
static void Main(string[] args)
{
string connectionString = "server=.;database=BookSample;uid=LJK;pwd=123456";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string sql = "select ID,StuName ,phone from students";
SqlCommand cmd = new SqlCommand(sql, connection); //仅仅读取第一行第一列的值
object obj = cmd.ExecuteScalar();
//如果一条数据都没有读到,那么返回null
if (obj != null)
{
int id = (int)obj;
Console.WriteLine("obj = {0}", id);
}
else
{
Console.WriteLine("没有读到数据!");
}
// 通过数据库中的游标来辅助查询结果
//SqlDataReader reader = cmd.ExecuteReader(); // DataReader 通过 Read 方法来读数据库中的记录
//if (reader.Read())
//{
// int stuid = reader.GetInt32(0);
// Console.WriteLine(stuid);
//}
//reader.Dispose();
} Console.ReadKey();
}
}
}
DataReader的用法程序简析的更多相关文章
- <摘自>飞:jxl简析2 [ http://www.emlog.net/fei ]
[<摘自>飞:jxl简析:http://www.emlog.net/fei] (二)应用 在进行实践前 , 我们需要对 excel 有一个大致的了解 ,excel 文件由一个工作簿 (Wo ...
- 简析.NET Core 以及与 .NET Framework的关系
简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...
- 简析 .NET Core 构成体系
简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...
- Android 启动过程简析
首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...
- Java Annotation 及几个常用开源项目注解原理简析
PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示 ...
- SimpleDateFormat使用简析
title: SimpleDateFormat使用简析 date: 2016-07-11 11:48:20 tags: Java SimpleDateFormat --- [转载自博客:http:// ...
- 简析TCP的三次握手与四次分手【转】
转自 简析TCP的三次握手与四次分手 | 果冻想http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文 ...
- 《共享库PATH与ld.so.conf简析》
这是摘抄<共享库PATH与ld.so.conf简析>1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个 ...
- SpringMVC源码情操陶冶-DispatcherServlet类简析(一)
阅读源码有利于陶冶情操,此文承接前文SpringMVC源码情操陶冶-DispatcherServlet父类简析 注意:springmvc初始化其他内容,其对应的配置文件已被加载至beanFactory ...
随机推荐
- 阿里开源Mysql分布式中间件:Cobar
目前在从事数据库中间件的开发和维护工作,我们使用的数据库中间件就是由cobar改造而来,所以对于cobar的一些说明一看就明白了: 下面是看到的一个很不错的分析文档 这里整理了下方便自己学习使用. C ...
- iOS开发——NSDate(待续...)
1.获取当前系统时间,毫秒级 - (void)viewDidLoad { [super viewDidLoad]; NSString *currentTime = [self getCurrentTi ...
- 解决word启动时报找不到mathpage.wll错误
按下面的网址进行操作即可: http://www.mathtype.cn/wenti/word-jianrong.html
- IOS开发-UI学习-UINavigationController(导航控制器)的使用
UINavigationController是IOS 中常用的功能,基本用法如下: 1.在AppDelegate.m中添加如下代码: #import "AppDelegate.h" ...
- javascript-变量-作用域
1.var message; ----这样定义的变量值为undefined 2.去掉var则为全局变量--message = “100”: 3.function fun(){ var messag ...
- Java IO面试
1. 讲讲IO里面的常见类,字节流.字符流.接口.实现类.方法阻塞. 字节流和字符流的区别: 1)字节流处理单元为1个字节,操作字节和字节数组,而字符流处理的单元为2个字节的Unicode字符,分别操 ...
- SVN:cannot map the project with svn provider解决办法
转自:http://www.blogjava.net/jzone/articles/337697.html 首先,叙述一下令人蛋疼的情况,纠结了我几个小时,更新Workspace原有的项目,显示更新成 ...
- samba.conf 范例
# Sample configuration file for the Samba suite for Debian GNU/Linux. # # This is the main Samba con ...
- SpringMVC详解
来源:Sunnier(http://www.admin10000.com/document/6436.html) 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入Spr ...
- Git 入门 ---- Git 与 SVN 区别
一. Git 是什么? Git 是目前世界上最先进的分布式版本控制系统 二. 基础知识 有中心的 SCM(Software Configuration Management) 服 ...