我有一个非常奇怪的问题,我有一个SQL Server 2008 Express版本的全新安装(是的它现在有点老了,但无论如何)。当我通过SQL Server Management Studio连接时,我可以读取和编辑数据(更新或插入),但是当我通过我的Web应用程序的数据访问层连接时,使用SqlConnection
和{{1}尝试更新并在表中插入数据,数据库中不会发生任何更改。奇怪的是,代码运行就像没有发生错误一样;没有抛出异常,我的更新语句导致SqlCommand
返回1,表示据说已经更新了1行。但是,它还没有。但是,应用程序可以通过select语句从数据库中读取数据。
有没有人知道这里发生了什么?我甚至尝试使用ExpressProfiler跟踪SQL Server,其输出似乎表明更新应该:
SqlCommand.ExecuteNonQuery
然而exec sp_executesql N'UPDATE Match SET TicketsSold=@ticketsSold WHERE MatchId=@matchId',N'@matchId int,@ticketsSold int',@matchId=1,@ticketsSold=1234
go
保持与之前相同的值(123),并且不会更新为1234.是否有某种"沉默"只读模式SQL Server 2008 Express可以运行吗?我很困惑为什么数据库没有更新。
顺便说一句,这是我在SSMS中创建的正确SQL Server数据库,而不是与我的Web应用程序位于同一目录中的某些附加MDF文件。数据库未设置为"只读"在数据库选项中,我非常确定Web应用程序登录的用户对MDF文件具有读/写权限;它以我使用SSMS登录的同一用户身份登录 - 具有集成的Windows安全性 - 我可以通过SSMS更新/插入该用户。
答案 0 :(得分:0)
感谢评论中的shf301 - 我正在创建一个事务,但忘记在.Commit
块结束之前调用using
。 :-D我把它放进去,现在它起作用了。