2013-06-04 73 views
2

我使用后显示空白记录:QT 5.0.2 + MinGW的4.7 + 32位+ ODBC驱动程序+的Windows 7(32)+ SQL Server 2012点的快速的SQL Server ODBC + QT +:交易

“问题“:

1)我有一个窗口显示数据库表中的记录。

2)如果某个应用程序中,我有没有使用“交易”的一切工作正常更新数据库。

3)如果某个应用程序中,我必须更新使用“交易”的记录(1)(*)消失在窗口显示的数据库,并成为空白记录。

注(*):如果我有多个窗口(MDI),显示几个表中,所有窗口,所有表记录的同时会变成空白。

我决定请与“SQL Server事件探查器”当有人使用在服务器端发生的事情与QSqlTableModel \ QSqlQueryModel,我想我已经“发现”服务器上的(我的)的问题,但我不知道哪儿出了问题在我的/ QT方:

1)窗口打开时,与QSqlTableModel \ QSqlQueryModel(我认为)创建一个光标“的exec sp_cursoropen 180150003”在服务器上

2)获取一些记录“EXEC sp_cursorfetch 180150003”

3)如果窗口重绘/刷新再次检索一些记录“exec sp_c ursorfetch 180150003”

4)执行后的‘交易’的人(谁?)关闭正在使用的游标(我认为)通过与QSqlTableModel \ QSqlQueryModel‘EXEC sp_cursorclose 180150003’

5)之后,有没有更多条目“exec sp_cursorfetch ...”。这就是为什么(我认为)QTableView显示BLANK记录。

注(*):使用MDI子窗口示出它们中的每一个完全不同的和不相关的表。 “交易”后,所有子窗口/ QTableView自动显示BLANK记录。我已经检查过“SQL Server Profiler”,在“事务”之后有和打开的子窗口一样多的“exec sp_cursorfetch”。

看来,所有的“游标”都将自动关闭,无论它们与所取得的更新(单表)有关。

假设“问题”是\那些“EXEC sp_cursorclose”,没有任何人有一个想法,为什么\那些(EXEC sp_cursorclose)自动发生:

  • 它是一个ODBC(一般来说)局限性?

  • 它是一个ODBC(QT实现)限制吗?

  • 它是一个ODBC(MSSQL实现)限制吗?

  • 它是QSqlxxxxxx实现/限制吗?

我在这里错过了什么?

任何建议或意见,将不胜感激

回答

0

你要进入的服务器正确的SQL INSERT的值和变量? 我知道,这已经无关,与你的要求,但在MySQL服务器的小错误可能会导致他人发生。祝你好运:)

+0

谢谢您的回答。 我敢肯定,SQL语法是正确的。如果有帮助的背后我的问题完整的故事+一个小的测试应用程序演示这种情况的例子可以在这里找到: http://qt-project.org/forums/viewthread/28390/ 我没想到这种行为,到目前为止,我无法找到它的解释。我希望有人在ODBC或SQL Server或QT一定的专业知识能帮助我理解甚至解决这种情况。 – antseq