数据库操作重点总结记录 ExecuteReader OleDbDataReader...
2010-05-15 08:56
417 查看
最近在做winform的编程,想到一真没有使用过ExecuteReader。可能以前以后它的用户不大,或者
不大好用,故没有用过。今天在这里将学习记录写下来,供读者参考:
1、MSDN上说:Sends the CommandText to the Connection and builds a SqlDataReader.
(这句话就不翻译了)
2、实例片段:
[C#]
public void CreateMySqlDataReader(string mySelectQuery, SqlConnection myConnection)
{
string sql;//sql语句
SqlCommand myCommand = new SqlCommand(sql, myConnection);
myConnection.Open();
SqlDataReader myReader;
myReader = myCommand.ExecuteReader();
try
{
while(myReader.Read())
{
Console.WriteLine(myReader.GetString(0));
}
}
finally
{
myReader.Close();
myConnection.Close();
}
}
3、下面说说它的用法:
①:
用法:ExecuteReader 方法存在的目的只有一个:尽可能快地对数据库进行查询并得到结果。ExecuteReader 返回一个 DataReader对象:如果在SqlCommand对象中调用,则返回SqlDataReader;如果在OleDbCommand对象中调用,返回的是OleDbDataReader。可以调用DataReader的方法和属性迭代处理结果集。它是一个快速枚举数据库查询结果的机制,是只读、只进的。对SqlDataReader.Read的每次调用都会从结果集中返回一行。
②:
这是出自我平时所用的时候的一些认识:那就是如果我们在进行数据操作时,如果没有数据可操作,那么我们只能使用ExecuteReader()这个CMD,而executeNoeQuery()与Executescalar()如果在没有数据的时候使用时,就会出错“对像没有实例化”的错误。所以我们在判断是否有数据时,只可以用ExecuteReader()中的REad()方法来检测。
④:
DataReader还有一个GetValue方法可以用来检索字段的值。GetValue返回一个一般性的Object,但是被无数个返回强类型的Get方法补充,比如GetInt32和GetDecimal(参考MSDN2005)。对GetOrdinal的调用是必须的,因为GetDecimal只接受整型索引。GetOrdinal所做的工作正好与GetName相反——它把字段名转换成数字索引。
注意:DataReader必须处理Close方法。
using System.Data.SqlClient;
...
SqlConnection conn = new SqlConnection(@"server=ws7\leosql;database=AdventureWorks;uid=sa;pwd=lixiang@");
try
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM titles WHERE advance != 0", conn);
SqlDataReader reader = cmd.ExecuteReader();
int index = reader.GetOrdinal("advance");
while(reader.Read())
Console.WriteLine("{0:c}", reader.GetDecimal(index));
=================================
-- Console.WriteLine(reader.GetName(0));
=================================
''reader.Close();''
}
catch(SqlException ex)
{
Console.WriteLine(ex.Message);
}
finally
{
========================================================
-- 可以配置DataReader,使它真的可以关闭一个底层连接
-- reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
========================================================
conn.Close();
}
⑤:
现在来强调下:现在来说下ExecuteReader的read()方法,它就是读取一个表的记录,即执行读,每次调用都是返回一行的结果集。
一般用在判断这行的结果集是否有效果,有的话就执行下面的操作。一句话:一般用于判断返回的结果。
完:请高手给予指点
不大好用,故没有用过。今天在这里将学习记录写下来,供读者参考:
1、MSDN上说:Sends the CommandText to the Connection and builds a SqlDataReader.
(这句话就不翻译了)
2、实例片段:
[C#]
public void CreateMySqlDataReader(string mySelectQuery, SqlConnection myConnection)
{
string sql;//sql语句
SqlCommand myCommand = new SqlCommand(sql, myConnection);
myConnection.Open();
SqlDataReader myReader;
myReader = myCommand.ExecuteReader();
try
{
while(myReader.Read())
{
Console.WriteLine(myReader.GetString(0));
}
}
finally
{
myReader.Close();
myConnection.Close();
}
}
3、下面说说它的用法:
①:
用法:ExecuteReader 方法存在的目的只有一个:尽可能快地对数据库进行查询并得到结果。ExecuteReader 返回一个 DataReader对象:如果在SqlCommand对象中调用,则返回SqlDataReader;如果在OleDbCommand对象中调用,返回的是OleDbDataReader。可以调用DataReader的方法和属性迭代处理结果集。它是一个快速枚举数据库查询结果的机制,是只读、只进的。对SqlDataReader.Read的每次调用都会从结果集中返回一行。
②:
这是出自我平时所用的时候的一些认识:那就是如果我们在进行数据操作时,如果没有数据可操作,那么我们只能使用ExecuteReader()这个CMD,而executeNoeQuery()与Executescalar()如果在没有数据的时候使用时,就会出错“对像没有实例化”的错误。所以我们在判断是否有数据时,只可以用ExecuteReader()中的REad()方法来检测。
④:
DataReader还有一个GetValue方法可以用来检索字段的值。GetValue返回一个一般性的Object,但是被无数个返回强类型的Get方法补充,比如GetInt32和GetDecimal(参考MSDN2005)。对GetOrdinal的调用是必须的,因为GetDecimal只接受整型索引。GetOrdinal所做的工作正好与GetName相反——它把字段名转换成数字索引。
注意:DataReader必须处理Close方法。
using System.Data.SqlClient;
...
SqlConnection conn = new SqlConnection(@"server=ws7\leosql;database=AdventureWorks;uid=sa;pwd=lixiang@");
try
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM titles WHERE advance != 0", conn);
SqlDataReader reader = cmd.ExecuteReader();
int index = reader.GetOrdinal("advance");
while(reader.Read())
Console.WriteLine("{0:c}", reader.GetDecimal(index));
=================================
-- Console.WriteLine(reader.GetName(0));
=================================
''reader.Close();''
}
catch(SqlException ex)
{
Console.WriteLine(ex.Message);
}
finally
{
========================================================
-- 可以配置DataReader,使它真的可以关闭一个底层连接
-- reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
========================================================
conn.Close();
}
⑤:
现在来强调下:现在来说下ExecuteReader的read()方法,它就是读取一个表的记录,即执行读,每次调用都是返回一行的结果集。
一般用在判断这行的结果集是否有效果,有的话就执行下面的操作。一句话:一般用于判断返回的结果。
完:请高手给予指点
相关文章推荐
- DAL 操作数据库方法ExecuteNonQuery/ExecuteScalar/SqlDataAdapter/SqlDataReader
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- SqlDataReader查询,更新,删除并保持和数据库实时操作
- PHP操作MongoDB 数据库总结记录
- 利用SqlCommand和SqlDataReader对象操作数据库
- sqldatareader 分批,分页操作数据库
- ADO.NET数据库操作------SqlDataReader和SqlDataAdapter 区别
- 利用SqlCommand和SqlDataReader对象操作数据库
- 多线程下,多次操作数据库报错,There is already an open DataReader associated with this Command which must be closed first.
- SqlDataReader查询,更新,删除并保持和数据库实时操作(转)
- Mysql_知识总结03(级联操作+多表查询【左外连接查询*重点掌握】+数据库的存储过程)
- 利用SqlCommand和SqlDataReader对象操作数据库(C#)
- 新炬分享8种热门数据库取前几条记录操作总结
- PHP操作MongoDB 数据库总结记录
- 使用OleDbDataReader 或sqldatareader 连数据库
- 使用SqlDataReader来操作数据库
- Postgresql 常见数据库操作命令记录
- JavaScript操作数据库总结
- SqlConnection,SqlCommand,SqldataReader的用法总结:
- JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能