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();
}
}
查看全文
相关阅读:
efibootmgr命令
GPT+UEFI双系统引导
关于元类的一些使用心得
队列的数组实现
队列的链表实现
栈的链表实现
栈的数组实现
单链表实现基数排序
多项式ADT加法乘法——单链表实现
LeetCode: 476 Number Complement(easy)
原文地址:https://www.cnblogs.com/kokoliu/p/615322.html
最新文章
cms
寒假学习笔记08
寒假学习笔记07
寒假学习笔记06
寒假学习笔记05
寒假学习笔记04
寒假学习笔记03
寒假学习笔记02
寒假学习笔记01
Mapreduce实例——WordCount
热门文章
Nexus_自己下载编译源码_刷机
android-4.4_r1
JS/JSP/Java 中 URL/参数 的转义
js_xpath_奇怪的地方
js_xpath_搞不定的东西
ajax_java_01
java_dom4j_xpath
ajax_java
JS_常用函数
windows下,为Vim添加右键打开菜单
Copyright © 2011-2022 走看看