using System.Data.SqlClient;
...
SqlConnection conn = new SqlConnection(@"server=ws7\leosql;database=AdventureWorks;uid=sa;pwd=lixiang@");
try
{
    conn.Open();
    SqlCommand cmd = new SqlCommand("SELECT * FROM Person.Address", conn);
    SqlDataReader reader = cmd.ExecuteReader();
    while(reader.Read())
    Console.WriteLine(reader["AddressLine1"]);
}
catch(SqlException ex)
{
    Console.WriteLine(ex.Message);
}
finally
{
    conn.Close();
}

[1] ExecuteNonQuery 方法
用法:ExecuteNonQuery方法用来执行INSERT、UPDATE、DELETE和其他没有返回值得SQL命令,——比如CREATE DATABASE 和 CREATE TABLE 命令。当使用 INSERT、UPDATE、DELETE时,ExecuteNonQuery返回被命令影响的行数。对所有其他命令,返回-1。

using System.Data.SqlClient;
...
SqlConnection conn = new SqlConnection(@"server=ws7\leosql;database=AdventureWorks;uid=sa;pwd=lixiang@");
try
{
 conn.open();
 ==============================================================
 -- INSERT 命令
 SqlCommand cmd = new SqlCommand("INSERT INTO titles(title_id, title, type, pubdate) " + 
 "VALUES('JP101', 'Programming Microsoft .NET', 'bussiness', 'May 2002')", conn);
 ==============================================================
 -- UPDATE 命令
 -- SqlCommand cmd = new SqlCommand("UPDATE titles SET title_id= 'JP2002' " + 
 -- "WHERE title_id = 'JP1001'", conn);
 ==============================================================
 -- DALETE 命令
 -- SqlCommand cmd = new SqlCommand("DELETE FROM titles WHERE title_id = 'JP202'", conn);
 ==============================================================
 cmd.ExecuteNonQuery();
}
catch(SqlException ex)
{
 Console.WriteLine(ex.Message); 
}
finally
{
 conn.Close();
}

 
[2] ExecuteScalar 方法
用法1:ExecuteScalar 方法执行一个SQL命令返回结果集的第一列的第一行。它经常用来执行SQL的COUNT、AVG、MIN、MAX 和 SUM 函数,这些函数都是返回单行单列的结果集。
''注意:''ExecuteScalar 一般返回一个Object类型,因此必须把它转换为强类型。如果转换不正确,.NET框架就会引发 InvalidCastException异常。

using System.Data.SqlClient;
...
SqlConnection conn = new SqlConnection(@"server=ws7\leosql;database=AdventureWorks;uid=sa;pwd=lixiang@");
try
{
 conn.open();
 SqlCommand cmd = new SqlCommand("SELECT MAX(advance) FROM titles", conn);
 decimal amount = (decimal) cmd.ExecuteScalar();
 Console.WriteLine("ExecuteScalar returned {0:c}", amount);
}
catch(SqlException ex)
{
 Console.WriteLine(ex.Message); 
}
finally
{
 conn.Close();
}

用法2.1:ExecuteScalar 方法的另一个普遍的用法是从数据库中检索BLOB(二进制大对象)。下面的例子从Pubs数据库的Pub_Info表的Logo字段中检索图像,并把他封装到一个位图中。

MemoryStream stream = new MemoryStream();
SqlConnection conn = new SqlConnection("server=ws7\leosql;database=pubs;uid=sa;pwd=lixiang@");
try
{
 conn.open();
 SqlCommand cmd = new SqlCommand("SELECT logo FROM pub_info WHERE pub_id='0736'", conn);
 byte[] blob = (byte[]) cmd.ExecuteScalar();
 stream.Write(blob, 0, blob.Length);
 Bitmap bitmap = new Bitmap(stream);
 // TODO:使用位图
 bitmap.Dispose();
}
catch(SqlException ex)
{
 Console.WriteLine(ex.Message); 
}
finally
{
 stream.Close();
 conn.Close();
}

 
用法2.2:您也许对如何把BLOB写入数据库感兴趣,答案是在包装了INSERT命令(该命令中包含了类型为byte[]的输入参数)的命令对象上调用ExcuteNonQuery方法。下面例子在Pubs数据库的Pub_Info表中插入一条记录,记录的Logo字段包含一个BLOB。

-- 定义和初始化blob变量
FileStream stream = new FileStream("Logo.jpg", FileMode.Open);
byte[] blob = new byte[stream.Length];
stream.Read(blob, 0, (int) stream.Length);
stream.Close();

SqlConnection conn = new SqlConnection("server=ws7\leosql;database=pubs;uid=sa;pwd=lixiang@");
try
{
 conn.open();
 SqlCommand cmd = new SqlCommand("INSERT INTO pub_info(pub_id, logo) VALUES('9937', @logo)", conn);
 cmd.Parameters.Add("@logo", blob);
 cmd.ExecuteNonQuery();
}
catch(SqlException ex)
{
 Console.WriteLine(ex.Message); 
}
finally
{
 stream.Close();
 conn.Close();
}
 
[3] ExecuteReader 方法
用法:
ExecuteReader 方法存在的目的只有一个:尽可能快地对数据库进行查询并得到结果。ExecuteReader 返回一个DataReader对象:如果在SqlCommand对象中调用,则返回SqlDataReader;如果在OleDbCommand对象中调用,返回的是OleDbDataReader。可以调用DataReader的方法和属性迭代处理结果集。它是一个快速枚举数据库查询结果的机制,是只读、只进的。对SqlDataReader.Read的每次调用都会从结果集中返回一行。

using System.Data.SqlClient;
...
SqlConnection conn = new SqlConnection(@"server=ws7\leosql;database=AdventureWorks;uid=sa;pwd=lixiang@");
try
{
 conn.Open();
 SqlCommand cmd = new SqlCommand("SELECT * FROM titles", conn);
 SqlDataReader reader = cmd.ExecuteReader();
 while(reader.Read())
  Console.WriteLine(reader["title"]);
  =================================
  -- Console.WriteLine(reader.GetName(0));
  =================================
}
catch(SqlException ex)
{
 Console.WriteLine(ex.Message);
}
finally
{
 conn.Close();
}

 
DataReader还有一个GetValue方法可以用来检索字段的值。GetValue返回一个一般性的Object,但是被无数个返回强类型的Get方法补充,比如GetInt32和GetDecimal(参考MSDN2005)。对GetOrdinal的调用是必须的,因为GetDecimal只接受整型索引。GetOrdinal所做的工作正好与GetName相反——它把字段名转换成数字索引。
注意:DataReader必须处理Close方法。

using System.Data.SqlClient;
...
SqlConnection conn = new SqlConnection(@"server=ws7\leosql;database=AdventureWorks;uid=sa;pwd=lixiang@");
try
{
 conn.Open();
 SqlCommand cmd = new SqlCommand("SELECT * FROM titles WHERE advance != 0", conn);
 SqlDataReader reader = cmd.ExecuteReader();
 int index = reader.GetOrdinal("advance");
 while(reader.Read())
  Console.WriteLine("{0:c}", reader.GetDecimal(index));
  =================================
  -- Console.WriteLine(reader.GetName(0));
  =================================
 ''reader.Close();''
}
catch(SqlException ex)
{
 Console.WriteLine(ex.Message);
}
finally
{
 ========================================================
 -- 可以配置DataReader,使它真的可以关闭一个底层连接
 -- reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
 ========================================================
 conn.Close();
}

ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法-转的更多相关文章

  1. ExecuteReader(),ExecuteNonQuery(),ExecuteScalar(),ExecuteXmlReader()之间的区别

    本文来自:http://www.cnblogs.com/zhouxiaxue/archive/2006/05/12/398266.html http://www.cnblogs.com/yaoxc/a ...

  2. ExecuteScalar,ExecuteReader,ExecuteNonQuery区别

    ExecuteScalar is typically used when your query returns a single value. If it returns more, then the ...

  3. ASP.NET中的ExecuteNonQuery()方法的用法

    下面我将详细讲解在机房收费系统D层中如何对数据库的增加.删除.修改,最后再来总结一下 ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法: 一.增.删 ...

  4. ExecuteNonQuery()的用法

    ExecuteNonQuery()的用法 下面我们将详细讲解如何在Page_Load()中对数据库的增加.删除.修改,最后我们再来总结一下ExecuteNonQuery(),ExecuteScalar ...

  5. ASP.NET基础(一)

    ExecuteNonQuery()的用法 下面我们将详细讲解如何在Page_Load()中对数据库的增加.删除.修改,最后我们再来总结一下ExecuteNonQuery(),ExecuteScalar ...

  6. Asp.Net 初级 高级 学习笔记

    01.Main函数是什么?在程序中使用Main函数有什么需要注意的地方?02.CLR是什么?程序集是什么?当运行一个程序集的时候,CLR做了什么事情?03.值类型的默认值是什么?(情况一:字段或全局静 ...

  7. EntityFramework之Log(五)

    关于日志 属性日志 DbContext.Database.Log 属性被设置为一个委托,该委托能接受带有一个字符串参数的任何方法,最主要的是,通过设置它到 TextWriter 的 Write 方法将 ...

  8. 用于MySql的SqlHelper

    用于MySql的SqlHelper /// <summary> /// Title :MySqlHelper /// Author :WinterT /// Date :2015-1-8 ...

  9. ADO.NET学习(一)

    一.ADO.NET简介 ADO.NET可以看作是C#语言访问数据库的一种方式.编程语言编写的程序需要数据库的支持,那么怎样才能让他们建立连接呢?当然是ADO.NET 二.ADO.NET 整体流程 1) ...

随机推荐

  1. 关于使用unigui、webxone、mysql的几个问题

    一.webxone的问题:1.目前稳定可用的版本好像是v2510:2.设计webxone应用时,窗口的“position”属性只能设置为poDesigned,而且不能动态改变窗口尺寸,否则在浏览器中显 ...

  2. linux修改文件所属用户、用户组

    修改hive.log文件为hadoop用户,hadoop组 sudo chown 用户名:用户组 文件 sudo chown hadoop:hadoop hive.log 修改某个文件夹及其自文件 s ...

  3. 记录quick cocos2d-x3.2升级至cocos2d-x3.8

    目前为止,quickcocos2d-x没有3.8版本,想用3.8又想用quick,所以只能自己升级了,自己先记录下,防止忘记. cocos2d-x3.8里面有quick framework,而simu ...

  4. BZOJ 1656 [Usaco2006 Jan] The Grove 树木:bfs【射线法】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1656 题意: 给你一个n*m的地图,'.'表示空地,'X'表示树林,'*'表示起点. 所有 ...

  5. Struts 2简单实例

    Struts 2简单实例 参考: [java开发系列]—— struts2简单入门示例 - xingoo - 博客园https://www.cnblogs.com/xing901022/p/39616 ...

  6. spring事务隔离级别以及脏读 不可重复读 幻影读

    隔离级别 声明式事务的第二个方面是隔离级别.隔离级别定义一个事务可能受其他并发事务活动活动影响的程度.另一种考虑一个事务的隔离级别的方式,是把它想象为那个事务对于事物处理数据的自私程度. 在一个典型的 ...

  7. 使用SQL脚本创建数据库,操作主键、外键与各种约束(MS SQL Server)

    在实际开发中,可能很少人会手写sql脚本来操作数据库的种种.特别是微软的MS SQL Server数据库,它的SQL Server Management Studio对数据库的图形化操作极致简便,从而 ...

  8. hdu--2111--Saving HDU(贪心)

    #include<iostream> #include<vector> #include<algorithm> using namespace std; struc ...

  9. Convolutional Neural Networks for Visual Recognition 4

    Modeling one neuron 下面我们开始介绍神经网络,我们先从最简单的一个神经元的情况开始,一个简单的神经元包括输入,激励函数以及输出.如下图所示: 一个神经元类似一个线性分类器,如果激励 ...

  10. 启用Linux云平台oracle数据库实口令复杂性函数:PASSWORD_VERIFY_FUNCTION=NULL

    第一步:采用putty.exe登录数据库服务器. 输入IP后点击“Open”按钮: 第二步:登录对应的数据库实例. 执行:# su – oracle 查找:$ps -ef | grep pmon 找到 ...