SQL Server中的查询
来源:互联网 发布:淘宝先行赔付 编辑:程序博客网 时间:2024/05/17 05:03
一、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();
- }
- }
- }
四、执行批量查询操作
一般我们在用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语句时,一般使用拼接字符串,单引号、双引号什么都有,编写起来很不方便,而且容易被SQL注入破坏敏感数据,既不安全,由此我们引入了参数化查询,顾名思义,就是将要查询的内容用参数代替。看下面的例子:
- <span style="font-family:Times New Roman;">staticvoid 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中的查询
- SQL Server中的查询
- SQL Server 中的联接查询
- SQL Server中的递归查询
- SQL SERVER中的纵横查询
- SQL Server中的分页查询
- SQL Server中的SQL查询优化技巧
- SQL server 中的作业信息查询
- sql server中的一些基本查询语句
- SQL Server 中的查询通知 (ADO.NET)
- SQL Server 2008中的CTE递归查询
- SQL Server 查询处理中的执行顺序
- 查询SQL Server中的表名
- SQL Server 中的 CTE 递归查询
- SQL Server中的CTE递归查询
- SQL Server 2008中的CTE递归查询
- SQL Server 2008中的CTE递归查询
- 正确认识SQL Server中的模糊查询LIKE
- Spoj 1716 Can you answer these queries III 线段树 单点修改 区间求最大子段和
- SQL Server中的触发器
- 今年暑假不AC
- 磁盘性能指标--IOPS 理论
- MyEclipse基本设置
- SQL Server中的查询
- uboot1.1.6移植体验
- SQL Server存储过程
- 遇到异常:这可能是由某个扩展导致的
- UVA - 10887 Concatenation of Languages(hash)
- MVC3之页面传值
- poj 3687 Labeling Balls
- 用反射+配置文件实现数据库的访问
- 【LeetCode】Word Break 解题报告