SqlCommand类
一、常用属性
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类的更多相关文章
- 维护基于ASP.NET的网站的学习-SqlCommand类介绍及存储过程
笔者目前在维护学校科技处的一个网站,目前学期初,教师申报项目操作多,出现了一些问题.前几天维护了一个验证码图片不显示的bug,今天想记录下这个解决了一整天的bug-老师项目结题需要手动修改数据库老师项 ...
- 【转载】C#中SqlCommand类的作用以及常用方法
在C#的数据库操作过程中,SqlCommand类一般用于Sqlserver数据库的SQL语句的执行,包括Select语句.Update语句.Delete语句以及SQL存储过程等,SqlCommand的 ...
- .NET基础操作回顾_使用ADO.NET操作SqlServer使用的类
有些工具用的久了或者有新工具出现后,就慢慢的遗忘了很多,它们从熟悉的变成陌生,当然,对于我们来说不是好事吧. 今天回顾一下ADO.NET用到的MS的基础类库,先上代码(标准的SqlServer操作) ...
- SqlCommand.ExecuteScalar 方法
本文来自:http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.100 ...
- 就这么 来ADO.net类操作数据库
使用ADO.net操作数据库其实也是很简单,而且使用频率蛮高的一种方式.话不多说,上代码才更容易理解. 首先,先要引入数据库操作相关的命名空间,这样才能使用下面的代码 //数据库连接引用的命名空间 u ...
- c# SQL Server数据库操作-数据适配器类:SqlDataAdapter
SqlDataAdapter类主要在MSSQL与DataSet之间执行数据传输工具,本节将介绍如何使用SqlDataAdapter类来填充DataSet和MSSQL执行新增.修改..删除等操作. 功能 ...
- c# SQL Server数据库操作-管理命令参数的类:SqlParameter
使用SqlCommand类来执行Transact-SQL语句或存储过程时,有时需要用参数传值或作为返回值,SqlParameter类正是为了此需要而设计的类.下面介绍如何使用该类为SqlCommand ...
- Winform开发之SqlCommand常用属性和方法
SqlCommand类表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程,有若干个属性和若干个方法,具体的各类方法使用可以从msdn上找到. 这里介绍几个常用东 ...
- ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)
通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...
随机推荐
- Java I/O 模型的演进
什么是同步?什么是异步?阻塞和非阻塞又有什么区别?本文先从 Unix 的 I/O 模型讲起,介绍了5种常见的 I/O 模型.而后再引出 Java 的 I/O 模型的演进过程,并用实例说明如何选择合适的 ...
- HTTP请求&&响应
在视频上截的图....俗话说好记性不如烂笔头,所以就保留下来 请求: 响应: 状态码: 请求头和响应头的解释:
- yum笔记
rpm --> yum HTML: HyperText Mark LanguageXML: eXtended Mark Language XML, JSON: 半结构化的数据 yum仓库中的元数 ...
- Linux权限管理(笔记)
权限管理:r: w:x: 三类用户:u: 属主g: 属组o: 其它用户 chown: 改变文件属主(只有管理员可以使用此命令)# chown USERNAME file,... -R: 修改目录 ...
- [Hapi.js] View engines
View engines, or template engines, allow you to maintain a clean separation between your presentatio ...
- HDU 1863:畅通project(带权值的并查集)
畅通project Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- CGContextRef CIImageRef详解
第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate函数创建CGImageRef 然后把CGImageRef放 ...
- 常用Git命令汇总
常用Git命令汇总 跟着R哥来到了新公司(一个从硬件向互联网转型中的公司),新公司以前的代码基本是使用SVN做版本控制,甚至有些代码没有做版本控制,所以R哥叫HG做了一次Git分享,准备把公司所有的代 ...
- 我对 javascript 闭包的理解
学js的学到闭包,但是理解不深. 后来看了一下这篇文章: 地址:http://leepiao.blog.163.com/blog/static/4850313020112835355917/ 内容如下 ...
- Android adb不是内部或外部命令 (转)
dos窗口运行adb命令出现错误:adb不是内部或外部命令…. 出现问题原因及解决办法: 1.没有配置相关环境变量. 只要将android 的sdk安装路径添加到系统变量Path中即可. (以win7 ...