2015-06-10 2 views
0

Я попытался проверить, подключено ли мое приложение к локальной базе данных. Я не получаю никаких ошибок, поэтому не мог понять, почему он не работает. Я получаю вывод «без связи». Я попытался отладить его, но получил connection = null. У меня есть SQL Server 2008 R2 (смешанная аутентификация) и Visual Studio 2008 sp1. Я попытался подключиться, используя как проверку подлинности Windows, так и SQL Server, но не работал.Подключение к SQL Server 2008 R2 не работает

Это мой web.config файл.

<connectionStrings> 
    <add name="MyDbConn" 
     connectionString="Data Source=local;Initial Catalog=Sample;Integrated Security=True;" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Default.aspx.cs

public partial class _Default: System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
    protected void btnTestDb_Click(object sender, EventArgs e) 
    { 
     try { 
      SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=Sample; Integrated Security=SSPI"); 
      connection.Open(); 
      if (connection != null && connection.State == ConnectionState.Closed) { 
       Response.Write("Connection OK!"); 
       connection.Close(); 
      } else { 
       Response.Write("No Connection!"); 
      } 
     } catch { 
      Response.Write("No Connection!"); 
     } 
    } 
} 
+1

Не работает немного бесполезно. Вместо этого попытайтесь изменить свой catch-заголовок значимым сообщением об ошибке, например 'catch (Exception ex) {Response.Write (ex.Message);}', а затем сообщить точное сообщение об ошибке – Steve

+1

Также логика вашего if неверна. Если у вас открыто соединение, вы не печатаете «Нет соединения» – Steve

+0

У меня нет ошибок, вот в чем проблема. действительно не в состоянии получить какое-либо исключение. – user3399326

ответ

0

У вас есть какие-то проблемы в вашем коде, который пытается открыть соединение.

При попытке вызвать connection.Open, результат является исключением, если у вас есть проблемы или просто соединение с ConnectionState = Open.
Ваш код вместо этого дает сообщение «Connection OK», если ConnectionState закрыт, но, конечно, только что вызвал Open, и если у вас нет проблем, то ConnectionState будет открыт.

Вы можете попробовать этот код ....

protected void btnTestDb_Click(object sender, EventArgs e) 
{ 
    string result = TestConnection(); 
    Response.Write(result); 
} 
private string TestConnection() 
{ 
    try 
    { 
     using(SqlConnection connection = new SqlConnection("....")) 
     { 
      connection.Open(); 
      return "Connection opened correctly"; 
     } 
    } 
    catch(Exception ex) 
    { 
     return "Error opening the connection:" + ex.Message; 
    } 
} 
+0

Я получаю ту же ошибку, что и до того, как Ошибка открытия соединения: Формат строки инициализации не соответствует спецификации, начинающейся с индекса 0 . – user3399326

+0

Это сообщение об ошибке означает, что ConnectionString неверно, но я не вижу ошибки в этой строке. (Предположим, что у вас есть сервер Sql, установленный на вашей локальной машине и с образцом базы данных) – Steve

+0

Кстати, обратите внимание, что в конфигурационном файле строка подключения неверна: локальная должна быть между скобками. Однако образец кода не использует эту строку в конфиге файла, поэтому я понятия не имею, почему вы получаете эту ошибку. – Steve

0

Письменное ado.net код открывает соединение наверняка, но я сомневаюсь, что строка подключения будет делать. Выберите подходящий connectionstring от this dedicated site.

2
//Try this 
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDbConn"].ToString()); 

protected void btnTestDb_Click(object sender, EventArgs e) 
{ 
    try { 
     con.Open(); 
     if (con.State == ConnectionState.Open) 
     { 
      Response.Write("Connection Open"); 
     } 
     else 
     { 
      Response.Write("Connection Closed"); 
     } 
     con.Close(); 
    } catch { 
     Response.Write("No Connection!"); 
    } 
} 
+0

Используйте это пространство имен ... используя System.Data.Sql; с использованием System.Data.SqlClient; с использованием System.Collections; с использованием System.Configuration; –

+0

Если вы используете «аутентификацию SQL Server» вместо «Integrated Security = True»; просто передайте «uid = zzz» и «password = zzz» в webconfig .. –

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