SQL存储过程的调用及写法
调用函数:
public class SqlProcess
{
public int ReturnValue = ;
public DataSet ReturnSet = null;
public SqlDataAdapter adapter = null; public SqlProcess(String proc,String uid,String pwd,String data,String ip) {
uid = Regex.Replace(uid,@"[^\w]*","");
pwd = Regex.Replace(pwd,@"[^\w]*",""); SqlConnection conn = new SqlConnection(Config.DBConnString);
conn.Open();
SqlCommand sqlcmd = new SqlCommand(proc, conn);
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.Add(new SqlParameter("uid", uid));
sqlcmd.Parameters.Add(new SqlParameter("pwd", pwd));
sqlcmd.Parameters.Add(new SqlParameter("data", data));
sqlcmd.Parameters.Add(new SqlParameter("IP", ip));
SqlParameter returnParm = new SqlParameter("return", SqlDbType.Int);
returnParm.Direction = ParameterDirection.ReturnValue;
sqlcmd.Parameters.Add(returnParm);
adapter = new SqlDataAdapter(sqlcmd);
ReturnSet = new DataSet();
adapter.Fill(ReturnSet);
conn.Close();
ReturnValue = Convert.ToInt32(returnParm.Value);
}
}
sql存储过程:
USE [ServiceDB]
GO
/****** Object: StoredProcedure [dbo].[CheckIFlightPrivate] Script Date: 06/02/2013 10:32:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO -- Batch submitted through debugger: SQLQuery15.sql|7|0|C:\Documents and Settings\Administrator\Local Settings\Temp\~vs1860.sql ALTER PROCEDURE [dbo].[CheckIFlightPrivate]
(
@userId varchar(32),
@pwdMD5 varchar(32),
@data varchar(1024),
@IP varchar(16)
--@result int output
)
AS
BEGIN
DECLARE @accountPwd varchar(32),
@returnValue int,
@ID bigint; IF @userId is NULL or @userId = ''
BEGIN
EXEC @returnValue = ErrCode 10001;
RETURN @returnValue;
END
IF @pwdMD5 is NULL or @pwdMD5 = ''
BEGIN
EXEC @returnValue = ErrCode 10002;
RETURN @returnValue;
END
--登录
SELECT Top 1 @ID=ID,@accountPwd=userPwd FROM TUserInfo WHERE UserID = @userId;
IF @@ROWCOUNT = 0
BEGIN
EXEC @returnValue = ErrCode 10003;
RETURN @returnValue;
END
--有用户 验证是否是用独立MD5 DECLARE
@userMD5 varchar(50),
@BeginDateTime datetime,
@EndDateTime datetime,
@PerDayTimes bigint,
@LastDayUseTimes bigint,
@PerMonthTimes bigint,
@LastMonthUseTimes bigint,
@PerYearTimes bigint,
@LastYearUseTimes bigint,
@TotalTimes bigint,
@TotalUseTimes bigint,
@AllowedClientIP varchar(50),
@LastDayUpdateTime datetime,
@LastMonthUpdateTime datetime,
@LastYearUpdateTime datetime; SELECT TOP 1
@userMD5 = UserMD5,
@BeginDateTime = BeginDateTime,
@EndDateTime = EndDateTime,
@PerDayTimes = PerDayTimes,
@LastDayUseTimes = LastDayUseTimes,
@PerMonthTimes = PerMonthTimes,
@LastMonthUseTimes = LastMonthUseTimes,
@PerYearTimes = PerYearTimes,
@LastYearUseTimes = LastYearUseTimes,
@TotalTimes = TotalTimes,
@TotalUseTimes = TotalUseTimes,
@LastDayUpdateTime = LastDayUpdateTime,
@LastMonthUpdateTime = LastMonthUpdateTime,
@LastYearUpdateTime = LastYearUpdateTime,
@AllowedClientIP = AllowedClientIP FROM TIFlightPrivate WHERE UserID=@ID;
--登录成功--验证功能 IF @@RowCount = 0
BEGIN
EXEC @returnValue = ErrCode 10010;
RETURN @returnValue;
END
ELSE
BEGIN
IF @userMD5 is NULL OR @userMD5 = ''
BEGIN
--用帐号的MD5;
IF @pwdMD5 <> @accountPwd
BEGIN
EXEC @returnValue = ErrCode 10004;
RETURN @returnValue;
END END
ELSE IF @pwdMD5 <> @userMD5
BEGIN
EXEC @returnValue = ErrCode 10006;
RETURN @returnValue;
END
END --验证 更新查询次数 -- 更新次数
if datediff(dd,@LastDayUpdateTime,getdate()) > 0
begin
set @LastDayUseTimes = 0;
set @LastDayUpdateTime = getdate();
end
if datediff(dd,dateadd(mm,1,@LastMonthUpdateTime),getdate()) > 0
begin
set @LastMonthUseTimes = 0;
set @LastMonthUpdateTime = getdate();
end
if datediff(dd,dateadd(yy,1,@LastYearUpdateTime),getdate()) > 0
begin
set @LastYearUseTimes = 0;
set @LastYearUpdateTime = getdate();
end IF @EndDateTime is not null and getdate() > @EndDateTime
begin
SELECT '该帐号已于'+convert(varchar,@EndDateTime,20)+'过期!' AS ErrInfo;
return 0;
end
else if @AllowedClientIP is not null and charindex(@IP,@AllowedClientIP) = 0
begin
SELECT '该帐号限制访问IP为:'+@AllowedClientIP AS ErrInfo;
return 0;
end
else if @PerDayTimes is not null and @PerDayTimes>0 and @LastDayUseTimes >= @PerDayTimes
begin
SELECT '该帐号已经超过当天查询次数:'+ convert(varchar,@perDayTimes) +'次' AS ErrInfo;
return 0;
end
else if @PerMonthTimes is not null and @PerMonthTimes>0 and @LastMonthUseTimes >= @PerMonthTimes
begin
SELECT '该帐号已经超过当月查询次数:'+ convert(varchar,@PerMonthTimes) +'次' AS ErrInfo;
return 0;
end
else if @PerYearTimes is not null and @PerYearTimes>0 and @LastYearUseTimes >= @PerYearTimes
begin
SELECT '该帐号已经超过当年查询次数:'+ convert(varchar,@PerYearTimes) +'次' AS ErrInfo;
return 0;
end
else if @TotalTimes is not null and @TotalTimes>0 and @TotalUseTimes >= @TotalTimes
begin
SELECT '该帐号已经超过总查询次数:'+ convert(varchar,@TotalTimes) + '次' AS ErrInfo;
return 0;
end
else
begin
update TIFlightPrivate set LastDayUseTimes=@LastDayUseTimes+1,
LastMonthUseTimes=@LastMonthUseTimes+1,
LastYearUseTimes=@LastYearUseTimes+1,
TotalUseTimes=@TotalUseTimes+1,
LastDayUpdateTime=@LastDayUpdateTime,
LastMonthUpdateTime=@LastMonthUpdateTime,
LastYearUpdateTime=@LastYearUpdateTime Where UserID=@ID;
--set @result = '该帐号有效日期至:'+ convert(varchar,@EndDateTime,120) + ',当天剩余次数,当月剩余次数,当年剩余次数,总剩余次数';
end --默认城市地方
return 1
END
SQL存储过程的调用及写法的更多相关文章
- SQL存储过程来调用webservice
如果用存储过程来调用webservice 那存储过程的功能感觉能做好多事情了? 别自欺欺人了.那些功能还是webservice来实现的... 完整的webservice代码:(也是默认的,新建.asm ...
- SQL 存储过程里调用另一个存储过程
由于创建了一个存储过程,并且要在另一个存储过程里调用这个存储过程所以在网上找了一下相关的代码,现在总结一下,防止以后还会用到 由于这次我写的存储过程只需要返回一个求和的结果,所以我使用了output ...
- SQL——存储过程实例 调用带参数的过程(成绩输出)
create or replace procedure test_score(input in number,output out char) is begin then begin output : ...
- SQL存储过程概念剖析
一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...
- (转载)delphi 中如何调用sql 存储过程
delphi 中如何调用sql 存储过程 使用TADOStoredProc组件,可以,给你举个例子好了 with ADOStoredProc1 do begin Close; Parameters.C ...
- discuz 万能SQL查询调用语句写法
首先在最底层source\class\table写入底层安全调用文件例如:table_common_friendlink.php 代码: <?php /** * [Discuz!] (C)200 ...
- C# 连接Oracle,并调用存储过程(存在返回值),C# 调用sql存储过程
1.获取Oracle表格信息 public OracleHelpers(string ConnStr) { ConnectionString = ConnStr; conn = new OracleC ...
- sql 存储过程 in 的两种写法
最近又忘记存储过程 除了exec 动态写法的另外一种,这里记录一下,方便查找 写法1,动态语句 CREATE PROCEDURE sp_CountShiftWish @strids varchar ( ...
- 在 SQL Server 的存储过程中调用 Web 服务
介绍 一个老朋友计划开发一个应用,基于 .NET 和 Socket,但需要在存储过程中调用 Web 服务. 在这篇文章中我们将分享这个应用的经验,讲述如何在存储过程中调用 Web 服务,并传递参数. ...
随机推荐
- 制作具有SSH、MySQL功能的Chroot
由于工作需求,需要在Linux上建立SSH.MySQL两个用户. 使这两个账户连接到跳板机后仅能执行有限的命令(SSH用户只能执行SSH命令,MySQL用户只能执行MySQL命令). MySQL账户C ...
- 优化MySchool数据库(三)
使用T_SQL 编写业务逻辑: 如何定义及使用“变量”: ---- 让电脑帮我记住一个名字(王二) C#: string name ; [定义一个变量] name = "王二&qu ...
- 【代码笔记】iOS-判断是否是模拟机
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- 网络热恋之json解析
现在的app开发很少有用到XML解析的了,主流的则是JSON. // // ViewController.m // CX-JSON解析(三方JSONKit-master) #import " ...
- 使用 AngularJS 开发一个大规模的单页应用(SPA)
本文的目标是基于单页面应用程序开发出拥有数百页的内容,包括认证,授权,会话状态等功能,可以支持上千个用户的企业级应用. 下载源代码 介绍 (SPA)这样一个名字里面蕴含着什么呢? 如果你是经典的S ...
- javascript中,对于this指向的浅见
# this的指向在函数创建的时候确定不了.只有在执行的时候,才可以确定. ## 1 . 这里的this指向window window.fn(); 所以this.user是undefined func ...
- cdh集群数据恢复
CDH 数据库 磁盘坏了 所有集群配置 都没了 而且 还没备份 .... 元数据 还在 cdh 软件配置 和 安装软件 不能用了 下载 apache hadoop 重新配置 ...
- SQL Server字符串左匹配
在SQL Server中经常会用到模糊匹配字符串的情况,最简单的办法就是使用like关键字(like语法http://msdn.microsoft.com/en-us/library/ms179859 ...
- Access界面基础操作
1. 显示表 2. 条件“或” SELECT 研究生.姓名, 研究生.性别, 研究生.入学分数 FROM 研究生 WHERE (研究生.性别="女" AND 研究生.入学分数< ...
- ResultSet rs = stmt.executeQuery(sql); 返回值问题判断
JAVA ResultSet rs = stmt.executeQuery(sql); //查询返回的结果集不管是否查到,rs都不是null,那么问题是怎么判断查找不到来执行一个提示“账号或者 ...