C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度。不然获取到的结果总是只有第一字符。本人就是由于这个原因,折腾了很久。在此记录一下,供大家以后参考!...RoleName nvarchar(10), @Description nvarchar(50), @RoleID int output AS DECLARE @Count int -- 查找是否有相同名称的记录...SqlCommand( "sp_AccountRole_Create", DbConnection ); DbConnection.Open(connectString); // 废置SqlCommand的属性为存储过程...permission.PermissionName; command.parameters["@Description"].value = permission.Description; // 可以返回新的ID
统计存储过程,这里是将统计的结果插入一个表中,后台可以有定时任务来调此存储过程。以下业务是统计仓库中商品流转情况,包括:日期、商品总数、入库数量、出库数量。...BEGIN DECLARE ES_COR_CODE VARCHAR(20); -- 需要定义接收游标数据的变量 DECLARE table_ VARCHAR(50); -...- 遍历数据结束标志 DECLARE done INT DEFAULT FALSE; -- 游标 DECLARE cur CURSOR FOR SELECT TABLE_NAME...NOT FOUND SET done = TRUE; -- 打开游标 OPEN cur; -- 开始循环 read_loop: LOOP -- 提取游标里的数据...,这里只有一个,多个的话也一样; FETCH cur INTO table_; -- 声明结束的时候 IF done THEN LEAVE read_loop;
MyISAM按照插入的顺序在磁盘上存储数据 聚族索引的优点 可以把相关数据保存在一起。例如实现电子邮件时,可以根据用户ID来聚集数据,这样只需要从磁盘读取少数的数据页就能获取某个用户的全部邮件。...如果没有使用聚族索引,则每封邮件都可能导致一次磁盘I/O; 数据访问更快。聚族索引将索引和数据保存在同一个B-Tree中,因此从聚族索引中获取数据通常比在非聚族索引中查找更快。...在innodb中,由于聚簇索引的顺序就是数据的物理存储顺序,因此我们要尽量使主键有序,方法就是使用COMB,前6个字节表示时间,可以精确到毫秒,后10个字节利用UUID的前10个字节。...由于主键需要唯一性,加了索引可以在插入新数据时快速确定唯一性,不用遍历数据库。...当表上的数据行被删除时,所占据的磁盘空间并没有立即被回收,使用了OPTIMIZE TABLE命令后这些空间将被回收,并且对磁盘上的数据行进行重排(注意:是磁盘上,而非数据库)。
www.cnblogs.com/dunitian/p/4523006.html 后期会在博客首发更新:http://dnt.dkill.net/Article/Detail/312 今天一同志问我这个问题,这个是过程还原...不用sqlhelper也是没有?神马情况? ? 用sqldataadapter却可以? ? ? 吓死宝宝了,赶紧看看啥情况。先换种方法看看 ? ,,,我去,可以哇!...~~的确,reader没关闭,那输出参数就没值(其实也可以理解~reader说:本大王还没读取完呢,你丫急什么,给我等着) ?...不能就这样算了啊,我不能总自己写吧,sqlhelper的问题还是得解决 ? 我去,还是没有。。。。。。。这可不行,看看sqlhelper的源码怎么搞的 ? 万恶的清除啊!再试试 ?...SQLHelper怎么写的? ? 额,经常听前辈说SqlDataAdapter是个神奇的东西,果然... 扩:一般很少直接返回SqlDataReader对象的, ?
在SQL Server数据库中书写复杂的存储过程时,一般的做法是拼接字符串,最后使用EXEC sp_executesql '拼接的字符串' 查询出结果。...SqlSelectResult); 22 23 EXEC sp_executesql @SqlSelectResult; 24 25 SET NOCOUNT OFF; 26 END 然后调用该存储过程...仔细分析原因发现:存储过程参数@StudentId 类型为INT(整形)型;而自定义变量@SqlSelectResult是NVARCHAR(MAX)字符串类型。...在23行,EXEC sp_executesql @SqlSelectResult;执行拼接字符串时,报错,编译器尝试将字符串类型转换成int类型失败。...+ ' WHERE s.ClassId > ' + convert(nvarchar(10),@StudentId); 解决方法2:在存储过程开始定义的时候,将参数定义为字符串类型
http://blog.csdn.net/qq_26525215/article/details/52143733 在上面链接的博客中,写了如何用MySQL语句定义和执行存储过程 Java执行存储过程:...向 setter 方法传递值时,不仅需要指定要在参数中使用的实际值,还必须指定参数在存储过程中的序数位置。例如,如果存储过程包含单个 IN 参数,则其序数值为 1。...如果存储过程包含两个参数,则第一个序数值为 1,第二个序数值为 2。...当您对于 OUT 参数向 registerOutParameter 方法传递一个值时,不仅必须指定要用于此参数的数据类型,而且必须在存储过程中指定此参数的序号位置或此参数的名称。...例如,如果存储过程包含单个 OUT 参数,则其序数值为 1;如果存储过程包含两个参数,则第一个序数值为 1,第二个序数值为 2。
例如我们可能会遇到这样一种场景:插入第一个Key成功了,但在插入第二个Key过程中,第二个Key所在的节点故障了。...如果没有处理好可能就会出现第一个Key保存成功,而第二个Key丢失的情况,这种情况是不允许出现的。所以TDSQL新敏态引擎要保证一次事务涉及的数据要么全部插入成功、要么全部插入失败。...这种调度意味着事务提交在数据项上要原子串行化,在单节点情况下(或者简单的主备同步)这种操作是可行的。...假设该事务在执行过程中Region发生了分裂,分裂的时机在Put H=5之后,Get H之前;同时Region的分裂点为G。...由于没有执行过Get H,计算层只感知到该事务只有Region1参与,于是在执行commit时,计算层就会只提交Region1上的数据,导致Region2上的数据没有提交,破坏了事务的原子性。
目录 1 需求 2 代码实现 1 需求 现在有两个list集合,A 集合 B集合; 两个集合里面都存储user对象, 现在要将B集合里面,不在A集合的数据过滤出来之后,得到; 就是取差集; 2 代码实现
在当前事务中确实能看到插入的记录,最后只不过被删除了,但是auto_increament不会删除而是改变值 为什么auto_increament没有回滚:因为innodb存储引擎中的auto_increment...MYSQL中使用事务: 在MYSQL命令行命令下事务都是自动提交的,即执行Sql语句就会马上执行COMMIT操作。...不可能 可能 可串行化 serializable 不可能 不可能 不可能 脏读:一个事务读取到了另一个事务没有提交的数据 例如:事务T1更新了一行记录的内容,但是并没有提交所做的修改。...,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态, 而第一个表已经被修改完毕。...而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚。
在当前事务中确实能看到插入的记录,最后只不过被删除了,但是auto_increament不会删除而是改变值 为什么auto_increament没有回滚:因为innodb存储引擎中的auto_increment...MYSQL中使用事务: 在MYSQL命令行命令下事务都是自动提交的,即执行Sql语句就会马上执行COMMIT操作。...不可能 不可能 可能 可串行化 serializable 不可能 不可能 不可能 脏读:一个事务读取到了另一个事务没有提交的数据 例如:事务T1更新了一行记录的内容,但是并没有提交所做的修改...,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态, 而第一个表已经被修改完毕。...而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚。
事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。...在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两 次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。...幻读: 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。 同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。...:一个事务还没提交时,它做的变更就能被别的事务看到; 读提交: 一个事务提交之后,它做的变更才会被其他事务看到; 可重复读:一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。...造成这种情况出现的问题是两个结果都在往表里写入,当其中一个结果中的某个key写入后没有提交时,第二个结果也从其中查询是否可以插入或更新的条件,没有查询到,就直接结果插入到表中了,这样造成了重复性的插入。
(可选) 所谓事务存储点就是在事务过程当中插入若干个标记,当事务执行中出现错误时,可以不撤销整个事务,只是撤销部分事务,将事务退回到某个事物存储点。...2)、数据库为什么要有事务的隔离级别 在并发环境下如果没有锁和隔离级别, 不考虑事务的隔离性可能引发的问题 可能会发生以下四种情况: 脏读:在这种情况下,一个事务能够读取另一个事务正在修改且未提交的数据...,那么另一个事务如果发生回滚操作,将导致第一个事务读取到的数据和实际的数据不一致; 丢失更新:这种情况下,事务没有隔离。...,不同的是,两个事务读取一个范围的数据,但是在第二个事务读取之前,另一个事务新增了一条数据,导致两次读取的结果不同。...• 在事务处理过程中尽量不要出现等待用户输入的操作: 在处理事务的过程中,如果需要等待用户输入数据,那么事务会长时间地占用资源,有可能造成系统阻塞。
据京都大学声称,来自其中四个研究小组的数据无法通过备份系统来恢复。 HPE发表了一份日文声明,声称对文件丢失“承担100%的责任”。...然而,负责备份日本惠普公司制造的这个超级计算机系统的存储的程序出现了一个缺陷,导致脚本运行失灵。HPE表示,其结果是无意中删除了这个大容量备份磁盘存储的一些数据。...该公司承认:“我们对这个修改后的脚本的发布程序缺乏考虑……我们没有意识到这种行为带来的副作用,脚本仍在运行时就发布「更新版」,结果覆盖了脚本。”...HPE补充道:“这导致了在执行过程中重新加载修改后的shell脚本,从而导致未定义的变量。结果,「大容量备份磁盘存储」中的原始日志文件被删除,而原本应该删除保存在日志目录中的文件。”...京都大学已暂停了受影响的备份流程,但计划在解决程序中的问题后在本月底之前恢复。它建议用户将重要文件备份到另一个系统。 京都学校和HPE都声称,他们将采取措施防止此类事件再次发生。
一致性:可确保数据库在正确的更改状态进行一个成功的提交事务。 隔离性:使事务相互独立的操作。 持久性:确保了提交事务的结果或系统故障情况下仍然存在作用。...A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 2.不可重复读:事务A多次读取同一数据,事务B在事务A多次读取过程中,对数据作了更新并提交 ,导致事务A多次读取同一数据时结果不一致...MyISAM在执行查询语句时会自动给涉及的所有表加读锁,在执行更新操作前加写锁,这个过程一般不需要用户干预。...0:不允许并发插入 ,1:如果表中没有空洞(表中没有被删除的行)myisam允许在一个进程读表的同时,另一个进程从表尾插入记录,2:无论表中有没有空洞,都允许在表尾插入记录 #读写锁优先级 max_write_lock_count...加unsigned不允许加正负这样可以使正数上线多一倍,存储时间最好用TIMESTAMP使用4个字节存储,大多数情况下没有枚举类型的必要,表的列不要太不要超过10个字段多影响内存数据类型小而简单
•丢失修改(Lost to modify): 指在一个事务读取一个数据时,另外一个事务也访问了该数据,那么在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。...那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。...它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。...InnoDB 存储引擎在 分布式事务 的情况下一般会用到SERIALIZABLE(可串行化)隔离级别。...一个事务对数据库进行操作,这种操作的范围是数据库的全部行,然后第二个事务也在对这个数据库操作,这种操作可以是插入一行记录或删除一行记录,那么第一个是事务就会觉得自己出现了幻觉,怎么还有没有处理的记录呢?
事务A先执行,在10与20两条记录中插入了一行,还未提交: insert into t values(11, xxx); 事务B后执行,也在10与20两条记录中插入了一行: insert into...MyISAM存储引擎是表锁设计,自增长不用考虑并发插入的问题。在InnoDB存储引擎中,自增长值的列必须是索引,同时必须是索引的第一个列,如果不是第一个列,则MySQL会抛出异常。...为了便于理解MVCC的实现原理,这里简单介绍一下undo log的工作过程 在不考虑redo log 的情况下利用undo log工作的简化过程为: 序号 动作 1 开始事务 2 记录数据行数据备份到...我的理解是,在“读已提交”的情况下,读取的是快照的最新版本的数据,那么既然读取的是快照数据了,那么这些数据肯定是之前的事务提交过了的。...因此,在第一个事务的两次读数据之间,由于第二个事务的修改,第一个事务两次读取到的数据可能是不一样的(具体看隔离级别)。这种称为不可重复读。 示例: ?
1.2 事务的定义 什么是事务? 维基百科的定义:事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。...那么,这种在一个事务里面,由于其他的时候修改了数据并且没有提交,而导致了前后两次读取数据不一致的情况,这种事务并发的问题,我们把它定义成什么? 这个叫做脏读。 再来看第二个: ? ...同样是两个事务,第一个事务通过 id=1 查询到了一条数据。然后在第二个事务里面执行了一个 update 操作,这里大家注意一下,执行了 update 以后它通过一个 commit 提交了修改。...这种一个事务读取到了其他事务已提交的数据导致前后两次读取数据不一致的情况,我们把它叫做不可重复读。 ? 在第一个事务里面我们执行了一个范围查询,这个时候满足条件的数据只有一条。...在第二个事务里面,它插入了一行数据,并且提交了。重点:插入了一行数据。在第一 个事务里面再去查询的时候,它发现多了一行数据。这种情况,我们把它叫做什么呢?
事务A先执行,在10与20两条记录中插入了一行,还未提交: insert into t values(11, xxx); 事务B后执行,也在10与20两条记录中插入了一行: insert into...MyISAM存储引擎是表锁设计,自增长不用考虑并发插入的问题。在InnoDB存储引擎中,自增长值的列必须是索引,同时必须是索引的第一个列,如果不是第一个列,则MySQL会抛出异常。...为了便于理解MVCC的实现原理,这里简单介绍一下undo log的工作过程 在不考虑redo log 的情况下利用undo log工作的简化过程为: 序号 动作 1 开始事务 2...锁问题 脏读 脏数据:指的是事务对缓冲池中行记录的修改,并且还没有提交。即事务未提交的数据。 脏读:指当前事务可以读到其他事务的未提交的数据。...因此,在第一个事务的两次读数据之间,由于第二个事务的修改,第一个事务两次读取到的数据可能是不一样的(具体看隔离级别)。这种称为不可重复读。 示例: ?
领取专属 10元无门槛券
手把手带您无忧上云