ADO.NET(二)执行命令
定义好命令,我们就需要去执行他们,执行语句有很多,我们究竟要返回那条执行语句呢?就要看我们命令中要返回的是什么数据了。
sqlConnection和OleDbConnection提供了几种执行命令:
1. ExecuteNonQuery------执行命令,不返回任何结果
2. ExecuteReader-------执行命令,返回一个类型化IdataReader
3. ExecuteScalar-------执行命令,返回一个值
sqlCommand类也提供了两个方法
1.ExecuteResult------为将来使用而保留
2.ExecuteXmlReader-----执行命令,返回一个XmlReader对象,它可以传送从数据库中返回的XML代码段
一.ExecuteNonQuery()
这个方法用语update, delete, insert语句,唯一的返回值是记录个数,但如果调用一个有输出参数的存储过程,就有返回值了。
string connStr = "server=127.0.0.1;database=first_dotnet;User ID=sa;password=;Persist Security Info=true;";
string sql = "select * from user_table";
sqlConnection con=new sqlConnection(connStr);
con.open();
sqlCommand cmd=new sqlCommand(sql,con);
cmd.ExecuteNonQuery();
con.close();
ExecuteNonQuery()返回命令所操作的行数,它为一整数
二.ExecuteReader()
这个方法执行命令,可根据使用的提供者返回一个DataReader或者OleDbDataReader对象,返回的对象可用于迭代返回的记录
string connStr = "server=127.0.0.1;database=first_dotnet;User ID=sa;password=;Persist
Security Info=true;";
string sql = "select user_name,user_job from user_table";
sqlConnection con=new sqlConnection(connStr);
con.open();
sqlCommand cmd=new sqlCommand(sql,con);
sqlDataReader reader=cmd.ExecuteReader();
while(reader.Reader())
{
Console.WriteLine(“{0},{1}”,reader[0],reader[1]);
}
三.ExecuteScalar()
很多情况下,需要从SQL语句中返回一个结果,例如给定表中的记录个数,或者服务器当前的日期时间,ExecuteScalar()适用于这些情况
string connStr = "server=127.0.0.1;database=first_dotnet;User ID=sa;password=;Persist
Security Info=true;";
string sql = "select user_name,user_job from user_table";
sqlConnection con=new sqlConnection(connStr);
con.open();
sqlCommand cmd=new sqlCommand(sql,con);
Object o=cmd.ExecuteScalar();
该方法返回一个Object对象,如果需要可以把该对象的数据类型转化为合适的数据类型。
四.ExecuteResultSet()
这个方法标记为:为将来使用而保留,如果调用,则会抛出异常
五.ExecuteXMLReader()
这个方法给调用者返回一个XMLReader对象。SQL允许使用FOR XML子句来扩展SQL语句,
(1) FOR XML AUTO
(2) FOR XML RAW
(3) FOR XML EXPLICIT
如何使用AUTO
string connStr= "server=127.0.0.1;database=first_dotnet;User ID=sa;password=;Persist
Security Info=true;";
string sql = "select user_name,user_job “+”from user_table FOR XML AUTO ";
sqlConnection con=new sqlConnection(connStr);
con.open();
sqlConnection con=new sqlConnection(connStr);
XmlReader xr=cmd.ExecuteXMLReader();
while(xr.Reader())
{
Console.write(xr.ReaderOuterXml());
}
Con.close();