Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024

Как найти ошибку подключения к бд?

04.05.2016, 08:52. Показов 5714. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подключаюсь на C# к бд SQL Server 2008 R2 Express. Код взял из книги М.Фленова.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
OleDbConnection CreateConnection()
        {
            OleDbConnection connection = new OleDbConnection();
            connection.ConnectionString = @"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=Flenov;Initial Catalog=TestDatabase;Data Source=FLENOV-HP\SQLEXPRESS";
            try
            {
                connection.Open();
            }
            catch
            {
                MessageBox.Show("Ошибка соединения с базой данных");
            }
 
            return connection;
        }
...
Почитав форум понимаю что , функции подключения у разных серверов SQL могут отличаться (в книге написан частный пример). Но какие именно функции в моем случае надо применять? И второе можно ли как то проверить подключение отдельно по каждому параметру при подключении, что бы разобраться какой именно параметр не верный? Или 3е - каким образом обычно проводят отладку подключения к бд SQL?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2016, 08:52
Ответы с готовыми решениями:

PDO (родительский), как подавить ошибку подключения
function __construct( ... ){ try{ $attrs = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT); parent::__construct(... ,...

Как обработать ошибку подключения, если прокси недоступен
Доброй ночи. Допустим я использую метод авторизации, логин, пароль и прокси, при выполнения метода авторизации в потоке с n'нным прокси,...

Отловить ошибку подключения к БД
Здравствуйте. Public CON As New ADODB.Connection Dim RS As New ADODB.Recordset Private Function ОткрытьБД() CON.Open...

12
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
04.05.2016, 15:14
Лучший ответ Сообщение было отмечено седьмой как решение

Решение

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

При желании можно сделать диагностику подключения. Для SQL Server можно проверять имя сервера, имя БД и параметры аутентификации. Сервер можно пропинговать (класс Ping) предварительно убедившись в наличии сетевого подключения (NetworkInterface.GetIsNetworkAvailable()). Параметры аутентификации можно проверить только путем пробного подключения (имя базы можно временно указать master) и смотреть будет ли исключение связанное с неправильным логином. Наконец имя базы данных проверяется путем получения списка БД на сервере (EXEC sp_databases).

P.S. Кстати пример в книге неудачный. Для работы с SQL Server лучше использовать классы из пространства имен System.Data.SqlClient. В данном случае SqlConnection. Смотри код ниже. Заодно я упростил строку подключения.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SqlConnection CreateConnection()
{
    var connection = new SqlConnection();
    connection.ConnectionString = @"Data Source=.\SQLEXPRESS; Initial Catalog=TestDatabase; Integrated Security=SSPI";
    try
    {
        connection.Open();
    }
    catch
    {
        MessageBox.Show("Ошибка соединения с базой данных");
    }
    return connection;
}
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
04.05.2016, 16:00  [ТС]
Спасибо большое, стало значительно понятнее, вот только еще не могу понять где взять этот каталог
C#
1
Initial Catalog=TestDatabase;
, что в нем должно находиться? Или на что он ссылается?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
04.05.2016, 16:07
седьмой, это имя базы данных на сервере.
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
04.05.2016, 17:15  [ТС]
остается эта команда
C#
1
Integrated Security=SSPI;
это пишется если соединение шифруется так? У меня SQL в свойствах пишет что Зашифровано - нет, следовательно мне нужно вместо этого кода прописываать логин и пароль пользователя так? Или не так?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
04.05.2016, 17:32
седьмой, ответ на все три вопроса - нет. Integrated Security=SSPI означает использование windows аутентификации при которой подключение к серверу делается от имени учетной записи под которой запущен процесс. Шифрование передаваемых данных можно включить указав Encrypt=yes. Для этого потребуется предварительная настройка сервера.
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
04.05.2016, 18:15  [ТС]
Спасибо, туплю наверно, но результат продвигается...

Добавлено через 22 минуты
Сейчас ошибку не выдает с Вашим кодом, а как дальше прочитать нужную таблицу до select? После select знаю что делать там все просто, вот как до запроса добраться после подключения sql?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
04.05.2016, 18:19
Цитата Сообщение от седьмой Посмотреть сообщение
а как дальше прочитать нужную таблицу до select?
Цитата Сообщение от седьмой Посмотреть сообщение
вот как до запроса добраться после подключения sql?
Не понимаю о чем ты.
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
04.05.2016, 19:12  [ТС]
Подключение к бд не является конечной целью программы, далее нужно подключить конкретную таблицу из бд и выполнить запрос Select. Так вот начиная с команды Select знаю как и что писать (тупость не полная, а частичная). Не знаю какой код писать что бы обратиться к нужной таблице, подскажите пожалуйста уважаемый OwenGlendower
(еще это пожалуйста и буду счастлив на сегодня.).

Добавлено через 6 минут
наверно как то так?
C#
1
SqlCommand cmd = new SqlCommand("Select * From Students", connection);
?

Добавлено через 37 минут
Нет, ничего не вышло, где тут можно ошибиться?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 private void button1_Click ( object sender, EventArgs e )
        {
          
             SqlConnection connection;       
      
         connection = new SqlConnection ();
         connection. ConnectionString = @"Data Source=.\SQLEXPRESS; Initial Catalog=ATE; Integrated Security=SSPI";
         try
         {
             connection. Open ();
         }
         catch
         {
             MessageBox. Show ("Ошибка соединения с базой данных");
         }
 
         SqlCommand cmd = new SqlCommand ("Select * From IDN", connection);
         try
         {
             MessageBox. Show ("Ошибка чтения таблицы");
         }
         catch
         {
             MessageBox. Show ("Нет ошибки чтения таблицы");
         }
        
         label1. Text  = "все";
         label1. Show ();
        }
теперь бд нормально подключается, а таблица не хочет - выдает ошибку, в чем может быть причина?
Вложения
Тип файла: zip Prob1.zip (52.3 Кб, 7 просмотров)
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
04.05.2016, 21:34
Что за ужос в try/catch для SqlCommand прописан? А для получения результатов нужон либо Ридер, либо адаптер
И так-то вообще г-код какой то. Тщательнее надо (с)
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
04.05.2016, 23:39  [ТС]
pincetВы если критикуете, так пишите как по вашему правильно, а об.срать других и не предложив нечего взамен легче простого, так вы зарабатываете себе очки на форуме?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
05.05.2016, 00:06
седьмой, как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DataTable table;
using (SqlConnection connection = new SqlConnection())
{
    connection.ConnectionString = @"Data Source=.\SQLEXPRESS; Initial Catalog=ATE; Integrated Security=SSPI";
    try
    {
        connection. Open ();
    }
    catch
    {
        MessageBox.Show("Ошибка соединения с базой данных");
        return;
    }
    
    SqlCommand cmd = new SqlCommand ("Select * From IDN", connection);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    
    try
    {
        adapter.Fill(ds);
        MessageBox.Show("Нет ошибки чтения таблицы");
    }
    catch
    {
        MessageBox.Show("Ошибка чтения таблицы");
        return;
    }    
    
    table = ds.Tables[0];
}
 
// Работа с данными в table
...
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
05.05.2016, 06:53  [ТС]
Спасибо огромное OwenGlendower , Вы настоящий Модератор!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.05.2016, 06:53
Помогаю со студенческими работами здесь

Словить ошибку подключения SQLConnection
Похожего не нашел, так что вопрос: Подключаюсь к базе MySQL с помощью TSQLConnection. Как словить ошибку при подключении и вывести?

Отследить ошибку подключения модуля
Здравствуйте! Использую в своей программе MySQL Connector. Если использую программу на компьютере где не установлен коннектор, то...

Найти отношение энергии системы до подключения дополнительных конденсаторов к энергии после подключения
На конденсаторе емкостью С находится заряд q. К нему параллельно подключают два таких же, но незаряженных конденсатора. В результате три...

Выдать ошибку при отсутсвии сетевого подключения
Здравствуйте. Подскажите, как выдать ошибку если отсутствует связь с удаленным компьютером? например, при копировании файла в...

При подключении к SQL Server выдает ошибку подключения
Раньше заходил в диспетчер и запускал там сейчас выдает ошибку


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru