ADO.NET开发技巧(3)-执行命令初步

非常好,新兵,我们已经成功连接到了数据库,接下来,我们就可以让数据库执行我们的命令了,也就是,可以开始大干一场了。哦,当然,你还得知道如何让数据库执行命令。如果没掌握好技巧而弄巧成拙的话,异常大军会马上赶过来并杀死你的。

一旦SqlConnection类使用了open方法,那么,就代表我们已经连接到了数据库,哦,等等,这是….异常大军!笨蛋,你连接字符串拼错了!怎么办?别慌,下士,microsoft送给我们的工具箱还没用呢,让我打开看看,哦,这是try-catch-finally。另一个是using,对付他们简直绰绰有余。

cry-catch-finally是一种可以捕获异常并处理的语法。话不多说,先看看微软使用说明书上是如何使用它的:

              try {
                    conn.Open();
                    //做一些事情
                }
                catch(Exception) {

                    throw;
                }
                finally {
                    conn.Close();
                    conn.Dispose();
                }

我们首先在try块内打开连接,这样的话,如果有异常抛出,那么我们就可以捕获它到catch块中,并且可以判断这是一个什么异常,并写上处理代码。最后finally语句块内的东西是不管上面执行的结果怎么样,它都会最后执行的,在这里,我们选择让它关闭数据库和释放资源。

你很可能会奇怪,我们为什么要手动释放资源,我们不是有微软提供的GC神器么。很遗憾地告诉你,GC神器无法自动回收这个SqlConnection对象,不过微软提供了另一套机制来实现自动释放,那就是IDispose接口。只要是实现了这个接口的对象,就可以通过using关键字来自动释放:

using(SqlConnection co = new SqlConnection()) {
                    //执行一些命令
                    co.Open();

                }

是的,在using语句内初始化实现了IDispose接口的类都可以自动释放的。

好了,之后便让我们开始执行命令吧!

我们的第一步就是创建命令:

using(SqlConnection co = new SqlConnection()) {
                    //执行一些命令
                    co.Open();

                    using(SqlCommand cmd = co.CreateCommand()) {
                        cmd.CommandText = "insert into Task(tID,tTitle) values(546,‘开会‘)";
                        cmd.CommandType = CommandType.Text;

                    }

                }

其中Type类型是指我们要执行的命令是sql命令(Text)还是存储过程。它默认是Text,所以其实我们没有必要指定它。

好了,接下来是执行命令的函数,我们有四个执行命令的函数

cmd.ExecuteNonQuery();
cmd.ExecuteScalar();
cmd.ExecuteXmlReader();
cmd.ExecuteReader();
第一个是执行非查询命令的函数,它返回一个int类型,代表几行受影响,如(insert,update,delete)
第二个是执行单个查询的函数,它返回查询结果中的第一行第一列,如:
cmd.CommandText = "select tName from Task where tID = 1";
                        string tName = cmd.ExecuteScalar() as string;

第三个返回一个SqlXmlReader,我们可以使用处理Dom的方式处理这些数据,但是这涉及到更多的知识了,所以一般不实用这个。

第四个返回一个SqlDataReader对象,它适合任意查询命令。主要是依靠read函数来读取数据。每次调用一次read,他就会指到数据的下一行。

具体使用方法如下:

using(var reader = cmd.ExecuteReader()) {
                            while(reader.Read()) {
                                var tN = (string)reader["tName"];
                                var tID = (int)reader["tID"];
                            }
                        }

顺便一提,上面这些东西都有异步版本,也就是我们只要加上await/async关键字就可以异步执行命令了,简直不能太给力啊!

时间: 2024-10-26 17:55:17

ADO.NET开发技巧(3)-执行命令初步的相关文章

ADO.NET开发技巧(4)-执行命令进阶

连接池 连接池是微软提供的一种底层优化,如果我们每次执行命令都要创建连接,关闭连接的话,会造成比较大的性能开销.于是微软提供了连接池这一概念,也就是说,我们没使用一次连接,ado.net都会把连接的信息放到连接池中,如果下次还使用这个连接,那么微软则从连接池中把连接信息取出来,避免了创建和释放资源.从而提高了性能. 如果我们想打开连接池,只需要在连接字符串中加入 pooling=true即可 语句参数化 我们肯定会要求用户提交参数,并执行查询,而如果用户输入了sql命令,我们又恰巧使用字符串拼接

ADO.NET开发技巧(5)-第二种方法

第二种用ado.net操作数据的方式是采用DataSet和DataAdapter.它是用Adapter类读取数据在把数据存储在DataSet中.具体代码如下: private void BindData() { string comnStr = @"data source=BLACKERXHUNTER\SQLEXPRESS;initial catalog=StudyUse; integrated security = True;"; using (SqlConnection conn

iOS开发——开发技巧&Git常用命令

Git常用命令 初始化git init        加—bare实现远程仓库 配置git config user.name iCocos 配置全局git config —global user.name iCocosgit config —global user.email [email protected] 状态git status 添加到帮派git add iCocos.m 提交git commit iCocos.m -m “注释” Log纪录git loggit log + 文件名git

iOS开发——开发技巧&Mac常用命令

现实和隐藏文件拓展名 显示:defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder 隐藏:defaults write com.apple.finder AppleShowAllFiles No && killall Finder

Python开发的3种命令执行方法

在python开发中,我们常常需要执行命令,修改相关信息.那对于初学者来说,python中如何执行命令呢?今天,小编就为大家分享3种python命令执行的方法. 1. 使用os.system("cmd") 在python中,使用os.system("cmd")的最大特点是,其执行时程序会打出cmd在linux上执行的信息. import os os.system("ls") 2. 使用Popen模块产生新的process Popen是现在pyth

Python开发【项目】:RPC异步执行命令(RabbitMQ双向通信)

RPC异步执行命令 需求: 利用RibbitMQ进行数据交互 可以对多台服务器进行操作 执行命令后不等待命令的执行结果,而是直接让输入下一条命令,结果出来后自动打印 实现异步操作 本节涉及最多的还是rabbitmq通信原理知识,要求安装rabbitmq服务 程序用广播topic模式做更好 程序目录结构: 程序简介: # 异步rpc程序 ## 1.需求 - [ ] 利用RibbitMQ进行数据交互 - [ ] 可以对多台服务器进行操作 - [ ] 执行命令后不等待命令的执行结果,而是直接让输入下一

经典收藏 50个jQuery Mobile开发技巧集萃

1.Backbone移动实例 这是在Safari中运行的一款Backbone移动应用程序.想开始体验移动开发,一个好的出发点就是关注这个应用程序的构建方式.先不妨在你的浏览器中查看该应用程序. 相关链接:http://bennolan.com/2010/11/24/backbone-jquery-demo.html 2.使用媒体查询来锁定设备 你可能会问如何使用CSS来锁定设备(根据屏幕尺寸).比如说,你想要为iPad设计两列布局.为智能手机设计单列布局.要做到这一点,最佳办法就是使用媒体查询.

Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动

Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动 使用cookie类型的纹理模拟云层的移动 现实生活中,当阳光直射大地,而天空中又有很多云时,云层的影子总是会投射在大地上,风吹着云层移动,影子也跟着运动,如图3-28所示. 图3-28  天空中的云朵与大地上的影子 要在游戏中,模拟与之类似的大气现象时,就需要使用cookie类型的纹理. 制作云层效果的纹理 本小节将使用PhotoShop绘制有云层效果的纹理图,然后为其添加透明度信息.具体操作过程如下: (1)使用Photo

新年之际,盘点一些APP开发技巧

(原文:Reader Submissions - New Year's 2015 作者:Mattt Thompson 译者:培子 校对:蓝魂) 回顾过去一年发生在我们身边的事情时,有一点不得不提:对苹果开发者来讲,2014年是令人难以置信的一年.在这短短的一年中(有关APP的开发)发生了如此多的变化:在充满吸引力的Swift面前,我们几乎忘了之前是如何痴迷于Objective-C:以及充满想象力的iOS 8和WatchKit,难以想象还有什么API能与之相比. NSHipster的惯例:请可爱的