本博文简介一下SQL Server中经常使用的几类查询及相关使用的方法。

      一、ExecuteScalar方法获取单一值

      ExecuteScalar方法是SqlCommand类的方法之中的一个,运行查询,并返回查询所返回的结果集中的第一行第一列。

      

    class Program
{
static void Main(string[] args)
{ string strCon = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
using (SqlConnection con = new SqlConnection(strCon))//使用连接池,使用完后自己主动关闭连接
{
using (SqlCommand cmd = con.CreateCommand())
{
string sql = "select count(*) from User_Info";//定义sql语句,查询整个表的行数
cmd.CommandText = sql;
con.Open();
int count = Int32.Parse(cmd.ExecuteScalar().ToString()); //返回整个结果集的首行首列,是一个Object类型
Console.WriteLine(count); cmd.CommandText = "select * from User_Info";//定义sql语句
string s = cmd.ExecuteScalar().ToString(); //返回整个User_Info表的第一行并赋给字符串s
Console.WriteLine(s);//将结果打印输出
Console.ReadLine();
}
}
}

运行结果例如以下图:

      

      二、ExecuteNonQuery方法运行增删改操作

      ExecuteNonQuery方法也是SqlCommand的方法之中的一个,对连接运行T-SQL语句并返回受影响的行数。举例:

      

static void Main(string[] args)
{ string strCon = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
using (SqlConnection con = new SqlConnection(strCon))//使用连接池,使用完后自己主动关闭连接
{
using (SqlCommand cmd = con.CreateCommand())
{ ///数据操作语言,增删改查
string ins = "insert into User_Info (userID) values ('123')"; con.Open();//连接数据库
cmd.CommandText = ins;
int res = cmd.ExecuteNonQuery(); //运行SQL语句返回受影响的行数
if (res > 0)
{
Console.WriteLine("成功插入" + res + "条记录");
}
else
{
Console.WriteLine("插入失败");
}
Console.ReadLine();
}
}
}

运行结果例如以下图:

      

      三、BeginExecuteReader()和EndExecuteReader()异步查询大结果集

      所谓异步查询大结果集,就是假设数据量很大,那么在開始运行查询和结束查询这一过程中可能会须要耗费一段时间,在这段时间我们也能够让我们的程序去干一些别的事,就有了上述两种方法。举例:

      

        static void Main(string[] args)
{ string strCon = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
using (SqlConnection con = new SqlConnection(strCon))//使用连接池,使用完后自己主动关闭连接
{
using (SqlCommand cmd = con.CreateCommand())
{ //异步查询大结果集
cmd.CommandText = "waitfor delay '00:00:05' ;select * from User_Info"; //延迟5秒连接数据库
con.Open();
IAsyncResult iar=cmd.BeginExecuteReader();
//BeignExecuteReader方法推断异步查询是否完毕 //此处能够写入其它数据库操作 SqlDataReader sdr= cmd.EndExecuteReader(iar);
//EndExecuteReader方法结束连接,并把数据存储到数据集中
while (sdr.Read())
{
Console.WriteLine(sdr[0]+" "+sdr[1]);
}
Console.ReadLine();
}
}
}

因为延迟了5秒中,所以输出结果在5秒以后才出现例如以下:

      

      四、运行批量查询操作

      一般我们在用SQL语句查询时仅仅是查询到一条记录,那么怎样在一个表中同一时候插入或者更新多条记录呢,这就用到了多天T-SQL语句。举例:

      

    class Program
{
static void Main(string[] args)
{ string strCon = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
using (SqlConnection con = new SqlConnection(strCon))//使用连接池,使用完后自己主动关闭连接
{
using (SqlCommand cmd = con.CreateCommand())
{ //运行批量操作查询,同一时候运行多条SQL语句 string sql = "update User_Info set UserName ='888' where userID ='2'"
+ "update User_Info set UserName ='999' where userID ='3'";
//将两条T-SQL语句连接 con.Open();//打开数据库
cmd.CommandText = sql;
int res = cmd.ExecuteNonQuery(); //运行SQL语句返回受影响的行数
if (res > 0)
{
Console.WriteLine("成功插入" + res + "条记录");
}
else
{
Console.WriteLine("插入失败");
}
Console.ReadLine();
}
}
}

运行结果例如以下:

      

      五、參数化查询

      我们在刚開始学习在应用程序中编写SQL语句时,一般使用拼接字符串,单引號、双引號什么都有,编写起来非常不方便,并且easy被SQL注入破坏敏感数据,既不安全,由此我们引入了參数化查询,顾名思义,就是将要查询的内容用參数取代。看以下的样例:

      

<span style="font-family:Times New Roman;">static void Main(string[] args)
{
string conStr = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
using (SqlConnection con = new SqlConnection(conStr))
{ using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from User_Info where userID=@userid";
//第一种方法
//SqlParameter param = new SqlParameter();
//param.ParameterName = "username";
//param.SqlDbType = SqlDbType.Char;
//param.Size = 10;
//param.Value = "admin";
//con.Open(); //另外一种方法,直接使用AddWithValue方法直接给參数赋值 cmd.Parameters.AddWithValue("@userid", '1');
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while(sdr.Read())
{
Console.WriteLine(sdr[0]+" "+sdr[1]);
}
Console.ReadLine();
}
}
} </span>

      六、MuHipleActiveResultSet方法运行多活动结果集

一般一个Connection对象仅仅支持一个活动操作,假设我们须要加入另外一个或其它的或,在SQL连接语句后加上MuHipleActiveResultSet=True就可以。这里就不在演示了,希望本博文能给您带来一些帮助。

      

      

SQL Server中的查询的更多相关文章

  1. SQL SERVER中XML查询:FOR XML指定PATH

    SQL SERVER中XML查询:FOR XML指定PATH 前言 在SQL SERVER中,XML查询能够指定RAW,AUTO,EXPLICIT,PATH.本文用一些实例介绍SQL SERVER中指 ...

  2. sql server中分布式查询随笔

    由于业务逻辑的多样性 经常得在sql server中查询不同数据库中数据 这就产生了分布式查询的需求 现我将开发中遇到的几种查询总结如下: 1.access版本 --建立连接服务器 exec sp_a ...

  3. SQL Server中时间段查询和数据类型转换

    不知道什么时候对数据独有情种,也许是因为所学专业的缘故,也许是在多年的工作中的亲身经历,无数据,很多事情干不了,数据精度不够,也很多事情干不了,有一次跟一个朋友开玩笑说,如果在写论文的时候,能有一份独 ...

  4. (4.21)sql server中复制查询结果集

    在查询结果窗口中复制列标题似乎是一项简单的任务,但对于业余爱好者来说,这可能是一场噩梦. 没有可见的指令/链接/按钮,其中一个可以使用列标题单击和复制所选数据.让我们看看如何在SQL Server M ...

  5. sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)

    由于业务逻辑的多样性,经常得在sql server中查询不同数据库中数据,这就产生了分布式查询的需求 现我将开发中遇到的几种查询总结如下: 1.access版本 --建立连接服务器 EXEC sp_a ...

  6. 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小

    其实本来只想找一个方法能查询一下 数据库 的大小,没想到这个方法还能查询数据库中 各个数据表 的大小,嗯,挺好玩的,记录一下. MSDN资料:https://msdn.microsoft.com/zh ...

  7. SQL Server 中数据查询注意事项

    1.查询语句不用区分大小写,而且即使每张表的表名或者列名出现大写字母,在写查询语句的时候也不用区分大小写,查询结果保持一致,所以查询语句小写即可. 2.在写查询语句的时候列名不需要带单引号,数值型的字 ...

  8. 关于SQL Server 中连接查询Join的几种常见用法

    现有A.B .C 三个表,A中的ID=B中的ID,B中的ID=C中的ID:也就是:A.ID=B.ID,B.ID=C.ID; 一. Inner Join 把两个表链接一起查 Select * from ...

  9. SQL Server中时间段查询

    /****** Script for SelectTopNRows command from SSMS ******/ select * from dbo.VehicleData20100901 wh ...

随机推荐

  1. golang使用pprof检查goroutine泄露

    有一段时间,我们的推送服务socket占用非常不正常,我们自己统计的同一时候在线就10w的用户,可是占用的socket居然达到30w,然后查看goroutine的数量,发现已经60w+. 每一个用户占 ...

  2. C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)

    本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...

  3. VK Cup 2012 Qualification Round 1---C. Cd and pwd commands

    Cd and pwd commands time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  4. IOT和HEAP表区别

    Index Organized table by itself is a B-tree index. Index key is the primary key and the rest of colu ...

  5. 30分钟快速掌握AngularJs

    [后端人员耍前端系列]AngularJs篇:30分钟快速掌握AngularJs   一.前言 对于前端系列,自然少不了AngularJs的介绍了.在前面文章中,我们介绍了如何使用KnockoutJs来 ...

  6. 2013 吉林通化邀请赛 Play Game 记忆化搜索

    dp[ba][ta][bb][tb]表示a堆牌从下面拿了ba张,从上面拿了ta张.b堆牌从下面拿了bb张,从上面拿了tb张.当前玩家能得到的最大的分数. 扩展方式有4种,ba+1,ta+1,bb+1, ...

  7. sqlHelper的增删改查

    当一件事情被反复做了多次后.会想找一种办法来取代自己去做这个反复的动作. 敲代码也一样. 在程序中.对于反复的部分.假设是全然同样,那我们就会想着将其写成一个方法(过程.函数),放在一个具有权限的需求 ...

  8. 从零開始制作H5应用(4)——V4.0,增加文字并给文字加特效

    之前,我们分三次完毕了我们第一个H5应用的三个迭代版本号: V1.0--简单页面滑动切换 V2.0--多页切换,透明过渡及交互指示 V3.0--加入loading,music及自己主动切换 这已经是一 ...

  9. 【VB/.NET】Converting VB6 to VB.NET 【Part II】【之四】

    第四部分 原文 DLLs, DAO, RDO, ADO, and AD.NET; the History of VB DBs In the early versions of VB, there we ...

  10. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...