SqlCommand中的常用的方法解析
来源:互联网 发布:做汉化的软件 编辑:程序博客网 时间:2024/06/05 00:46
这个类中定义了很多的方法和属性来帮助我们完成不同的sql语句;总结三种在机房收费系统中用到的方法
第一种方法:ExecuteScalar
作用:
执行查询
返回值:
返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。System.Object 结果集中第一行的第一列;如果结果集为空,则为空引用(在 Visual Basic 中为Nothing)
适用情况:
使用 ExecuteScalar 方法从数据库中检索单个值(例如一个聚合值)。与使用 ExecuteReader 方法,然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少。
示例代码:
在VB.NET中从数据库中取出单个值----使用从recharge求和的语句和
- Imports System.Data ' 创建表类型的变量需要引用的空间
- Imports System.Data.SqlClient '创建sql数据库连接需要引用的空间
- Imports Entity
- Imports DateBaseHelper
- Public 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 DBHelper
- Dim recharge As String
- con.Open()
- '需要处理如果表中没有记录那么返回的是false
- '如果返回false 充值为0
- If con.ExecutesqlScalar(strRecharge) = False Then
- recharge = " 0"
- Else
- recharge = con.ExecutesqlScalar(strRecharge)
- End If
- con.Close()
- '返回结果
- Return recharge
- End Function
- End Class
DBHelper类,将对数据库的常用操作定义成了方法
- Imports System.Data
- Imports System.Data.SqlClient
- Imports System.Data.OleDb
- Imports System.Text
- Imports System.Configuration
- Imports Entity
- Public Class DBHelper
- Private 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 = myConnectionString
- Try
- myConnection.Open()
- Return True
- Catch ex As Exception
- Return False
- End Try
- End 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 String
- Cmd.Connection = myConnection
- Cmd.CommandText = strSQL
- 'Dim flag As Object
- Try
- '返回查询到的第一行第一列的值,其他行和列忽略
- Return Cmd.ExecuteScalar
- Catch e As Exception
- Return False
- End Try
- End 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 DateBaseHelper
- Public 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.AlterPwd
- Dim 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 DBHelper
- con.Open()
- flag = con.ExecuteProcBool(strProc, sqlParameter)
- con.Close()
- Return flag
- End Function
- End Class
DBHelper中相对应的方法:
- Imports System.Data
- Imports System.Data.SqlClient
- Imports System.Data.OleDb
- Imports System.Text
- Imports System.Configuration
- Imports Entity
- Public Class DBHelper
- Private 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
- '连接数据库将存储名称和参数传递给cmd
- Cmd.Connection = myConnection
- '指明为存储过程
- Cmd.CommandType = CommandType.StoredProcedure
- Cmd.CommandText = strProc
- Cmd.Parameters.AddRange(SqlParameter)
- Try
- '执行存储过程中的语句返回boolean
- Cmd.ExecuteNonQuery()
- Return True
- Catch e As Exception
- Return False
- End Try
- End 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.CheckStudentID
- Dim flag As Boolean
- '判断输入的stuID是否已经存在
- Dim strSQL As String = "select * from T_StudentInfo where StuID='" + enStudent.T_StuID + "' "
- Dim con As New DBHelper
- con.Open()
- flag = con.ExecutesqlBool(strSQL)
- con.Close()
- Return flag
- End Function
- End Class
DBHelper相对应的方法:
- Imports System.Data
- Imports System.Data.SqlClient
- Imports System.Data.OleDb
- Imports System.Text
- Imports System.Configuration
- Imports Entity
- Public Class DBHelper
- Private 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 Boolean
- Cmd.Connection = myConnection
- Cmd.CommandText = strSQL
- Dim flag As Boolean
- Try
- '返回是否查询到结果
- Reader = Cmd.ExecuteReader()
- flag = Reader.Read()
- Reader.Close()
- Return flag
- Catch e As Exception
- Return False
- End Try
- End Function
- End Class
- SqlCommand中的常用的方法解析
- Lesson 03: The SqlCommand Object(SqlCommand 对象中的方法)
- ADO--SqlCommand的一些方法
- SqlCommand对象-ExecuteNonQuery()方法的使用
- SqlCommand对象-ExecuteScalar()方法的使用
- 利用SqlCommand传参数的方法:
- 一个简化带参SqlCommand的方法
- 一个疑问 sqlcommand对象的ExecuteReader方法
- sqlCommand几种方法的总结
- SqlCommand常用分析
- SqlCommand.ExecuteScalar 方法
- SqlCommand.Parameters.add()方法
- SqlCommand.Parameters.Add()方法
- SqlCommand.Parameters.add()方法
- SqlCommand.ExecuteNonQuery 方法
- SqlCommand.Parameters.add()方法
- SqlCommand.Parameters.add()方法
- SqlCommand.Parameters.add()方法
- 【LeetCode35】【Search Insert Position】二分法查找
- 使用 EPUB 制作数字图书
- LINUX命令集合
- python-opencv学习笔记
- 为何计算机人应该懂一点编译知识?
- SqlCommand中的常用的方法解析
- sed简单使用介绍
- 《Thinking in Java》——访问权限控制的两个原因
- extjs 定时器
- 【BZOJ 1180】OTOCI【LCT】&【树链剖分+并查集】
- 【数论】闭区间上连续函数的性质
- Struts:关于struts2中namespace和s:form action和form action 路径问题
- 第一个博客(学习LINUX爱好者)
- 适配器模式