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 ...
随机推荐
- 实现基本TCP套接字客户端
//实现基本TCP套接字客户端var net = require('net');function getConnection(connName){ var client = net.connect({ ...
- LRU Cache 题解
题意 Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- 微信小程序之----video视频播放
vidao 我现在看到的官方文档是不带danmu(弹幕)属性的,之前是有的,不过现在这个属性还可以生效.控制视频的状态可以根据video标签的唯一id得到一个对象实例.video组件并不具备actio ...
- cocos2d-x 跨平台usleep方法
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) #define usleep(t) Sleep(t) #else #include <unistd.h ...
- Backbone+React使用
1.react作为backbone的视图 2.backone和react和通信,backbone的view 渲染react组件, react组件使用backbone的collection数据 < ...
- [转]centos 6.5安装caffe
centos 6.5安装caffe 原文地址:http://blog.csdn.net/wqzghost/article/details/47447377 总结:在安装protobuf,hdf5等 ...
- 1.1.1.持久化存储协调器(Core Data 应用程序实践指南)
持久化存储协调器(persistent store coordinator)里面包含一份持久化存储区,而存储区里又含有数据表里的若干行数据. 与原子存储不同,SQLite数据库会在用户提交变更日志时进 ...
- PHP实现仿Google分页效果的分页函数
本文实例讲述了PHP实现仿Google分页效果的分页函数.分享给大家供大家参考.具体如下: /** * 分页函数 * @param int $total 总页数 * @param int $pages ...
- Java-Swing编程之对话框案例详解
package com.xushouwei.cn.photo; import java.awt.GraphicsConfiguration; import java.awt.GridLayout; i ...
- webx学习
webx框架学习指南 http://openwebx.org/docs/Webx3_Guide_Book.html webx学习(一)——初识webx webx学习(二)——Webx Framewor ...