Database 如何在matlab中检查本机ODBC连接的状态?

Database 如何在matlab中检查本机ODBC连接的状态?,database,matlab,odbc,native,Database,Matlab,Odbc,Native,问题简介: >> conn=database.ODBCConnection('MS SQL SERVER','','') conn = ODBCConnection with properties: Instance: 'MS SQL SERVER' UserName: '' Message: [] Handle: [1x1 database.internal.ODBCConnectHandle] TimeOut: 0 AutoCommit: 0

问题简介:

>> conn=database.ODBCConnection('MS SQL SERVER','','')

conn = 

ODBCConnection with properties:

  Instance: 'MS SQL SERVER'
  UserName: ''
   Message: []
    Handle: [1x1 database.internal.ODBCConnectHandle]
   TimeOut: 0
AutoCommit: 0
      Type: 'ODBCConnection Object'

 >> close(conn)
 >> conn

 conn = 

 ODBCConnection with properties:

  Instance: 'MS SQL SERVER'
  UserName: ''
   Message: []
    Handle: [1x1 database.internal.ODBCConnectHandle]
   TimeOut: 0
AutoCommit: 0
      Type: 'ODBCConnection Object'
主要问题不在连接过程中,我可以成功连接到数据库,并在数据库中插入一些行(firs代码块显示了这一点),但在关闭连接后,如果有人试图在数据库中插入一行,matlab将在没有任何明确错误消息的情况下突然终止,(我希望有一个函数来检查连接是否打开或关闭,或者获取一条错误消息来处理错误,但没有一个函数发生错误,只是因为致命错误而关闭了)

我编写了以下代码以在matlab中连接MS SQL SERVER数据库:

conn=database.ODBCConnection('MS SQL SERVER','','');
insert(conn,'trace',{'obj_id','obj_type_id','time_step','pos_x','pos_y','vel_x','vel_y'},[1,1,1,0,0,0,0]);
close(conn);
一切都很好

然后我尝试插入另一行(以检查错误消息是什么),然后Matlab关闭(由于致命错误),而没有显示任何错误消息

在插入新的RAW之前,我尝试使用以下函数获取数据库连接的状态:

isconnection(conn);
ping(conn);
但是它说

类型的输入参数的未定义函数“ping” “database.ODBCConnection”

类型的输入参数的未定义函数“isconnection” “database.ODBCConnection”

甚至我也尝试使用try-catch块,但它不起作用,Matlab因致命错误而关闭

所以我想知道有没有办法检查本机ODBC的状态,以防止在连接关闭的情况下突然关闭matlab??


更新:

>> conn=database.ODBCConnection('MS SQL SERVER','','')

conn = 

ODBCConnection with properties:

  Instance: 'MS SQL SERVER'
  UserName: ''
   Message: []
    Handle: [1x1 database.internal.ODBCConnectHandle]
   TimeOut: 0
AutoCommit: 0
      Type: 'ODBCConnection Object'

 >> close(conn)
 >> conn

 conn = 

 ODBCConnection with properties:

  Instance: 'MS SQL SERVER'
  UserName: ''
   Message: []
    Handle: [1x1 database.internal.ODBCConnectHandle]
   TimeOut: 0
AutoCommit: 0
      Type: 'ODBCConnection Object'
关闭连接前后没有更改属性或消息, 问题是我不知道如何检查程序的其他部分中的连接是否仍然打开或关闭! 在这种情况下,如果在之前关闭连接时使用insert命令, matlab突然终止(并显示消息matlab(R2013B)已停止工作), 所以我想知道有没有办法检查本机odbc连接以前是否关闭过


进一步更新

>> conn=database('MS SQL SERVER','','')

conn =

   Instance: 'MS SQL SERVER'
   UserName: ''
     Driver: []
        URL: []
Constructor: [1x1 com.mathworks.toolbox.database.databaseConnect]
    Message: []
     Handle: [1x1 sun.jdbc.odbc.JdbcOdbcConnection]
    TimeOut: 0
 AutoCommit: 'on'
       Type: 'Database Object'

>> isconnection(conn)

ans =

 1

>> close(conn)
>> isconnection(conn)

ans =

 0
我是说像“断开连接”这样的函数在上面的jdbc连接示例中,如果连接打开,则返回1;如果连接之前关闭,则返回0。

根据,您可以通过检查database.ODBCConnection对象和数据库中的Message属性值来检查数据库工具箱中现有database.ODBCConnection或database.ODBCCursor的状态。ODBCCursor对象

您可能需要使用
setdbprefs('ErrorHandling','store')
将错误处理设置为存储。使用
setdbprefs('ErrorHandling','report')
将其重新切换


ping
isconnection
仅适用于数据库连接对象,而不适用于database.ODBCConnection对象。

我要求您使用Matlab的toolstrip功能检查数据库连接。您可以从

您可以先执行测试,以便排除服务器的任何问题

成功连接后..您可以检查code.connection设置并相应地将其应用于代码中


关于,

tnx很多,我更新了问题以回应您的回答,我认为错误发生在matlab或“本机odbc”中层,所以连接对象中没有消息,tnx很多,我以前看过该文档,但主要问题不在连接过程中,我可以成功连接到数据库,并在数据库中插入一些行(第一个代码块显示了这一点),但在关闭连接后,如果有人试图在数据库中插入一行,matlab将突然关闭,而没有任何明确的错误消息,(我希望有一个功能来检查连接是否打开或关闭,或者获取一条错误消息来处理错误,但这些错误都没有发生,只是matlab因为致命错误而关闭)