168.C# Command对象 c# implements
xsobi 2024-12-18 17:46 2 浏览
摘要
使用Connection对象与数据源建∥.连接后,可以使用Command对象对数据源执行查询、添加、删除利和修收等各种操作,操作实现的方可以是使用SQL语句,也可以是使用存储过程。根据.NET Framework数据提供程序的不同Command对象可以分成4种,分别是SqlCommand、OleDbCommand、OdbcCommand和DracleCommand,在实际的编程过程中应该根据访问的数据源不同,选择相对应的Command对象。
正文
属性
CommandText | 获取或设置要在数据源中执行的 Transact-SQL 语句、表名或存储过程。 |
CommandTimeout | 获取或设置在终止尝试执行命令并生成错误之前的等待时间(以秒为单位)。 |
CommandType | 获取或设置一个值,该值指示解释 CommandText 属性的方式。 |
Connection | 获取或设置 SqlCommand 的此实例使用的 SqlConnection。 |
DbConnection | 获取或设置此 DbConnection 使用的 DbCommand。<br><br>(继承自 DbCommand) |
DbParameterCollection | 获取 DbParameter 对象的集合。<br><br>(继承自 DbCommand) |
DbTransaction | 获取或设置将在其中执行此 DbCommand 对象的 DbTransaction。<br><br>(继承自 DbCommand) |
DesignTimeVisible | 获取或设置一个值,该值指示命令对象是否应在 Windows 窗体设计器控件中可见。 |
Notification | 获取或设置一个指定绑定到此命令的 SqlNotificationRequest 对象的值。 |
Parameters | 获取 SqlParameterCollection。 |
Transaction | 获取或设置要在其中执行 SqlTransaction 的 SqlCommand。 |
UpdatedRowSource | 获取或设置命令结果如何应用于 DataRow Update 方法 DbDataAdapter的用法。 |
方法
BeginExecuteNonQuery() | 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。 |
BeginExecuteNonQuery(AsyncCallback, Object) | 在给定回调过程和状态信息的情况下,启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。 |
BeginExecuteReader() | 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,并从服务器中检索一个或多个结果集。 |
BeginExecuteReader(AsyncCallback, Object) | 在给定回调过程和状态信息的情况下,启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,并从服务器中检索一个或多个结果集。 |
BeginExecuteReader(AsyncCallback, Object, CommandBehavior) | 在给定回调过程和状态信息的情况下,通过使用 CommandBehavior 值之一并从服务器中检索一个或多个结果集,启动由此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。 |
BeginExecuteReader(CommandBehavior) | 通过使用 CommandBehavior 值之一,启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。 |
BeginExecuteXmlReader() | 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,并将结果作为 XmlReader 对象返回。 |
BeginExecuteXmlReader(AsyncCallback, Object) | 通过使用回调过程,启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,并将结果作为 XmlReader 对象返回。 |
Cancel() | 尝试取消 SqlCommand 的执行。 |
CreateDbParameter() | 创建 DbParameter 对象的新实例。<br><br>(继承自 DbCommand) |
CreateParameter() | 创建 SqlParameter 对象的新实例。 |
EndExecuteNonQuery(IAsyncResult) | 完成 Transact-SQL 语句的异步执行。 |
EndExecuteReader(IAsyncResult) | 完成 Transact-SQL 语句的异步执行,从而返回请求的 SqlDataReader。 |
EndExecuteXmlReader(IAsyncResult) | 完成 Transact-SQL 语句的异步执行,从而将请求的数据以 XML 形式返回。 |
ExecuteDbDataReader(CommandBehavior) | 针对其连接执行命令,返回可用于访问结果的命令 DbDataReader 。<br><br>(继承自 DbCommand) |
ExecuteDbDataReaderAsync(CommandBehavior, CancellationToken) | 提供程序应执行该方法对 ExecuteReader 重载提供非默认的实现。<br><br>默认实现调用同步 ExecuteReader() 方法并返回已完成任务,以便阻止调用线程。 如果传递到已取消的取消标记,则默认实现将返回已取消的任务。 ExecuteReader 引发的异常将通过返回的任务异常属性传递。<br><br>该方法可用于请求操作之前接受取消标记。 实现可能会忽略该请求。<br><br>(继承自 DbCommand) |
ExecuteNonQuery() | 对连接执行 Transact-SQL 语句并返回受影响的行数。 |
ExecuteNonQueryAsync() | 一个异步版本 ExecuteNonQuery(),它对其连接对象执行命令,返回受影响的行数。<br><br>通过 CancellationToken.None 调用 ExecuteNonQueryAsync(CancellationToken)。<br><br>(继承自 DbCommand) |
ExecuteNonQueryAsync(CancellationToken) | 异步版本,该版本ExecuteNonQuery()针对连接执行 Transact-SQL 语句,并返回受影响的行数。 取消标记可用于在命令超时超过前请求放弃操作。 将通过返回的任务对象报告异常。 |
ExecuteReader() | 将 CommandText 发送到 Connection,并生成 SqlDataReader。 |
ExecuteReader(CommandBehavior) | 将 CommandText 发送到 Connection,并使用 CommandBehavior 值之一生成 SqlDataReader。 |
ExecuteReaderAsync() | ExecuteReader() 的异步版本,它可以将 CommandText 发送到 Connection,并生成 SqlDataReader。 将通过返回的任务对象报告异常。 |
ExecuteReaderAsync(CancellationToken) | ExecuteReader() 的异步版本,它可以将 CommandText 发送到 Connection,并生成 SqlDataReader。<br><br>取消标记可用于在命令超时超过前请求放弃操作。 将通过返回的任务对象报告异常。 |
ExecuteReaderAsync(CommandBehavior) | ExecuteReader(CommandBehavior) 的异步版本,用于将 CommandText 发送到 Connection,并生成一个 SqlDataReader。 将通过返回的任务对象报告异常。 |
ExecuteReaderAsync(CommandBehavior, CancellationToken) | ExecuteReader(CommandBehavior) 的异步版本,它可以将 CommandText 发送到 Connection,并生成 SqlDataReader。<br><br>取消标记可用于在命令超时超过前请求放弃操作。 将通过返回的任务对象报告异常。 |
ExecuteScalar() | 执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。 |
ExecuteScalarAsync() | 异步版本的 ExecuteScalar()命令执行该命令,并返回第一个返回结果集中第一行的第一列。 将忽略所有其他列、行和结果集。<br><br>通过 CancellationToken.None 调用 ExecuteScalarAsync(CancellationToken)。<br><br>(继承自 DbCommand) |
ExecuteScalarAsync(CancellationToken) | ExecuteScalar() 的异步版本,该版本异步执行查询,并返回由查询返回的结果集中的第一行的第一列。 忽略其他列或行。<br><br>取消标记可用于在命令超时超过前请求放弃操作。 将通过返回的任务对象报告异常。 |
ExecuteXmlReader() | 将 CommandText 发送到 Connection,并生成一个 XmlReader 对象。 |
ExecuteXmlReaderAsync() | ExecuteXmlReader() 的异步版本,可以将 CommandText 发送到 Connection,并生成 XmlReader 对象。<br><br>将通过返回的任务对象报告异常。 |
ExecuteXmlReaderAsync(CancellationToken) | ExecuteXmlReader() 的异步版本,可以将 CommandText 发送到 Connection,并生成 XmlReader 对象。<br><br>取消标记可用于在命令超时超过前请求放弃操作。 将通过返回的任务对象报告异常。 |
ResetCommandTimeout() | 将 CommandTimeout 属性重置为其默认值。 |
Command对象也称为数据库命令对象,Command对象主要执行包括添加、删除、修改及查询数据的操作的命令。也可以用来执行存储过程。用于执行存储过程时需要将Command对象的CommandType 属性设置为CommandType.StoredProcedure,默认情况下CommandType 属性为CommandType.Text,表示执行的是普通SQL语句。Command主要有三个方法:
- ExecuteNonQuery
- ExecuteScalar
- ExecuteReader
ExecuteNonQuery():执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。用于完成insert,delete,update操作。
string sql = "INSERT INTO wms_material(material_no, mlfb, description, repair_type, location" +
", actual_qty, qty, notification_no,urequestid) VALUES ('" + txtMaterialNo.Text + "','" + txtMlfb.Text
+ "','" + txtDescription.Text + "','" + cboRepairType.Text + "','" + txtLocation.Text
+ "'," + nudActualQty.Value + "," + nudQty.Value + ",'" + txtNotificationNo.Text + "','" + Guid.NewGuid().ToString() + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
int rows = cmd.ExecuteNonQuery();
if (rows > 0)
{
MessageBox.Show("保存数据成功!");
this.Close();
}
else
{
MessageBox.Show("保存数据出错!");
}
使用SqlParameter参数
string sql = "update wms_material set material_no=@material_no, mlfb=@mlfb,description=@description,repair_type=@repair_type" +
",location=@location,actual_qty=@actual_qty,qty=@qty,notification_no=@notification_no where id=@id";
SqlTransaction transaction = conn.BeginTransaction();
SqlCommand sqlcom = new SqlCommand(sql, conn);
try
{
sqlcom.Transaction = transaction;
sqlcom.Parameters.Add(new SqlParameter("@material_no", txtMaterialNo.Text));
sqlcom.Parameters.Add(new SqlParameter("@mlfb", txtMlfb.Text));
sqlcom.Parameters.Add(new SqlParameter("@description", txtDescription.Text));
sqlcom.Parameters.Add(new SqlParameter("@repair_type", cboRepairType.Text));
sqlcom.Parameters.Add(new SqlParameter("@location", txtLocation.Text));
sqlcom.Parameters.Add(new SqlParameter("@actual_qty", nudActualQty.Text));
sqlcom.Parameters.Add(new SqlParameter("@qty", nudQty.Text));
sqlcom.Parameters.Add(new SqlParameter("@notification_no", txtNotificationNo.Text));
sqlcom.Parameters.Add(new SqlParameter("@id", id));
sqlcom.ExecuteNonQuery();
transaction.Commit();
MessageBox.Show("保存数据成功!");
this.Close();
}
catch
{
transaction.Rollback();
MessageBox.Show("保存数据出错!");
}
删除
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "sp_delete_material";
command.Parameters.Add(new SqlParameter("@id", id));
command.ExecuteNonQuery();
ExecuteScalar ()从数据库检索单个值。这个方法主要用于统计操作。ExecuteScalar ()这个方法是针对SQL语句执行的结果是一行一列的结果集,这个方法只返回查询结果集的第一行第一列。 executeScalar主要用于查询单行单列的值,如聚合函数(count,max,min,agv,sum)。
string sql = "select count(*) from wms_material where material_no='" + txtMaterialNo.Text + "'";
SqlCommand cmd = new SqlCommand(sql, conn);
var ret = int.Parse(cmd.ExecuteScalar().ToString());
ExecuteReader用于实现只进只读的高效数据查询。 ExecuteReader:返回一个SqlDataReader对象,可以通过这个对象来检查查询结果,它提供了只进只读的执行方式,即从结果中读取一行之后,移动到另一行,则前一行就无法再用。有一点要注意的是执行之后,要等到手动去调用Read()方法之后,DataReader对象才会移动到结果集的第一行,同时此方法也返回一个Bool值,表明下一行是否可用,返回True则可用,返回False则到达结果集末尾。
string sql = "select * from wms_material where mlfb like '%" + txtSearch.Text + "%'";
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(sql, connection);
SqlDataReader sr = cmd.ExecuteReader();
while (sr.Read())
{
ListViewItem item = new ListViewItem(sr["material_no"].ToString());
item.SubItems.Add(sr["mlfb"].ToString());
item.SubItems.Add(sr["repair_type"].ToString());
item.SubItems.Add(sr["location"].ToString());
item.SubItems.Add(sr["qty"].ToString());
item.SubItems.Add(sr["actual_qty"].ToString());
item.SubItems.Add(sr["description"].ToString());
lsvMain.Items.Add(item);
}
sr.Close();
相关推荐
- 好用的云函数!后端低代码接口开发,零基础编写API接口
-
前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...
- 快速上手:Windows 平台上 cURL 命令的使用方法
-
在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...
- 使用 Golang net/http 包:基础入门与实战
-
简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
-
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...
- window使用curl命令的注意事项 curl命令用法
-
cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...
- Linux 系统curl命令使用详解 linuxctrl
-
curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...
- Tornado 入门:初学者指南 tornados
-
Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...
- PHP Curl的简单使用 php curl formdata
-
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
-
本章涵盖使用Actix提供静态网页...
- 我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些
-
这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...
- linux文件下载、服务器交互(curl)
-
基础环境curl命令描述...
- curl简单使用 curl sh
-
1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...
- 常用linux命令:curl 常用linux命令大全
-
//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...
- 三十七,Web渗透提高班之hack the box在线靶场注册及入门知识
-
一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)