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();
}
}
查看全文
相关阅读:
Bzoj 2820: YY的GCD(莫比乌斯反演+除法分块)
Cogs 2221. [SDOI2016 Round1] 数字配对(二分图)
Cogs 750. 栅格网络(对偶图)
最小环问题
浅谈卡特兰数
洛谷 P1744 采购特价商品
HDU 1212 Big Number
HDU 2108 Shape of HDU
HDU 1029 Ignatius and the Princess IV
HDU 1021 Fibonacci Again
原文地址:https://www.cnblogs.com/kokoliu/p/615322.html
最新文章
AC日记——小B的询问 洛谷 P2709
AC日记——[SDOI2009]HH的项链 洛谷 P1972
AC日记——自然数和分解 codevs 2549
AC日记——采花 洛谷 P2056
UVA1674 闪电的能量 树剖
树链剖分总结
一个关于宏使用惨痛的教训
Sublime Text 3 C++ 配置
[POI2008]BLO-Blockade 割点
黑匣子 对顶堆
热门文章
spfa板子
[ZJOI2009]假期的宿舍 二分图匹配匈牙利
[SCOI2009] windy数 数位DP
[CQOI2016]手机号码 数位DP
Cogs 1632. 搬运工(二分图最小点覆盖)
51 NOD 1239 欧拉函数之和(杜教筛)
Bzoj 2245: [SDOI2011]工作安排(费用流)
51 NOD 1244 莫比乌斯函数之和(杜教筛)
1101: [POI2007]Zap(莫比乌斯反演)
Bzoj 2301: [HAOI2011]Problem b(莫比乌斯反演+除法分块)
Copyright © 2011-2022 走看看