学习记录:一个通用存储过程,用来取出一个表中符合条件的字段或行或多行

在做数据库相关编程时,经常要从一个表中取出符合某一个条件的字段或行
例如:想要从某个表中提取ID=某个特定ID的某个字段或行,为了防止重复编写存储过程,写了一个小工具来完成这项工作。

CREATE PROCEDURE 
prCommSelectSomeByTableNameAndFieldNameAndConditionAndData
@TableName varchar(100),
@FieldName varchar(100),
@Condition varchar(100),
@data varchar(100),
@orderby varchar(100)=null

AS
declare @strSql nvarchar(4000)
set @strSql='select ' + @FieldName  +  ' from ' +  @tablename + '  where '  +  @Condition + ' =  ' + char(39) + @Data + char(39)
if len(@orderby)<>0
    set @strSql=@strSql + ' order by ' + @orderby
exec sp_executesql @strSql
GO

VB.NET中使用此存储过程的函数如下:

	Public Function 
    CommSelectSomeByTableNameAndFieldNameAndConditionAndData(ByVal strTableName As String, ByVal strFieldName As String, ByVal strCondition As String, ByVal strConditionData As String, ByVal strOrderby As String) As SqlDataReader

	Dim cn As New SqlConnection("Server=" & g_DatabaseServerIp & ";Initial Catalog=" & g_DatabaseName & ";UID=" & g_DatabaseUser & ";Pwd=" & g_DatabaseUserPassword)
	cn.Open()

	Dim Cmd As New SqlCommand()
	Cmd.Connection = cn
	Cmd.CommandText = "prCommSelectSomeByTableNameAndFieldNameAndConditionAndData " & Chr(39) & strTableName & Chr(39) & "," & Chr(39) & strFieldName & Chr(39) & "," & Chr(39) & strCondition & Chr(39) & "," & Chr(39) & strConditionData & Chr(39) & "," & Chr(39) & strOrderby & Chr(39)

	CommSelectSomeByTableNameAndFieldNameAndConditionAndData = Cmd.ExecuteReader()

End Function

VB.NET中调用此函数的例子如下:
一 从tbbuybuys表中挑选ID等于送入的ID的一行或多行,不需要排序,填充到ListView控件中

    Dim tmpItem As New ListViewItem
	Dim dr As SqlDataReader
	dr = CommSelectSomeByTableNameAndFieldNameAndConditionAndData("tbbuybuys", "*", "id", FrmBuyInGuarderAddModify.strID, "")
	FrmBuyInGuarderAddModify.Dispose()

	If dr.HasRows() = True Then
		Do While dr.Read() = True
			tmpItem = LVData.Items.Add(dr.Item("id").ToString(), BuyIcoStatu(dr))
			Call FillItem(tmpItem, dr)
			tmpItem.EnsureVisible()
			tmpItem.Selected = True
		Loop
	End If
	dr.Close()

二 从tbbuybuys表中挑选intime字段,条件为id等于传入的id,不需要排序。

    Dim strInTime As String
	Dim dr As SqlDataReader
	dr = CommSelectSomeByTableNameAndFieldNameAndConditionAndData("tbbuybuys", "intime", "id", strID, "")
	If dr.HasRows Then
		dr.Read()
		strInTime = dr.Item("intime").ToString
	Else
		strInTime = ""
	End If
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iamtsfw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值