1、查询数据集
'获取查询数据集 Public Overloads Function QueryCommand(ByRef cmd As sqlCommand,Optional ByRef errMsg As String = "") As DataTable errMsg = "" Try If cmd.Connection Is Nothing Then GetsqlConnection() cmd.Connection = Me.cn Me.opensqlConnection(Me.cn) End If Dim ds As New DataSet Dim ap As sqlDataAdapter = New sqlDataAdapter(cmd) ap.Fill(ds,"table01") cmd.Dispose() ap.Dispose() ds.Dispose() Return ds.Tables(0) Catch ex As Exception errMsg = "执行QueryCommand失败" & Chr(13) & ex.Message WriteLog("执行QueryCommand失败" & Chr(13) & "sql:" & cmd.CommandText & Chr(13) & ex.Message & Chr(13) & ex.StackTrace) Return Nothing End Try End Function
2、执行SQL查询
Public Function Querysql(sqlstr As String,ByRef errmsg As String) As DataTable errmsg = "" Dim cmd As New sqlCommand Dim errcode As String = TenpayUtil.getTimestamp Try Me.GetsqlConnection() Me.opensqlConnection(Me.cn) cmd.Connection = Me.cn cmd.CommandText = sqlstr errmsg = "" Return QueryCommand(cmd) Catch ex As Exception errmsg = "执行查询出错,错误码:" & errcode WriteLog(errmsg & ",详情:" & Chr(13) & ex.Message & Chr(13) & ex.StackTrace) Return Nothing Finally Me.closesqlConnection(Me.cn) If cmd IsNot Nothing Then cmd.Dispose() End If End Try End Function
3、执行存储过程,无返回数据集
Public Function Execsql(sqlstr As String,ByRef errmsg As String,Optional ByRef sqltran As sqlTransaction = Nothing) As Integer errmsg = "" Dim cmd As New sqlCommand Dim errcode As String = TenpayUtil.getTimestamp Try If sqltran IsNot Nothing Then If sqltran.Connection IsNot Nothing Then cmd.Connection = sqltran.Connection cmd.Transaction = sqltran Else Me.GetsqlConnection() Me.opensqlConnection(Me.cn) cmd.Connection = Me.cn End If Else Me.GetsqlConnection() Me.opensqlConnection(Me.cn) cmd.Connection = Me.cn End If cmd.CommandText = sqlstr errmsg = "" Return cmd.ExecuteNonQuery Catch ex As Exception errmsg = "执行sql出错,错误码:" & errcode WriteLog(errmsg & "sql:" & sqlstr & Chr(13) & ",详情:" & Chr(13) & ex.Message & Chr(13) & ex.StackTrace) Return 0 Finally If sqltran Is Nothing Then Me.closesqlConnection(Me.cn) End If If cmd IsNot Nothing Then cmd.Dispose() End If End Try End Function
4、执行存储过程,有数据集返回、有参数返回
Sub execProc(procName As String,inputs As Dictionary(Of String,Object),ByRef outputs As Dictionary(Of String,sqlParameter),ByRef errMsg As String,ByRef resTable As DataTable,Optional ByRef sqlTran As sqlTransaction = Nothing) '事务优先 Dim errcode As String = TenpayUtil.getTimestamp Dim cmd As sqlCommand Dim sqlpara As sqlParameter If inputs Is Nothing Then errMsg = "inputs不能为Nothing" Exit Sub End If If outputs Is Nothing Then errMsg = "outputs不能为Nothing" Exit Sub End If Try cmd = New sqlCommand(procName) If sqlTran IsNot Nothing Then If sqlTran.Connection IsNot Nothing Then cmd.Connection = sqlTran.Connection cmd.Transaction = sqlTran Else Me.cn = GetsqlConnection() Me.opensqlConnection(Me.cn) cmd.Connection = Me.cn End If Else Me.cn = GetsqlConnection() Me.opensqlConnection(Me.cn) cmd.Connection = Me.cn End If cmd.CommandType = CommandType.StoredProcedure '输入参数 For Each key As String In inputs.Keys sqlpara = getsqlParaByObj(key,inputs(key)) cmd.Parameters.Add(sqlpara) Next '输出参数 If outputs IsNot Nothing Then For Each key As String In outputs.Keys If outputs(key) IsNot Nothing Then outputs(key).Direction = ParameterDirection.Output cmd.Parameters.Add(outputs(key)) End If Next End If cmd.ExecuteNonQuery() Dim ds As New DataSet Dim ap As sqlDataAdapter = New sqlDataAdapter(cmd) ap.Fill(ds,"table01") cmd.Dispose() ap.Dispose() ds.Dispose() resTable = ds.Tables(0) Catch ex As sqlException If ex.Number <> 266 Then errMsg = "执行" & procName & "出错,错误码:" & errcode WriteLog(errMsg & ",详情:" & Chr(13) & ex.Message & Chr(13) & ex.StackTrace) End If Finally If sqlTran Is Nothing Then Me.closesqlConnection(Me.cn) End If End Try End Sub原文链接:https://www.f2er.com/vb/256807.html