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 ...
随机推荐
- S3C2440的RTC解析
位二-十进制交换码(BCD)值数据给CPU.这些数据包括年.月.日.星期.时.分和秒的时间信息.RTC单元工作在外部32.768kHz晶振并且可以执行闹钟功能 实时时钟模块保存的数据是DCD码形式. ...
- X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件
X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件 <<<<<<<<<<<<<< ...
- IOS开发-UI学习-UINavigationController(导航控制器)的使用
UINavigationController是IOS 中常用的功能,基本用法如下: 1.在AppDelegate.m中添加如下代码: #import "AppDelegate.h" ...
- func 和action 委托的使用
func 可以带返回值,action 不带返回值 平时我们如果要用到委托一般都是先声明一个委托类型,比如: private delegate string Say(); string说明适用于这个委 ...
- keystore 介绍
Keytool 是一个有效的安全钥匙和证书的管理工具. Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存 ...
- Django with uWSGI and nginx
Reference:http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html Setting up Dja ...
- (转载)HTML、CSS、JavaScript、PHP、MySQL 的学习顺序是什么?
文章转载自 鸟巢 - 技术分享的社区 http://t.runoob.com/question/13 1.HTML.CSS.JavaScript 前端学习三部曲,照着这个顺序依次学习 HTML教程.C ...
- 定制自己的Unity脚本模板
有时候想给脚本添加符合自己编程习惯的内容,或是一些个性化信息.而作为一个多多少少有点强迫症的人,这种东西要加就得每个脚本都加上,不然看着多不爽! 于是就得每添加一个脚本就去修改一下,很麻烦. 但是,在 ...
- Flex 开发框架汇总
1.现有成熟Flex框架 Cairngorm (Adobe Open Source) - MVC framework PureMVC (Open Source) - MVC framework ...
- doubango介绍
1.doubango官网:http://www.doubango.org/ 2.doubango是一个开源的VOIP基础平台, 并能用于嵌入式和桌面系统的开源框架,该框架使用ANSCI-C编写,具有很 ...