的主要问题是没有连接过程中,我可以连接到数据库成功,在我的数据库中插入一些行(冷杉代码块显示了这一点),但后如果有人试图在数据库中插入一行,关闭连接,matlab将突然终止,没有任何明确的错误消息,(我希望有一个函数来检查连接是打开还是关闭,或获取错误消息来处理错误但没有这些发生,只是由于致命错误matlab关闭)
我写了下面的代码连接到MS SQL Server数据库在MATLAB:
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关闭(由于致命错误)而不显示任何错误消息。
我尝试使用以下功能插入新的原糖之前得到数据库连接的状态:
isconnection(conn);
ping(conn);
但它说
未定义功能“平”的 类型的输入参数“数据库.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'
没有属性或消息之前改变和关闭连接后, 问题是,我不知道如何检查,如果一个连接仍然在程序的其他部分打开或关闭! 在这种情况下,如果我在连接被关闭之前使用插入命令, 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
我的意思是像在上述用于如果一个连接是打开和0,如果连接之前闭合时返回1 JDBC连接的例子“isconnection”的功能。
TNX了很多,我更新响应你的答案的问题,我认为发生在MATLAB或“本地ODBC”层的错误,所以在连接对象没有消息, –