2009-05-28 8 views
0

Моя проблема связана с проверкой наличия у меня действительного подключения к базе данных перед чтением из базы данных. Если база данных не работает, я бы хотел записать ее в xml-файл. У меня есть местоположение базы данных (если она есть) во время выполнения, поэтому, если база данных работает, я могу создать для нее новый sqlConnection.Проверка наличия базы данных?

ответ

2

Используйте типичную структуру try ... catch ... finally и на основе конкретного типа исключения и сообщения, решите, хотите ли вы писать в xml или нет.

try 
{ 
SqlConnection connection = new SqlConnection(DB("Your DB Name")); 
connection.Open(); 
} 
catch (Exception ex) 
{ 
// check the exception message here, if it's telling you that the db is not available. then 
//write to xml file. 
    WriteToXml(); 
} 
finally 
{ 
    connection.Close(); 
} 
0

Вы не можете сказать, работает ли БД и не работает, фактически не открывая соединение с ней. Но все же соединение может быть отключено во время работы с ним, поэтому это нужно учитывать.

2

Я просто хотел бы использовать что-то вроде:

использованием (SqlConnection Conn = новый SqlConnection (с)) { conn.Open(); }

Он отправит исключение, если оно недействительно. Вы можете написать xml в исключении.

2

Простой способ будет выполнить простой запрос и посмотреть, если возникает ошибка:

Oracle:

SELECT * FROM DUAL 

Для SQL Server

SELECT 1 

Основном просто какая-то относительно «свободный» запрос, который позволит вам знать, что база данных запущена и отвечает на запросы, и ваше соединение не было отключено.

+0

+1 - Недостаточно открыть соединение, потому что, если вы объединяете соединения, пул может вернуть соединение, которое фактически стало недействительным. Это происходит с нами в наших приложениях C# -> Oracle все время, потому что время соединения TCP/IP истекает, когда пул БД содержит то, что отображается как активное соединение. –

Смежные вопросы