Как я могу проверить, был ли OpenSQLConnection успешным (в Mathematica)? - PullRequest
2 голосов
/ 25 марта 2010

Как я могу проверить, успешно ли соединение DatabaseLink`OpenSQLC? Мой код выглядит следующим образом

conn = OpenSQLConnection[JDBC["hsqldb", "file"], "Name"-> "test"];

Могу ли я использовать что-то вроде Head [conn]?

Ответы [ 2 ]

2 голосов
/ 25 марта 2010

Возвращаемое значение для успешного подключения будет иметь заголовок SQLConnection (в контексте DatabaseLink)

В более общем смысле:

OpenSQLConnection возвращает $Failed, если по какой-либо причине не удалось установить соединение:

In[25]:= OpenSQLConnection[JDBC["mysql", "localhost:3306/foo"], 
   "Username" -> "foo", "Password" -> "bar"]

During evaluation of In[25]:= JDBC::error: Access denied for user 'foo'@'localhost' (using password: YES) >>

Out[25]= $Failed 

... и не оценены, когда его аргументы не имели правильной формы:

In[28]:= OpenSQLConnection[Sin[x]]

Out[28]= OpenSQLConnection[Sin[x]]

Таким образом, вы можете найти возвращаемое значение $Failed и дополнительно также использовать Check[...] для перехвата и обработки сгенерированных сообщений. Как вы уже догадались, вы можете использовать Head[returnvalue], чтобы убедиться, что заголовок возвращаемого значения не равен OpenSQLConnection.

2 голосов
/ 25 марта 2010

Это не совсем ответ на ваш вопрос, но это то, что я делаю, чтобы надежно подключиться к моей базе данных:

Needs["DatabaseLink`"];

CloseSQLConnection[conn];

TimeConstrained[
    conn=OpenSQLConnection[ JDBC["mysql","localhost:3306/mydb"],
                            "Username"->"myuser",
                            "Password"->"mypw"],
    5,
    CloseSQLConnection[conn];
    conn=OpenSQLConnection[ JDBC["mysql","localhost:3306/mydb"],
                            "Username"->"myuser",
                            "Password"->"mypw"]
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...