Kurze Einführung des Problems:Wie überprüft man den Status der nativen ODBC-Verbindung in Matlab?
das Hauptproblem nicht in der Verbindungsprozedur ist, ich erfolgreich zur Datenbank verbinden könnte, und einige Zeilen in meiner Datenbank (Tannen Codeblock zeigt dies) einfügen, aber nach Beim Schließen der Verbindung, wenn jemand versucht, eine Zeile in die Datenbank einzufügen, wird Matlab plötzlich ohne eine eindeutige Fehlermeldung beendet (ich erwarte eine Funktion, um zu prüfen, ob die Verbindung offen oder geschlossen ist oder um eine Fehlermeldung zur Behandlung des Fehlers zu erhalten) aber nicht von diesen passiert und nur Matlab geschlossen wegen eines fatalen Fehlers)
i schrieb den folgenden Code in MS SQL Server-Datenbank in Matlab verbinden:
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);
und alles war in Ordnung.
Dann habe ich versucht, eine andere Zeile (, um zu überprüfen, was die Fehlermeldung ist) dann Matlab geschlossen (wegen schwerwiegender Fehler) ohne eine Fehlermeldung anzuzeigen.
Ich habe versucht, Funktionen zu verwenden folgende Status der Datenbankverbindung zu erhalten, bevor neue raws Einfügen:
isconnection(conn);
ping(conn);
aber es sagt
Undefinierte Funktion ‚Ping‘ für Eingabeargumente vom Typ Datenbank‘ .ODBCConnection '.
Undefinierte Funktion ‚isconnection‘ für Eingabeargumente vom Typ ‚database.ODBCConnection‘
sogar versucht, ich versuche-catch-Block zu verwenden, aber es hat nicht funktioniert und Matlab Closed für fatale Fehler.
Also ich möchte wissen, gibt es eine Möglichkeit, Status von nativen ODBC zu überprüfen, plötzlichen Abschluss von Matlab im Falle einer geschlossenen Verbindung zu verhindern ??
Update:
>> 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'
keine Immobilien oder Nachricht geändert vor und nach dem Schließen der Verbindung, das Problem ist, dass ich weiß nicht, wie das überprüfen, ob eine Verbindung in anderen Teilen eines Programms noch offen oder geschlossen! in diesem Fall, wenn ich einen Einfügebefehl verwenden, wenn eine Verbindung vorher geschlossen wurde, Matlab plötzlich beendet (und zeigen Sie die Meldung MATLAB (R2013B) hat aufgehört), so möchte ich wissen, gibt es eine Möglichkeit, um zu überprüfen, ob ein natives odbc Verbindung wurde zuvor geschlossen?
weitere Aktualisierungs
>> 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
i bedeutet eine Funktion wie „isconnection“ in dem obigen Beispiel für die JDBC-Verbindung, die 1 zurückgibt, wenn eine Verbindung offen ist, und 0, wenn die Verbindung vor geschlossen.
tnx viel, ich die Frage als Antwort auf Ihre Antwort aktualisiert, ich glaube, der Fehler in Matlab oder in „native odbc“ Schicht auftreten, so gibt es keine Meldung im Zusammenhang Objekt, –