SQL Server 2000 通用单表或视图查询存储过程及C#调用示例
2008-10-14 17:48
609 查看
create proc Common
@pagesize int, --页大小
@pageindex int,--第几页
@Tbname varchar(50),--表名
@TFields varchar(500),--要查询的字段
@order varchar(20),--显示顺序
@id varchar(20), --列标识名一般为ID号
@whereCondition varchar(500), --执行查询的条件不带 where 关键字,
@total int output,
@PageCount int output
as
begin
declare @sqlstr nvarchar(2000)
declare @MaxOrMin char(3)
declare @OpChar char(2)
if len(@order)=3
begin
set @MaxOrMin = 'max'
set @OpChar = '>='
end
if len(@order)=4
begin
set @MaxOrMin = 'min'
set @OpChar = '<='
end
set @sqlstr='select @a = count('+@id+') from '+@Tbname+' where '+@whereCondition
exec sp_executesql @sqlstr,N'@a int output',@total output
if @total % @pagesize = 0
begin
set @PageCount = @total / @pagesize
end
else
begin
set @PageCount = (@total / @pagesize)+1
end
set @sqlstr='select top '+cast(@pagesize as nvarchar)+' '+@TFields+
' from '+@Tbname+'
where '+@id+' '+@OpChar+'
(
select '+@MaxOrMin+' ('+@id+')
from
(
select top '+cast(((@pageindex-1)*@pagesize+1) as nvarchar)+' '+@id+' from '+@Tbname+' where '+@whereCondition+' order by '+@id+' '+@order+'
)as tblTmp
) and '+@whereCondition+' order by '+@id+' '+@order
exec sp_executesql @sqlstr
end
将下面的方法写到C#数据库操作类中将返回一个dataset,将上面的存储过程建在SQLserver2000数据库中,以下示例是asp.net中的调用
//分回一个数据集并利用分页 同时可以得到记录总数及页总数用于列表页显示 一个连接一个command对象,另外还有sqldataadapter,dataset
public static DataSet getCurrentDataSet(string ggSelectColumns, string ggtableName, string ggwhere, int ggcurpage, int ggpagesize, string ggxuName, string ggorder, out int ggpagecount, out int ggRecordCount)
{//可以作为一个类方法取得当前数据集
//接收传入参数列表
int pagesize = ggpagesize; //接收页大小
int curpage = ggcurpage; //当前第几页
string where = ggwhere; //查询的where条件
string xuName = ggxuName; //排序字段一般为数据表中记录编号
string orderName = ggorder; //用来排序的列名 一般为表记录编号,或时间
string SelectColumns = ggSelectColumns; //要选择的列
string tableName = ggtableName; //要查询的表名
//内部使用变量
//int pagecount; //符合条件分页数
//int dblRecordCount; //符合条件记录数
//Response.Write("<br>" + sqlstr + "<br>");
// 打开数据库取得数据到当前记录集
SqlConnection con = getConnection();
SqlDataAdapter sd = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
DataSet ds = new DataSet();
cmd.CommandText = "Common";
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
//传入参数
SqlParameter param = new SqlParameter();
param.ParameterName="@pagesize"; //页大小
param.DbType= DbType.Int32;
param.Direction = ParameterDirection.Input;
param.Value = pagesize;
cmd.Parameters.Add(param);
SqlParameter param1 = new SqlParameter();
param1.ParameterName = "@pageindex"; //第几页
param1.DbType = DbType.Int32;
param1.Direction = ParameterDirection.Input;
param1.Value = curpage;
cmd.Parameters.Add(param1);
SqlParameter param2 = new SqlParameter();
param2.ParameterName = "@Tbname"; //表名
param2.DbType = DbType.String;
param2.Direction = ParameterDirection.Input;
param2.Value = tableName;
cmd.Parameters.Add(param2);
SqlParameter param3 = new SqlParameter();
param3.ParameterName = "@TFields"; //要查询的字段
param3.DbType = DbType.String;
param3.Direction = ParameterDirection.Input;
param3.Value = SelectColumns;
cmd.Parameters.Add(param3);
SqlParameter param4 = new SqlParameter();
param4.ParameterName = "@order"; //排序方式 只取 asc desc
param4.DbType = DbType.String;
param4.Direction = ParameterDirection.Input;
param4.Value = orderName;
cmd.Parameters.Add(param4);
SqlParameter param5 = new SqlParameter();
param5.ParameterName = "@id"; //列标识名一般为ID号或时间
param5.DbType = DbType.String;
param5.Direction = ParameterDirection.Input;
param5.Value = xuName;
cmd.Parameters.Add(param5);
SqlParameter param6 = new SqlParameter();
param6.ParameterName = "@whereCondition"; //查询条件
param6.DbType = DbType.String;
param6.Direction = ParameterDirection.Input;
param6.Value = where;
cmd.Parameters.Add(param6);
SqlParameter param7 = new SqlParameter();
param7.ParameterName = "@total"; //符合条件的记录总数
param7.DbType = DbType.Int32;
param7.Direction = ParameterDirection.Output;
//param7.Value = ggRecordCount;
cmd.Parameters.Add(param7);
SqlParameter param8 = new SqlParameter();
param8.ParameterName = "@PageCount"; //页总数
param8.DbType = DbType.Int32;
param8.Direction = ParameterDirection.Output;
//param8.Value = ggpagecount;
cmd.Parameters.Add(param8);
sd.SelectCommand = cmd;
sd.Fill(ds, "zbinfo");
ggpagecount = Convert.ToInt32(cmd.Parameters["@PageCount"].Value);
ggRecordCount = Convert.ToInt32(cmd.Parameters["@total"].Value);
//释放资源
con.Close();
con.Dispose();
cmd.Dispose();
sd.Dispose();
return ds;
}
@pagesize int, --页大小
@pageindex int,--第几页
@Tbname varchar(50),--表名
@TFields varchar(500),--要查询的字段
@order varchar(20),--显示顺序
@id varchar(20), --列标识名一般为ID号
@whereCondition varchar(500), --执行查询的条件不带 where 关键字,
@total int output,
@PageCount int output
as
begin
declare @sqlstr nvarchar(2000)
declare @MaxOrMin char(3)
declare @OpChar char(2)
if len(@order)=3
begin
set @MaxOrMin = 'max'
set @OpChar = '>='
end
if len(@order)=4
begin
set @MaxOrMin = 'min'
set @OpChar = '<='
end
set @sqlstr='select @a = count('+@id+') from '+@Tbname+' where '+@whereCondition
exec sp_executesql @sqlstr,N'@a int output',@total output
if @total % @pagesize = 0
begin
set @PageCount = @total / @pagesize
end
else
begin
set @PageCount = (@total / @pagesize)+1
end
set @sqlstr='select top '+cast(@pagesize as nvarchar)+' '+@TFields+
' from '+@Tbname+'
where '+@id+' '+@OpChar+'
(
select '+@MaxOrMin+' ('+@id+')
from
(
select top '+cast(((@pageindex-1)*@pagesize+1) as nvarchar)+' '+@id+' from '+@Tbname+' where '+@whereCondition+' order by '+@id+' '+@order+'
)as tblTmp
) and '+@whereCondition+' order by '+@id+' '+@order
exec sp_executesql @sqlstr
end
将下面的方法写到C#数据库操作类中将返回一个dataset,将上面的存储过程建在SQLserver2000数据库中,以下示例是asp.net中的调用
//分回一个数据集并利用分页 同时可以得到记录总数及页总数用于列表页显示 一个连接一个command对象,另外还有sqldataadapter,dataset
public static DataSet getCurrentDataSet(string ggSelectColumns, string ggtableName, string ggwhere, int ggcurpage, int ggpagesize, string ggxuName, string ggorder, out int ggpagecount, out int ggRecordCount)
{//可以作为一个类方法取得当前数据集
//接收传入参数列表
int pagesize = ggpagesize; //接收页大小
int curpage = ggcurpage; //当前第几页
string where = ggwhere; //查询的where条件
string xuName = ggxuName; //排序字段一般为数据表中记录编号
string orderName = ggorder; //用来排序的列名 一般为表记录编号,或时间
string SelectColumns = ggSelectColumns; //要选择的列
string tableName = ggtableName; //要查询的表名
//内部使用变量
//int pagecount; //符合条件分页数
//int dblRecordCount; //符合条件记录数
//Response.Write("<br>" + sqlstr + "<br>");
// 打开数据库取得数据到当前记录集
SqlConnection con = getConnection();
SqlDataAdapter sd = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
DataSet ds = new DataSet();
cmd.CommandText = "Common";
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
//传入参数
SqlParameter param = new SqlParameter();
param.ParameterName="@pagesize"; //页大小
param.DbType= DbType.Int32;
param.Direction = ParameterDirection.Input;
param.Value = pagesize;
cmd.Parameters.Add(param);
SqlParameter param1 = new SqlParameter();
param1.ParameterName = "@pageindex"; //第几页
param1.DbType = DbType.Int32;
param1.Direction = ParameterDirection.Input;
param1.Value = curpage;
cmd.Parameters.Add(param1);
SqlParameter param2 = new SqlParameter();
param2.ParameterName = "@Tbname"; //表名
param2.DbType = DbType.String;
param2.Direction = ParameterDirection.Input;
param2.Value = tableName;
cmd.Parameters.Add(param2);
SqlParameter param3 = new SqlParameter();
param3.ParameterName = "@TFields"; //要查询的字段
param3.DbType = DbType.String;
param3.Direction = ParameterDirection.Input;
param3.Value = SelectColumns;
cmd.Parameters.Add(param3);
SqlParameter param4 = new SqlParameter();
param4.ParameterName = "@order"; //排序方式 只取 asc desc
param4.DbType = DbType.String;
param4.Direction = ParameterDirection.Input;
param4.Value = orderName;
cmd.Parameters.Add(param4);
SqlParameter param5 = new SqlParameter();
param5.ParameterName = "@id"; //列标识名一般为ID号或时间
param5.DbType = DbType.String;
param5.Direction = ParameterDirection.Input;
param5.Value = xuName;
cmd.Parameters.Add(param5);
SqlParameter param6 = new SqlParameter();
param6.ParameterName = "@whereCondition"; //查询条件
param6.DbType = DbType.String;
param6.Direction = ParameterDirection.Input;
param6.Value = where;
cmd.Parameters.Add(param6);
SqlParameter param7 = new SqlParameter();
param7.ParameterName = "@total"; //符合条件的记录总数
param7.DbType = DbType.Int32;
param7.Direction = ParameterDirection.Output;
//param7.Value = ggRecordCount;
cmd.Parameters.Add(param7);
SqlParameter param8 = new SqlParameter();
param8.ParameterName = "@PageCount"; //页总数
param8.DbType = DbType.Int32;
param8.Direction = ParameterDirection.Output;
//param8.Value = ggpagecount;
cmd.Parameters.Add(param8);
sd.SelectCommand = cmd;
sd.Fill(ds, "zbinfo");
ggpagecount = Convert.ToInt32(cmd.Parameters["@PageCount"].Value);
ggRecordCount = Convert.ToInt32(cmd.Parameters["@total"].Value);
//释放资源
con.Close();
con.Dispose();
cmd.Dispose();
sd.Dispose();
return ds;
}
相关文章推荐
- SQL Server 2000通用分页查询存储过程(可指定返回字段,查询条件)
- 可在任何一个表(或视图)中按任何一个字段值进行查询的通用存储过程(精确查询)
- C#调用SQL Server有参的存储过程
- JSP调用SQL server 2000存储过程的方法
- C# 调用sql 2000存储过程
- C# 调用sql 2000存储过程
- C#调用Sql Server 2008的存储过程流程
- 【转】两个sql server 2000的通用分页存储过程
- sql server查询所有表名、字段名、类型、长度 和 存储过程、视图 的创建语句
- VC6.0通过ADO调用SQL Server 2000的存储过程出现参数过多的问题
- C#调用SQL Server存储过程
- sql server查询数据库中所有包含某文本的存储过程、视图和函数的SQL
- C#与SQL Server存储过程之二(调用):使用C#调用SQL Server的存储过程
- Sql Server系列:SQL语句查询数据库中表、视图、存储过程等组成
- 两个Sql Server 2000的通用分页存储过程
- [导入]在SQL Server 2000中insert的时候返回自动编号的id 存储过程示例[原]
- jsp调用SQL server 2000存储过程-初学
- Sql Server 分页通用存储过程及调用
- VB实现SQL Server 2000存储过程调用
- SQL Server 12存储过程及在VS2015 C#调用自己的存储过程调用过程(详解)