一、常用属性

  CommandText   获取或设置要对数据源执行的 Transact-SQL 语句、表名或存储过程。
  CommandTimeout 获取或设置在终止执行命令的尝试并生成错误之前的等待时间。 
  CommandType   获取或设置一个值,该值指示释 CommandText 是SQL语句,存储过程还是表操作。
  Connection     获取或设置 SqlCommand 的此实例使用的 SqlConnection。
  Parameters        获取 SqlParameterCollection。
  Transaction     获取或设置将在其中执行 SqlCommand 的 SqlTransaction。

       static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123";
SqlConnection conn = new SqlConnection(str);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "Update Person Set Name = 'Ado.net修改' WHERE Id = @Id"; //设置操作语句
//看看默认的发生错误等待时间(秒)
Console.WriteLine(cmd.CommandTimeout); //30
//指明CommandText是SQL语句,存储过程还是表操作。枚举类型,转到定义可看
Console.WriteLine(cmd.CommandType); //输出 Text 表示这是一条SQL语句
//SqlCommand的SqlConnection实例对象
Console.WriteLine(cmd.Connection.ConnectionString); //"server=.;database=JunTest;uid=sa;pwd=123";
//设置参数值
cmd.Parameters.Add("@Id", SqlDbType.Int);
cmd.Parameters["@Id"].Value = 1;
Console.WriteLine(cmd.Parameters["@Id"].Value); //输出1 conn.Open();
conn.Close();
Console.ReadKey();
}

二、常用方法

  1、ExecuteNonQuery()  增删改操作

  增、删、改都是这个:

        static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123;";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "Update Person Set PersonName = 'Ado.net修改' WHERE PersonId = @Id"; //设置操作语句
cmd.Parameters.Add("@Id", SqlDbType.Int); //添加参数,说明类型
cmd.Parameters["@Id"].Value = 1; //设置参数值
conn.Open(); //打开连接
int i = cmd.ExecuteNonQuery(); //执行命令,ExecuteNonQuery由名称看出,只能用于非查询语句
conn.Close(); //关闭连接
Console.WriteLine(i); //输出影响行数 Console.ReadKey();
}

  2、ExecuteScalar()   返回第一行第一列
  3、ExecuteReader()  创建一个SqlDataReader用于读取数据

        static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123;";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "SELECT * FROM Person"; //设置操作语句
conn.Open(); //打开连接
//SqlDataReader读取数据
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader[0] + ":" + reader[1]); //输出当前行的第一列,第二列数据
}
} cmd.CommandText = "SELECT Count(*) FROM Person";
object obj = cmd.ExecuteScalar(); //仅查询第一行第一列
Console.WriteLine((int)obj);
conn.Close(); //关闭连接 Console.ReadKey();
}

  4、ExecuteXmlReader()  返回System.XmlReader实例,用于读取SQLServer中的XML字段的值

  首先建一张表如下:

  

  其中ArticleInfo字段的数据类型为xml,值为:

<Article>
<author age="30">张三</author>
<length>12000</length>
<price>42</price>
</Article>

  下面,我们使用ExecuteXmlReader()读取出author的值:

        static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123;";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "SELECT * FROM Person"; //设置操作语句
conn.Open(); //打开连接 cmd.CommandText = "SELECT Top 1 ArticleInfo FROM Article"; //查询XML字段
using (XmlReader reader = cmd.ExecuteXmlReader()) //由Command实例返回XmlReader的实例
{
while (reader.Read())
{
if (reader.Name == "author")
{
Console.WriteLine(reader.ReadInnerXml()); //输出张三
}
}
}
conn.Close(); Console.ReadKey();
}

  还有就是以上这些方法的异步版本,本处仅以以下两个方法示例:

  5、BeginExecuteNonQuery() 异步版ExecuteNonQuery()

  6、EndExecuteNonQuery()  异步版ExecuteNonQuery()

    class Program
{
static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123;Asynchronous Processing=true";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "INSERT INTO Person VALUES(11,'郭嘉')"; //设置操作语句
conn.Open(); //打开连接
cmd.BeginExecuteNonQuery(BeginCallback, cmd); //异步执行语句
Console.WriteLine("不管你执没执行完,我继续做我的事!"); Console.ReadKey();
} public static void BeginCallback(IAsyncResult result)
{
Console.WriteLine("正在执行SQL命令!");
SqlCommand cmd = result.AsyncState as SqlCommand; //获得异步传入的参数
Console.WriteLine("成功执行命令:" + cmd.CommandText);
Console.WriteLine("本次执行影响行数为:" + cmd.EndExecuteNonQuery(result));
Console.WriteLine("关闭连接!");
cmd.Connection.Close(); //正式关闭连接
}
}

  输出结果如下:

  

SqlCommand类的更多相关文章

  1. 维护基于ASP.NET的网站的学习-SqlCommand类介绍及存储过程

    笔者目前在维护学校科技处的一个网站,目前学期初,教师申报项目操作多,出现了一些问题.前几天维护了一个验证码图片不显示的bug,今天想记录下这个解决了一整天的bug-老师项目结题需要手动修改数据库老师项 ...

  2. 【转载】C#中SqlCommand类的作用以及常用方法

    在C#的数据库操作过程中,SqlCommand类一般用于Sqlserver数据库的SQL语句的执行,包括Select语句.Update语句.Delete语句以及SQL存储过程等,SqlCommand的 ...

  3. .NET基础操作回顾_使用ADO.NET操作SqlServer使用的类

    有些工具用的久了或者有新工具出现后,就慢慢的遗忘了很多,它们从熟悉的变成陌生,当然,对于我们来说不是好事吧. 今天回顾一下ADO.NET用到的MS的基础类库,先上代码(标准的SqlServer操作) ...

  4. SqlCommand.ExecuteScalar 方法

    本文来自:http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.100 ...

  5. 就这么 来ADO.net类操作数据库

    使用ADO.net操作数据库其实也是很简单,而且使用频率蛮高的一种方式.话不多说,上代码才更容易理解. 首先,先要引入数据库操作相关的命名空间,这样才能使用下面的代码 //数据库连接引用的命名空间 u ...

  6. c# SQL Server数据库操作-数据适配器类:SqlDataAdapter

    SqlDataAdapter类主要在MSSQL与DataSet之间执行数据传输工具,本节将介绍如何使用SqlDataAdapter类来填充DataSet和MSSQL执行新增.修改..删除等操作. 功能 ...

  7. c# SQL Server数据库操作-管理命令参数的类:SqlParameter

    使用SqlCommand类来执行Transact-SQL语句或存储过程时,有时需要用参数传值或作为返回值,SqlParameter类正是为了此需要而设计的类.下面介绍如何使用该类为SqlCommand ...

  8. Winform开发之SqlCommand常用属性和方法

    SqlCommand类表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程,有若干个属性和若干个方法,具体的各类方法使用可以从msdn上找到. 这里介绍几个常用东 ...

  9. ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)

    通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...

随机推荐

  1. 用continue语句的时候,要千万小心内存泄漏,当然还有return和break也是

    疑惑了大半年的内存泄漏,居然是因为这个原因- 有空学学QT的指针使用,可以使得代码更简洁.更不容易内存泄漏-

  2. 【转】SecureCRT 实用配置----不错

    原文网址:http://blog.csdn.net/ithomer/article/details/9503123 SecureCRT,是一款支持 SSH2.SSH1.Telnet.Telnet/SS ...

  3. 通过expdp/impdp进行oracle数据库的备份恢复详细指导

    假定导出oracle数据库home目录为/opt/oracle,数据库用户为exp_user/test,导入用户为imp_user/test,给出如下样例,具体使用时根据实际情况修改路径及用户名/密码 ...

  4. Sqrt(x) 解答

    Question Implement int sqrt(int x). Compute and return the square root of x. Solution 1 -- O(log n) ...

  5. ofbiz ins

  6. extjs两个tbar问题

      版本:extjs3.4   接触过extjs的同志们都知道每个panel都有一个tbar(top bar 上面工具栏) ,bbar(bottom bar 底部工具栏)      大家做查询页面,一 ...

  7. poj 3111 K Best (二分搜索之最大化平均值之01分数规划)

    Description Demy has n jewels. Each of her jewels has some value vi and weight wi. Since her husband ...

  8. Android日志系统驱动程序Logger源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6595744 我们知道,在Android系统中, ...

  9. 用cflow工具生成代码函数调用关系

    1. 安装 sudo apt-get install cflow 2.使用 cflow [options...] [file]... 例: cflow main.c 生成main.c文件例的函数调用关 ...

  10. 适用于CSS2的各种运动的javascript运动框架

    <script> window.onload = function() { //var oDiv1 = document.getElementById('box1'); //var oDi ...