- 浏览: 40788 次
文章分类
最新评论
1.数据库的事务很重要,在保持数据一致性有很大的用处
2.事务会锁定数据库表在使用时一定要注意,查询语句加上不锁表
USE [DNN ] GO /****** Object: StoredProcedure [dbo].[aspnet_Membership_ResetPassword] Script Date: 01/16/2015 11:05:36 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[aspnet_Membership_ResetPassword] @ApplicationName nvarchar(256), @UserName nvarchar(256), @NewPassword nvarchar(128), @MaxInvalidPasswordAttempts int, @PasswordAttemptWindow int, @PasswordSalt nvarchar(128), @CurrentTimeUtc datetime, @PasswordFormat int = 0, @PasswordAnswer nvarchar(128) = NULL AS BEGIN DECLARE @IsLockedOut bit DECLARE @LastLockoutDate datetime DECLARE @FailedPasswordAttemptCount int DECLARE @FailedPasswordAttemptWindowStart datetime DECLARE @FailedPasswordAnswerAttemptCount int DECLARE @FailedPasswordAnswerAttemptWindowStart datetime DECLARE @UserId uniqueidentifier SET @UserId = NULL DECLARE @ErrorCode int SET @ErrorCode = 0 DECLARE @TranStarted bit SET @TranStarted = 0 IF( @@TRANCOUNT = 0 ) BEGIN BEGIN TRANSACTION SET @TranStarted = 1 END ELSE SET @TranStarted = 0 SELECT @UserId = u.UserId FROM dbo.aspnet_Users u, dbo.aspnet_Applications a, dbo.aspnet_Membership m WHERE LoweredUserName = LOWER(@UserName) AND u.ApplicationId = a.ApplicationId AND LOWER(@ApplicationName) = a.LoweredApplicationName AND u.UserId = m.UserId IF ( @UserId IS NULL ) BEGIN SET @ErrorCode = 1 GOTO Cleanup END SELECT @IsLockedOut = IsLockedOut, @LastLockoutDate = LastLockoutDate, @FailedPasswordAttemptCount = FailedPasswordAttemptCount, @FailedPasswordAttemptWindowStart = FailedPasswordAttemptWindowStart, @FailedPasswordAnswerAttemptCount = FailedPasswordAnswerAttemptCount, @FailedPasswordAnswerAttemptWindowStart = FailedPasswordAnswerAttemptWindowStart FROM dbo.aspnet_Membership WITH ( UPDLOCK ) WHERE @UserId = UserId IF( @IsLockedOut = 1 ) BEGIN SET @ErrorCode = 99 GOTO Cleanup END UPDATE dbo.aspnet_Membership SET Password = @NewPassword, LastPasswordChangedDate = @CurrentTimeUtc, PasswordFormat = @PasswordFormat, PasswordSalt = @PasswordSalt WHERE @UserId = UserId AND ( ( @PasswordAnswer IS NULL ) OR ( LOWER( PasswordAnswer ) = LOWER( @PasswordAnswer ) ) ) IF ( @@ROWCOUNT = 0 ) BEGIN IF( @CurrentTimeUtc > DATEADD( minute, @PasswordAttemptWindow, @FailedPasswordAnswerAttemptWindowStart ) ) BEGIN SET @FailedPasswordAnswerAttemptWindowStart = @CurrentTimeUtc SET @FailedPasswordAnswerAttemptCount = 1 END ELSE BEGIN SET @FailedPasswordAnswerAttemptWindowStart = @CurrentTimeUtc SET @FailedPasswordAnswerAttemptCount = @FailedPasswordAnswerAttemptCount + 1 END BEGIN IF( @FailedPasswordAnswerAttemptCount >= @MaxInvalidPasswordAttempts ) BEGIN SET @IsLockedOut = 1 SET @LastLockoutDate = @CurrentTimeUtc END END SET @ErrorCode = 3 END ELSE BEGIN IF( @FailedPasswordAnswerAttemptCount > 0 ) BEGIN SET @FailedPasswordAnswerAttemptCount = 0 SET @FailedPasswordAnswerAttemptWindowStart = CONVERT( datetime, '17540101', 112 ) END END IF( NOT ( @PasswordAnswer IS NULL ) ) BEGIN UPDATE dbo.aspnet_Membership SET IsLockedOut = @IsLockedOut, LastLockoutDate = @LastLockoutDate, FailedPasswordAttemptCount = @FailedPasswordAttemptCount, FailedPasswordAttemptWindowStart = @FailedPasswordAttemptWindowStart, FailedPasswordAnswerAttemptCount = @FailedPasswordAnswerAttemptCount, FailedPasswordAnswerAttemptWindowStart = @FailedPasswordAnswerAttemptWindowStart WHERE @UserId = UserId IF( @@ERROR <> 0 ) BEGIN SET @ErrorCode = -1 GOTO Cleanup END END IF( @TranStarted = 1 ) BEGIN SET @TranStarted = 0 COMMIT TRANSACTION END RETURN @ErrorCode Cleanup: IF( @TranStarted = 1 ) BEGIN SET @TranStarted = 0 ROLLBACK TRANSACTION END RETURN @ErrorCode END
2.事务会锁定数据库表在使用时一定要注意,查询语句加上不锁表
SELECT @IsLockedOut = IsLockedOut, @LastLockoutDate = LastLockoutDate, @FailedPasswordAttemptCount = FailedPasswordAttemptCount, @FailedPasswordAttemptWindowStart = FailedPasswordAttemptWindowStart, @FailedPasswordAnswerAttemptCount = FailedPasswordAnswerAttemptCount, @FailedPasswordAnswerAttemptWindowStart = FailedPasswordAnswerAttemptWindowStart FROM dbo.aspnet_Membership WITH ( UPDLOCK )
IF (EXISTS (SELECT * FROM dbo.aspnet_Membership m WITH ( UPDLOCK, HOLDLOCK ) WHERE ApplicationId = @ApplicationId AND LoweredEmail = LOWER(@Email)))
发表评论
-
SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一)
2015-02-04 09:54 379SQL索引在数据库优化中 ... -
SQL中索引的原理1
2015-02-04 09:35 592(一)深入浅出理解索 ... -
数据库中的数据到C#代码中的数值要注意转换了
2015-01-26 11:03 454如下,从数据库的存储过程传值过去给C#,如果不再转换一次,C# ... -
SQL Server 删除表中重复的记录的方法记录
2015-01-20 08:38 314--delete from [T_SaleConfirmSta ... -
写sql时经常会碰到条件不定的情况,这样的技巧受用无限
2015-01-19 18:03 499写sql时经常会碰到条件不定的情况,好多兄弟都是在哪儿无穷的拼 ... -
SQL Server数据库中时间比较,这样比较准确
2015-01-19 17:56 600SQL数据库中对于时间的精确度比较做的不是很好。有时候是把值当 ... -
让ADO.NET Entity Framework支持Oracle数据库 好东西收藏了
2015-01-16 11:35 507项目需要基于.NET平台,个人的习惯是能用微软自带的就不用第三 ... -
使用SqlBulkCopy导入大数据要注意
2015-01-13 14:17 551第一次用挺好,第二次就出问题了:我的表里边已经有数据,而且加了 ... -
SQL Server中查看那个进程阻塞数据库的存储过程,收藏了
2015-01-13 10:20 1716use master go alter procedu ... -
用微软提供的批量把数据导入到数据库方法SqlBulkCopy真是好用好快
2015-01-13 09:59 2593平时老是碰到把一批数据插入到数据库。通常的办法是循环一条条插进 ... -
SQL Server类型与C#类型对应关系 好东西收藏了
2015-01-13 09:14 1563SQL Server类型 C#类型 bit bool tiny ... -
报表SQL存储过程开发中十条军规
2015-01-12 15:11 789报表SQL存储过程的特 ... -
常用经典SQL语句
2015-01-09 12:41 440下列语句部分是Mssql语 ... -
收集到的SQL语句大全技巧大全
2015-01-09 10:03 606一、基础 1、说明:创建数据库 CREATE DATABAS ... -
存储过程中的分页技巧(最实用的)
2015-01-06 14:42 572大家在开发时都会面临分页的问题, 1.假分页 把数据库的内容全 ...
相关推荐
《Visual C++数据库编程技术与实例》是一本深入探讨如何使用Microsoft Visual C++进行数据库编程的专业书籍,由沈...不过,这些章节标题通常会反映出书中涵盖的具体技术点,如“ODBC连接数据库”、“ADO使用实例”等。
- 介绍在Visual C++中使用嵌入式数据库技术,比如SQLite,它们允许在应用中直接集成数据库功能,无需额外的数据库服务器。 7. 网络数据库编程 - 讨论如何在Visual C++中进行网络数据库编程,包括利用TCP/IP协议与...
在探讨数据库事务回滚机制实例之前,我们先来理解一下什么是数据库事务以及为什么需要事务管理。数据库事务(Transaction)是指一组逻辑操作单元,这组操作要么全部成功,要么全部失败,是一个不可分割的工作单位。...
《C++数据库编程技术与实例》这本书正是为了帮助开发者掌握如何在C++环境中与数据库进行交互而编写的。 首先,C++数据库编程的基础涉及到对SQL(结构化查询语言)的理解,这是与所有关系型数据库进行沟通的语言。...
通过学习“数据库编程技术与实例”,你将能够掌握数据库的基础知识,编写高效的SQL,设计和优化数据库,以及解决实际项目中的问题。实践案例会进一步加深对这些概念的理解,帮助你在实际工作中更好地应用数据库技术...
本实例主要关注如何使用VC++与Oracle数据库进行交互,实现数据的存取、查询、更新和删除等操作。Oracle数据库是一个关系型数据库管理系统,提供了丰富的API和工具,如OCI(Oracle Call Interface)和ODBC(Open ...
- 在开始之前,你需要了解如何创建一个数据库,例如在MySQL中使用`CREATE DATABASE`语句。接着,创建表,定义字段类型、大小、约束(如主键、外键),使用`CREATE TABLE`语句。 2. **数据插入、查询与更新**: - ...
本编程小实例将探讨如何在C++.NET环境中使用事务管理来安全地删除数据库记录。本文将深入解析这个主题,并提供具体的代码示例。 首先,我们需要理解事务的基本概念。事务是数据库系统执行的一系列操作的逻辑单元,...
书中会详细介绍如何配置ODBC数据源,以及如何在C++中使用ODBC函数连接和操作数据库。 4. **ADO(ActiveX Data Objects)**:ADO是微软提供的更高级的数据访问技术,它提供了更简单、更直观的方式来处理数据库。通过...
在本实例中,18个数据库实例可能涵盖了从基本的CRUD(创建、读取、更新、删除)操作到复杂的事务处理、并发控制、查询优化等高级主题。这些实例可能包括使用ADO连接数据库、执行SQL语句、填充Recordset对象、处理...
在这些实例中,开发者可能使用了MFC(Microsoft Foundation Classes)库,它为VC++提供了封装好的数据库操作类,如CDatabase和CRecordset,简化了数据库操作。 实例代码可能涵盖了以下知识点: 1. 数据库连接:...
在MySQL中,你可以使用CREATE DATABASE语句创建新的数据库,然后使用USE语句切换到要操作的数据库。表是数据库中的基本单元,CREATE TABLE语句用于定义表结构,包括字段名、数据类型、长度以及约束条件等。常见的...
在C#中,我们通常使用ADO.NET(ADO.NET Framework)来处理数据库操作,它提供了丰富的类库,如SqlConnection、SqlCommand、SqlDataReader等,方便程序员连接SQL Server数据库,执行查询、更新、插入和删除等操作。...
关系数据库管理系统实例是指使用关系模型来管理和存储数据的数据库管理系统。这种系统可以管理大量的数据,并提供了高效的数据存储和检索能力。关系数据库管理系统实例可以分为多种类型,如 Oracle、SQL Server、...
书中会详细讲解如何使用这些技术进行数据查询、插入、更新和删除操作,以及如何处理事务和错误。 再者,本书可能包含了一些数据库设计的基本概念,如ER模型(实体关系模型)、数据库模式设计和SQL(结构化查询语言...
《Visual C++数据库编程技术与实例》是一本深入探讨如何使用Visual C++进行数据库编程的专业书籍,由作者沈炜撰写。这本书旨在为读者提供丰富的编程技术知识,并通过大量的源码实例来帮助理解和应用这些技术。以下是...
本实例将详细讲解如何在VB.NET中建立与数据库的连接,进行数据操作,并确保程序的稳定性和安全性。 首先,我们需要引入ADO.NET组件,这是.NET Framework提供的用于访问数据库的一组类库。在VB.NET项目中,我们可以...
数据库SQL实例,特别是T-SQL编程,是数据库管理和开发中的核心技能。T-SQL,全称为Transact-SQL,是Microsoft SQL Server所采用的一种扩展的SQL语言,它在标准SQL的基础上增加了一些特性和功能,使得数据库操作更为...
以上只是C#数据库编程的部分核心概念,实际的实例可能涵盖了这些知识点的应用,包括但不限于创建数据库连接、执行查询、处理结果、事务管理以及错误处理等方面。这些实例对于学习和掌握C#数据库编程技巧非常有价值,...
数据库事务处理