2010-03-24 3 views

ответ

2

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

Более общо:

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

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

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"] 
]; 
Смежные вопросы