sqlCommand:表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。 此类不能被继承。我觉得这个类就是起到一个桥梁的作用。他连接.NETt和SQL Server;将我们在客户端设置的sql语句传递给sql;再将sql的值传递给客户端
       这个类中定义了很多的方法和属性来帮助我们完成不同的sql语句;总结三种在机房收费系统中用到的方法
第一种方法:ExecuteScalar

作用:

执行查询

返回值:

返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。System.Object  结果集中第一行的第一列;如果结果集为空,则为空引用(在 Visual Basic 中为Nothing)

适用情况:

使用 ExecuteScalar 方法从数据库中检索单个值(例如一个聚合值)。与使用 ExecuteReader 方法,然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少。

示例代码:
在VB.NET中从数据库中取出单个值----使用从recharge求和的语句和

Imports System.Data           ' 创建表类型的变量需要引用的空间
Imports System.Data.SqlClient '创建sql数据库连接需要引用的空间
Imports Entity
Imports DateBaseHelperPublic Class ConsumeInfoDAL'得到T_Recharge中全部的充值金额Public Function GetBlance(ByVal strID As String, ByVal consumeCash As String) As String'设置传入sql中的T_SQL语句:获得充值的全部金额Dim strRecharge As String = "SELECT SUM(cast(RechargeCash as int )) FROM  T_RechargeInfo  where CardID ='" + strID + "' "'打开数据库 执行上面的sql语句得到结果 关闭数据库Dim con As New DBHelperDim recharge As Stringcon.Open()'需要处理如果表中没有记录那么返回的是false'如果返回false 充值为0If con.ExecutesqlScalar(strRecharge) = False Thenrecharge = " 0"Elserecharge = con.ExecutesqlScalar(strRecharge)End Ifcon.Close()'返回结果Return rechargeEnd Function
End Class

DBHelper类,将对数据库的常用操作定义成了方法

Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Text
Imports System.Configuration
Imports EntityPublic Class DBHelperPrivate myConnection As New SqlConnection '表示数据连接控件Private CmdString As String       '表示SQL语句命令Private Cmd As New SqlCommand     '表示SQL命令语句的执行Private Reader As SqlDataReader      '表示返回的DataReader对'**********************************************' <summary>' 打开数据库' </summary>' <returns>' Boolean true:连接成功  false:连接失败' </returns>'**********************************************Public Function Open() As Boolean'通过读取app来获得连接字符串Dim myConnectionString As String = ConfigurationManager.AppSettings("Connstr")  '表示数据字符串'传入连接字符串myConnection.ConnectionString = myConnectionStringTrymyConnection.Open()Return TrueCatch ex As ExceptionReturn FalseEnd TryEnd Function'**********************************************' <summary>' 关闭数据库' </summary>'**********************************************Public Sub Close()Cmd.Dispose()myConnection.Close()End Sub'**********************************************' <summary>' 执行传入的sql语句' </summary>' <param name="strSQL"> 传入到数据库中的SQL语句</param>' <returns>' Integer  返回查询到的结果集的第一行第一列' </returns>'**********************************************Public Function ExecutesqlScalar(ByVal strSQL As String) As StringCmd.Connection = myConnectionCmd.CommandText = strSQL'Dim flag As ObjectTry'返回查询到的第一行第一列的值,其他行和列忽略Return Cmd.ExecuteScalarCatch e As ExceptionReturn FalseEnd TryEnd Function
End Class

第二种:ExecuteNonQuery

作用:

对连接执行 Transact-SQL 语句并返回受影响的行数。

返回值:

类型:System.Int32 受影响的行数。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。 如果正在执行插入或更新操作的表上存在触发器,则返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。 对于其他所有类型的语句,返回值为 -1。 如果发生回滚,则返回值也是 -1。

适用情况:
        1.使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句;ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。
        2.ExecuteNonQuery也会返回后运行查询影响的记录数。但是,ExecuteNonQuery不返回任何行或列中的存储过程。如果您只需要知道更改行数,则使用插入、 更新或删除语句时最有用的ExecuteNonQuery方法。在存储过程中使用 SELECT 语句,您收到-1,因为查询不会影响任何行。

示例代码:

修改密码--执行存储过程;在存储过程中使用 Update 语句,您收到影响的行数。

存储过程代码:

create proc PROC_Modify
@UserID char(20),@UserPwd char(20)
as
update T_UserInfo set UserPwd =@UserPwd where UserID =@UserID
go

VB.NET代码 :

Imports System.Data           ' 创建表类型的变量需要引用的空间
Imports System.Data.SqlClient '创建sql数据库连接需要引用的空间
Imports Entity
Imports DateBaseHelperPublic Class UserInfoDAL'**********************************************' <summary>' 修改密码' </summary>' <param name="< enUser >"><userinfo对象,通过ui层给userid和userpwd赋值></param>' <returns>' <boolean> true:代表修改密码成功  false:代表修改密码失败' </returns>'**********************************************Public Function AlterPwd(ByVal enUser As UserInfoEntity) As Boolean Implements IUserinfo.AlterPwdDim flag As Boolean'设置存储过程参数Dim strProc As String = "PROC_Modify"Dim sqlParameter() As SqlParameter = {New SqlParameter("UserID", enUser.T_UserID),New SqlParameter("UserPwd", enUser.T_UserPWD)}'实例化con 打开数据库 调用执行存储过程函数  关闭数据库Dim con As New DBHelpercon.Open()flag = con.ExecuteProcBool(strProc, sqlParameter)con.Close()Return flagEnd Function
End Class

DBHelper中相对应的方法:

Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Text
Imports System.Configuration
Imports EntityPublic Class DBHelperPrivate myConnection As New SqlConnection '表示数据连接控件Private CmdString As String       '表示SQL语句命令Private Cmd As New SqlCommand     '表示SQL命令语句的执行Private Reader As SqlDataReader      '表示返回的DataReader对'**********************************************' <summary>' 执行有参数的存储过程' </summary>' <param name="strProc"> 存储过程名字</param>'<param name="sqlParameter">存储过程需要的参数</param>' <returns>' Boolean true:代表成功执行了存储过程  false:代表没有成功执行' </returns>'**********************************************Public Function ExecuteProcBool(ByVal strProc As String, ByVal sqlParameter As SqlParameter()) As Boolean'连接数据库将存储名称和参数传递给cmdCmd.Connection = myConnection'指明为存储过程Cmd.CommandType = CommandType.StoredProcedureCmd.CommandText = strProcCmd.Parameters.AddRange(SqlParameter)Try'执行存储过程中的语句返回booleanCmd.ExecuteNonQuery()Return TrueCatch e As ExceptionReturn FalseEnd TryEnd Function
End Class

第三种方法:ExecuteReader

作用:

将 CommandText 发送到 Connection 并生成一个 SqlDataReader。

解释1:将SQL语句发送到指定连接 生成一个SqlDataReader对象
解释2:当ExecuteReader()执行后返回一个SqlDataReader对象
  两种解释实际上都在说明些方法就是给SqlDataReader对象一个可以访问查询到的结果的渠道。

返回值:

类型:System.Data.SqlClient.SqlDataReader    SqlDataReader 对象。

SqlDataReader的Read方法可以使SqlDataReader前进到下一条记录,同样返回bool值,当下一条无记录返回false,则表示记录读取完毕;当下一条有数据时为true,将读取到的数据(当前的一条记录)暂存在SqlDataReader中。

备注:

当 CommandType 属性设置为 StoredProcedure 时,CommandText 属性应设置为存储过程的名称。 当调用 ExecuteReader 时,该命令将执行此存储过程。

示例代码:

执行一个Select语句返回的结果是Bool类型;查看表中是否已经存在记录

Imports System.Data           ' 创建表类型的变量需要引用的空间
Imports System.Data.SqlClient '创建sql数据库连接需要引用的空间
Imports Entity
Imports DateBaseHelper
Public Class CardInfoDAL  Public Function CheckStudentID(ByVal enStudent As Entity.StudentInfoEntity) As Boolean Implements ICardInfo.CheckStudentIDDim flag As Boolean'判断输入的stuID是否已经存在Dim strSQL As String = "select * from T_StudentInfo where StuID='" + enStudent.T_StuID + "' "Dim con As New DBHelpercon.Open()flag = con.ExecutesqlBool(strSQL)con.Close()Return flagEnd Function
End Class

DBHelper相对应的方法:

Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Text
Imports System.Configuration
Imports EntityPublic Class DBHelperPrivate myConnection As New SqlConnection '表示数据连接控件Private CmdString As String       '表示SQL语句命令Private Cmd As New SqlCommand     '表示SQL命令语句的执行Private Reader As SqlDataReader      '表示返回的DataReader对'**********************************************' <summary>' 执行传入的sql语句' </summary>' <param name="strSQL"> 传入到数据库中的SQL语句</param>' <returns>' Boolean true:代表成功执行了strSQL  false:代表没有成功执行' </returns>'**********************************************Public Function ExecutesqlBool(ByVal strSQL As String) As BooleanCmd.Connection = myConnectionCmd.CommandText = strSQLDim flag As BooleanTry'返回是否查询到结果Reader = Cmd.ExecuteReader()flag = Reader.Read()Reader.Close()Return flagCatch e As ExceptionReturn FalseEnd TryEnd Function
End Class

sqlCommand几种方法的总结相关推荐

  1. asp.net中显示DataGrid控件列序号的几种方法

    在aps.net中多数据绑定的控件很多,论功能来说,应该属DataGrid最为齐全,但它没有提供现成的显示记录序号的功能,不过我们可以通过它所带的一些参数来间接得到序号,下面来看看怎样得到和显示序号值 ...

  2. dropdownlist绑定的二种方法

    第一种方法:         string ConnString = ConfigurationSettings.AppSettings["ConnectionString"]; ...

  3. DropdownList绑定的两种方法

    动态绑定方法一:动态绑定数据库中的字段. SqlConnection conn = UtilitySqlClass.OperateDataBase.ReturnConn(); string strSQ ...

  4. ASP.NET-GridView数据绑定的几种方法

    前提:页面需要显示多个表中的字段,几个表之间通过字段保持联系 方法一:直接进行级联查询,并将结果集通过SqlDataAdapter填充DataSet,之后将DataTable的DataView绑定到G ...

  5. 把Sql数据转换为业务数据的几种方法

    ORM系统必须把数据库中的数据转换为业务数据,转换的方法大致有3种,本文就试图对它们做一些简单分析. 1.属性反射.就是通过反射,获取业务实体类的各个属性,然后再设置这些属性的值.这个方法最简单.最稳 ...

  6. .net mysql查询数据库连接_asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)...

    在ASP.NET中,使用C#连接SQL数据库,并使用SQL语句查询,以前从来没有接触过C#,最近用到了,摸索了两天终于运行起来了,Mark一下,不喜勿喷 有两种方法:(说的是第一种方法不安全,我也不清 ...

  7. SQLServer 批量插入数据的两种方法

    SQLServer 批量插入数据的两种方法- 发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用In ...

  8. DataTable数据批量写入数据库三种方法比较

    DataTable数据批量写入数据库三种方法比较 标签: it 分类: C# 1)   insert循环插入: 2)   sqldataadapter.update(dataset,tablename ...

  9. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

最新文章

  1. QDoc格式特定的配置变量
  2. python笔记九(迭代)
  3. sq服务启动后又停止_SQL SERVER SQL Agent  服务启动后又停止的解决办法
  4. In_interrupt( ) 和In_irq( )【转】
  5. multiset实现ALV树
  6. python 中不属于数据挖掘分析模块的是()_大工19秋《数据挖掘》在线作业3(参考答案)...
  7. 影牛社区短视频影视APP源码
  8. 【Hexo搭建个人博客】(八)添加背景效果(点击鼠标显示红心并浮现社会主义核心价值观)
  9. python判断生肖
  10. Markdown编辑器-初始模板参考
  11. Pytho学习(3)——注释
  12. 猪齿鱼平台CI流程总结--遇到的坑
  13. Ruff Chain 荣获”2018年度最具发展潜力项目“奖
  14. Qt for IOS 制作APP启动页面
  15. 后端开发框架的具体内容是什么?
  16. 51单片机解析卫星定位数据源码+DHT11,1602显示
  17. Robust (Controlled) Table-to-Text Generation with Structure-Aware Equivariance Learning
  18. Android 输入法 微信公众号搜索定制版
  19. TI Sitara AM57x 多核SoC开发板(DSP + ARM)-性能及参数资料
  20. [IOS]iphone开发之常用代码:不断更新

热门文章

  1. 学计算机电脑屏幕多大,电脑屏幕最佳状态分辨率值为多少-电脑自学网
  2. 台州学院计算机专业在全国排名,台州学院最好的专业(什么专业最好)
  3. 王道书 P217 T02 + 拓展 (判断无向连通图是否有环)
  4. 可能是最详细的Android图片压缩原理分析(一)—— Android图片压缩必备基础知识
  5. UITableView 使用详解
  6. 注意,爱思唯尔(Elsevier)影响因子正式公布(速看20分以上期刊,最高超700分)
  7. 一个程序员眼中的宋慧乔离婚、李晨范冰冰分手。。。
  8. 苹果8怎么录屏_苹果8突然黑屏开不了机怎么办?iphone8黑屏维修指南
  9. 五个可以避免的BYOD错误
  10. 笔记本html连接电视机,笔记本可以连接电视吗?笔记本电脑连接电视机方法