zoukankan
html css js c++ java
一个程序详细研究DataReader(转)
//
***********************************************************
//
*名称:一个程序详细研究DataReader,同时显示Command用法
//
*功能:演示DataReader的各项操作。
//
*说明:如果需要文字说明请查看我的BLOG里面关于ado.net的文章
//
*作者:雪冬寒
//
*BOLG:
http://blog.csdn.net/bineon
//
***********************************************************
using
System;
using
System.Data;
using
System.Data.SqlClient;
using
System.Data.OleDb;
class
SqlReader
{
const
string
connStr
=
"
data source=bineon;user id=sa;password=87345587;initial catalog=contract
"
;
SqlConnection conn;
public
SqlReader()
{
conn
=
new
SqlConnection(connStr);
}
//
**************************************
//
*演示DataReader的两种取值方法
//
**************************************
public
void
basicReader()
{
string
sql
=
"
select * from friend
"
;
SqlCommand cmd;
cmd
=
conn.CreateCommand();
cmd.CommandText
=
sql;
conn.Open();
SqlDataReader reader
=
cmd.ExecuteReader();
while
(reader.Read())
{
Console.WriteLine(
"
No:{0}\tName:{1}\tPhoneNum:{2},\tAddress:{3}
"
,reader.GetInt32(
0
).ToString(),reader.GetString(
1
),reader[
2
].ToString(),reader[
"
Faddress
"
].ToString());
}
showSplit();
reader.Close();
conn.Close();
}
//
**************************************
//
*演示带参数查询的操作,使用SqlCilent
//
**************************************
public
void
hasParamReader()
{
SqlCommand cmd;
cmd
=
conn.CreateCommand();
string
sql
=
"
select Fname,Fphone,Faddress from friend where Fid > @Fid
"
;
cmd.CommandText
=
sql;
SqlParameter param
=
new
SqlParameter(
"
@Fid
"
,SqlDbType.Int,
4
);
param.Value
=
15
;
cmd.Parameters.Add(param);
conn.Open();
//
当关闭reader的时候同时关闭数据库连接
SqlDataReader reader
=
cmd.ExecuteReader(CommandBehavior.CloseConnection);
while
(reader.Read())
{
Console.WriteLine(
"
Name:{0}\tPhoneNum:{1}\tAddress:{2}
"
,reader.GetString(
0
),reader.GetString(
1
),reader.GetString(
2
));
}
showSplit();
//
无需关闭conn,系统会自动调用这个方法来关闭conn的。
reader.Close();
}
//
**************************************
//
*演示带参数查询的操作,使用OleDb
//
**************************************
public
void
hasOledbParamReader()
{
SqlCommand cmd;
cmd
=
conn.CreateCommand();
string
sql
=
"
select Fname,Fphone,Faddress from friend where Fid > ?
"
;
string
oledbConnStr
=
"
Provider=sqloledb;
"
+
connStr;
OleDbConnection oleConn
=
new
OleDbConnection(oledbConnStr);
OleDbCommand oleCmd
=
new
OleDbCommand(sql,oleConn);
oleCmd.Parameters.Add(
"
nothing
"
,
15
);
oleConn.Open();
OleDbDataReader oleReader
=
oleCmd.ExecuteReader();
while
(oleReader.Read())
{
Console.WriteLine(
"
Name:{0}\tPhoneNum:{1}\tAddress:{2}
"
,oleReader.GetString(
0
),oleReader.GetString(
1
),oleReader.GetString(
2
));
}
showSplit();
oleReader.Close();
oleConn.Close();
}
//
**************************************
//
*演示存储过程的输出参数
//
**************************************
public
void
outParamShow()
{
SqlCommand cmd;
cmd
=
conn.CreateCommand();
cmd.CommandText
=
"
GetInfo
"
;
cmd.CommandType
=
CommandType.StoredProcedure;
SqlParameter param
=
cmd.Parameters.Add(
"
@Fid
"
,
16
);
param
=
cmd.Parameters.Add(
"
@Fname
"
,SqlDbType.VarChar,
8
);
param.Direction
=
ParameterDirection.Output;
param
=
cmd.Parameters.Add(
"
@Fphone
"
,SqlDbType.VarChar,
8
);
param.Direction
=
ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
string
Fname
=
cmd.Parameters[
"
@Fname
"
].Value.ToString();
string
Fphone
=
cmd.Parameters[
"
@Fphone
"
].Value.ToString();
Console.WriteLine(Fname
+
"
"
+
Fphone);
conn.Close();
showSplit();
}
//
**************************************
//
*演示读取多个无关记录集
//
**************************************
public
void
multiResult()
{
SqlCommand cmd;
cmd
=
conn.CreateCommand();
string
sqla
=
"
select Fname from friend
"
;
string
sqlb
=
"
select Fphone from friend
"
;
cmd.CommandText
=
sqla
+
"
;
"
+
sqlb;
conn.Open();
SqlDataReader reader
=
cmd.ExecuteReader();
int
i
=
1
;
do
{
Console.WriteLine(
"
第
"
+
i.ToString()
+
"
个记录集内容如下:\n
"
);
while
(reader.Read())
{
Console.WriteLine(reader[
0
].ToString()
+
"
\t
"
);
}
i
++
;
}
while
(reader.NextResult());
//
NextResult()移动到下一个记录集
reader.Close();
conn.Close();
showSplit();
}
//
**************************************
//
*使用DataReader获得数据库模式信息
//
**************************************
public
void
getSchema()
{
SqlCommand cmd;
cmd
=
conn.CreateCommand();
string
sql
=
"
select Fid,Fname,Fphone from friend
"
;
cmd.CommandText
=
sql;
conn.Open();
SqlDataReader reader
=
cmd.ExecuteReader();
DataTable SchemaTable
=
reader.GetSchemaTable();
DataRowCollection SchemaColumns
=
SchemaTable.Rows;
DataColumnCollection SchemaProps
=
SchemaTable.Columns;
foreach
(DataRow SchemaColumn
in
SchemaColumns)
{
foreach
(DataColumn SchemaColumnProp
in
SchemaProps)
{
Console.WriteLine(SchemaColumnProp.ColumnName
+
"
=
"
+
SchemaColumn[SchemaColumnProp.ColumnName].ToString());
}
}
reader.Close();
conn.Close();
showSplit();
}
//
**************************************
//
*从数据库读取二进制数据的代码段
//
*该代码段只是读取二进制的片断,不是
//
*整个程序,所以不能执行,你可以把它
//
*集成到你的WinForm项目里面。
//
**************************************
public
void
getBinary()
{
/**/
/*
System.IO.MemoryStream stream = new System.IO.MemoryStream();
System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);
int BufferSize = 1024;
byte[] Buffer = new Byte[BufferSize];
long Offset = 0;
long BytesRead = 0;
do
{
BytesRead = reader.GetBytes(2,Offset,Buffer,0,BufferSize);
writer.Writer(Buffer,0,(int)BytesRead);
writer.Flush();
Offset += BytesRead;
}
while(BytesRead == BufferSize);
*/
}
//
添加输出分隔
private
void
showSplit()
{
Console.WriteLine(
"
\n********************************************************************\n
"
);
}
public
static
void
Main(
string
[] args)
{
SqlReader sqlreader
=
new
SqlReader();
sqlreader.basicReader();
sqlreader.hasParamReader();
sqlreader.hasOledbParamReader();
sqlreader.outParamShow();
sqlreader.multiResult();
sqlreader.getSchema();
}
}
查看全文
相关阅读:
优秀案例:18个美丽的图片在网页设计中的使用
推荐几款很棒的 JavaScript 表单美化和验证插件
25套用于 Web UI 设计的免费 PSD 网页元素模板
字体排布艺术:30例可圈可点的版式设计欣赏
Twitter Bootstrap 3.0 正式发布,更好地支持移动端开发
引领网页设计潮流的优秀网页作品赏析《第三季》
Codrops 优秀教程:实现效果精美的多层推拉菜单
字体大宝库:设计师必备的精美免费英文字体
优秀前端开发教程:超炫的 Mobile App 3D 演示
推荐35个新鲜出炉的响应式 Web 设计实例
原文地址:https://www.cnblogs.com/kokoliu/p/615322.html
最新文章
linux下Postgresql-9.2安装及数据库的创建过程
安装PostgreSQL数据库(Linux篇)
使用OFBIZ的理由和不使用OFBIZ的理由
谈Apache OFbiz 会员模块表结构设计
ofbiz框架以及核心原理介绍
ER图是啥?
Guava:好用的java类库 学习小记
Google guava工具类的介绍和使用
neo4j 的cql 语句,增、删、改、查(条件查询)(持续更新)
Neo4j : 通过节点的 id属性 对节点进行查,改,删操作
热门文章
看漫画就能学SQL,简直太cool了
秒杀系统架构分析与实战
FancySelect – 更好用的 jQuery 下拉选择框插件
帮助你在 Photoshop 中轻松实现长阴影效果的工具
Tridiv:基于 Web 的 CSS 编辑器,创建炫丽 3D 图形
简约而不简单:网站着陆页的设计(Landing Page Design)
字体大宝库:15款免费英文艺术字体下载
jQuery Wheel Menu:实现漂亮的 Path 风格旋转菜单
SlimerJS – Web开发人员可编写 JS 控制的浏览器
50款免费 PSD 名片设计模板源文件下载《下篇》
Copyright © 2011-2022 走看看