的主要問題是沒有連接過程中,我可以連接到數據庫成功,在我的數據庫中插入一些行(冷杉代碼塊顯示了這一點),但後如果有人試圖在數據庫中插入一行,關閉連接,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」層的錯誤,所以在連接對象沒有消息, –