C# 使用数据读取器
来源:互联网 发布:python小游戏代码下载 编辑:程序博客网 时间:2024/05/01 08:46
很久以前就借了一本《Beginning C# Databases From Novice to Professional》,最近闲来无事终于可以拜读一下。读来发现自己之前的数据库操作是何等的粗鄙。今天 抽时间记录下一些关于数据读取器有关的内容。
在本书后面的数据集时提及“如果只想读取数据和显示数据,则只需使用数据读取器”,“如果需要处理数据,然后更新数据库,就需要使用数据集”
下面给出一个实例
using System;
using System.Data;
using System.Data.SqlClient;
namespace DataReader
{
class Program
{
static void Main(string[] args)
{
string connString = @"Data Source=localhost;Initial Catalog=mydatabase; Integrated Security=SSPI";
string sql = @"select * from mytable";
SqlConnection conn = new SqlConnection(connString);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
//SqlDataReader类是抽象类,不能显示实例化。必须执行SqlCommand的ExecuteReader方法获得SqlDataReader实例
SqlDataReader reader = cmd.ExecuteReader();
//Read方法如果存在下一行就返回true,并向前移动游标;如果没有下一行,该方法就返回false
while (reader.Read())
{
Console.WriteLine("databack with {0} columes", reader[0]);
}
}
catch (Exception e)
{
Console.WriteLine("Error occurred:" + e);
}
finally
{
conn.Close();
}
}
}
}
Console.WriteLine("databack with {0} columes", reader[0]); 中使用了序数索引器从数据库中检索列数据。
同时可以使用列名索引器(优点:使用列名索引器可以屏蔽由于添加删除列导致的列顺序变化,而产生的异常)
reader["CompanyName"].Tostring().PadLeft(25);
reader["ContactName"].Tostring().PadLeft(20);
然后如果知道了返回值的类型 还可以使用类型访问器
这个需要查表将数据库中定义的类型对用.NET Framework中的类型访问器
while(reader.Read())
{
Console.WriteLine("{0}\t{1}\t{2}\t{3}",reader.GetString(0).PadRight(30), reader.GetDecimal(1),reader.GetInt16(2),reader.GetBoolean(3));
}
类型访问器方法都以Get开头,用序数进行数据索引,是类型安全的
数据读取器的元数据属性和函数
函数或属性名称
说明
Depth
该属性表示当前行的嵌套深度
FieldCount
该属性表示结果集中的列数
GetDataTypeName
这个方法接收索引,返回含有列数据类型名称的字符串
GetfieldType
这个方法接收索引,返回对象的.NET FrameWork 数据类型
GetName
这个方法接收索引,返回指定列的名称
GetOrdinal
这个方法接收列名,返回列的索引
Console.WriteLine("'{0|' is at index{1}" +
"and its type is:{2}",
reader.GetName(0),
reader.GetOrdinal("contactname"),
reader.GetFieldType(0));
获取表的数据
DataTable schema=reader.GetSchemaTable();
使用拼接的方式 使用数据读取器处理多个结果集
string sql1 = @“select companyname,contactname from customers where companyname like 'A%'";
string sql2 =@"select firstname,lastname from employees";
string sql=sql1+sql2;
SqlDataReader reader= cmd.executeReader();
do
{
while(reader.Read())
{
Console.WriteLine("".PadLeft(60,'='));
}
}
while(reader.NextResult());
- C# 使用数据读取器
- C#数据库入门-012:数据读取器
- 数据读取器和DataGridView控件的使用
- 数据读取器揭密
- 数据读取器揭密
- Extjs学习 数据读取器DataReader
- 数据读取器对象SqlDataReader与数据适配器对象SqlDataAdapter的使用
- 数据读取器对象SqlDataReader与数据适配器对象SqlDataAdapter的使用
- 使用 .NET 框架中集成的读取器和写入器很容易操作 XML 数据
- Extjs常用Reader(数据读取器)详解
- SQLDataReaderToList 数据读取器转换到List
- 真实世界的 XML:使用 .NET 框架中集成的读取器和写入器很容易操作 XML 数据
- 真实世界的 XML:使用 .NET 框架中集成的读取器和写入器很容易操作 XML 数据
- Ext中数据读取器Ext.data.DataReader的学习
- [原创]SSIS-WMI 数据读取器任务:监控物理磁盘空间
- ADO.NET之8-数据读取器,DataReader---ShinePans
- Java学习笔记——使用缓冲读取器读取文件
- 使用C# post数据
- MySQL 数据库性能优化之表结构优化
- OCC Bspline 2
- listview加载性能优化ViewHolder
- Linux系统调用列表
- N个平面可以把空间分成几部分
- C# 使用数据读取器
- realloc 浅析
- 关于ICU4C
- made in?
- MySQL 数据库性能优化之索引优化
- 灯
- 这几天qc开会
- MySQL 数据库性能优化之SQL优化
- 数据结构基础系列——链栈的实现