--
--11.3.1节示例
--
构造SqlCommand实例执行SQL语句
string sql = "select * from Person.AddressType";//定义SQL语句字符串
SqlCommand cmd = new SqlCommand(sql, conn);//申明一个SqlCommand对象
构造SqlCommand实例执行存储过程
SqlCommand cmd = new SqlCommand("GetDeparmentByGroupName", conn);
//申明一个SqlCommand对象
cmd.CommandType = CommandType.StoredProcedure; //SqlCommand是用于存储过程
//以下是为SqlCommand传入参数
cmd.Parameters.Add(new SqlParameter("@groupName", "Research and Development"));
有输出参数的存储过程
CREATE PROC InsertNews --创建存储过程
@newsTitle nvarchar(100),
@newsContent nvarchar(max),
@newsID int out --输出参数
AS
INSERT INTO News(Title,Content)
values(@newsTitle,@newsContent)
SET @newsID=@@IDENTITY
调用有输出参数的存储过程
SqlCommand cmd = new SqlCommand("InsertNews", conn);
//使用存储过程的名字定义SqlCommand对象
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@newsTitle", "新闻标题");//传入存储过程参数
cmd.Parameters.AddWithValue("@newsContent", "新闻内容");
SqlParameter par = new SqlParameter("@newsID", SqlDbType.Int);
par.Direction = ParameterDirection.Output; //设置为输出参数
cmd.Parameters.Add(par);
--
--11.3.2节示例
--
使用ExecuteNonQuery()方法获得更改的行数
string sql = "update Person.AddressType set ModifiedDate=getdate()";
//定义SqlCommand中的SQL语句
SqlCommand cmd = new SqlCommand(sql, conn);//申明SqlCommand对象
int count = cmd.ExecuteNonQuery(); //执行SQL,返回更改了多少行数据
使用ExecuteScalar()查询表的行数
string sql = "select count(*) from Person.AddressType";//定义SQL语句返回行数
SqlCommand cmd = new SqlCommand(sql, conn);
Console.WriteLine(cmd.ExecuteScalar().ToString());//输出SQL返回的结果
使用ExecuteXmlReader()读取XML结果
string sql = "select * from Person.AddressType FOR XML RAW,ROOT('Types')";
//定义XML相关的SQL语句
SqlCommand cmd = new SqlCommand(sql, conn);
XmlReader xr= cmd.ExecuteXmlReader(); //XML读取结果
while (xr.Read())//循环读取
{
Console.WriteLine(xr.ReadOuterXml());//读取XML中的内容
}