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 ...
随机推荐
- JAVA判断32位还是64位,调用不同的DLL(转)
源:JAVA判断32位还是64位,调用不同的DLL 通过获取sun.arch.data.model可判断是32还是64的JAVA 将32或者64位的DLL放不同的目录,实现自适应调用DLL Prope ...
- 完美分割字符串,实现字符串的splict功能
class Str:Client_C { string val; string[] str = new string[100]; public void StrT1() { //1.正常情况 //2. ...
- CoordinatorLayout学习笔记
CoordinatorLayout是一个增强型的FrameLayout.它的作用有两个 作为一个布局的根布局 最为一个为子视图之间相互协调手势效果的一个协调布局 代码如下: <?xml vers ...
- 写一个程序,统计自己C语言共写了多少行代码。ver2.00
概要 完成一个程序,作用是统计一个文件夹下面所有文件的代码行数.输入是一个文件夹的绝对路径,输出是代码行数.所以此程序的新特点有两个: 统计某一文件夹下的所有文件: 可以任意指定本机硬盘上任何位置的某 ...
- IOS开发-OC学习-NSTimer的使用
上一篇博客中在改变属性值的时候使用了timer进行自动改变.关于NSTimer的更详细的用法如下: 定义一个NSTimer类型的timer,和一个count,其中timer是定时器,count是计数的 ...
- Badboy安装与使用
Badboy是一个录制web脚本的工具 1.下载Badboy:http://www.badboy.com.au/download/add 2.启动Badboy,认识主界面 3.使用Badboy录制we ...
- Linux_System2
1.从服务器下载http*.tar.gz源码包,安装到/usr/local/apache目录下,要求安装时指定能够动态加载模块,能够支持地址回写功能,能够使用ssl加密功能../configure — ...
- gridview属性
1.列头充满:AutoSizeColumnsMode, Fill. 2.列内容居中:ColumnHeadersDefaultCellStyle, MiddleCenter. 3.行内容居中:RowsD ...
- linux内核设计与实现笔记 进程调度
转载:http://blog.chinaunix.net/uid-24919665-id-3013590.html
- RACSingle 有效的两种方式
第一种当然是subscribeNext 另外还有一种就是作为Command的enablesingle也相当于被订阅了.