Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Заблокирован
1

Зачем закрытие и открытие?

07.11.2015, 11:14. Показов 1226. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
читаю FAQ, объясните мне пожалуйста зачем в 58 строке подключение закрывается и в 62 создаются по новой с той же строкой и в 64 открывается?

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using System.Data.SqlClient;
using System.Data;
using System.Threading;
 
namespace Students
{
    class Program
    {
        static void Main(string[] args)
        {
            /*Объявляем строковую переменную и записываем в нее
             строку подключения 
             Data Source - имя сервера, по стандарту (local)\SQLEXPRESS
             Initial Catalog - имя БД 
             Integrated Security=-параметры безопасности
             Мое подключение имеет вид
             */
            string connStr = @"Data Source=(local)\SQLEXPRESS;
                            Initial Catalog=Test;
                            Integrated Security=True";
            /*Здесь указал имя БД(хотя для создания БД его указывать не нужно)
              для того, чтобы проверить, может данная БД уже создана
            Создаем экземпляр класса  SqlConnection по имени conn
            и передаем конструктору этого класса, строку подключения
             */
            SqlConnection conn = new SqlConnection(connStr);
            try
            {
                //пробуем подключится
                conn.Open();
            }
            catch (SqlException se)
            {
                // Если база не обнаружена, то создаем новую
                if (se.Number == 4060)
                {
                    Console.WriteLine("Подождите, идет создание БД");
                    //закрываем соединение
                    conn.Close();
                    //переопределяем обьект conn, и передаем новую строку подключения
                    conn = new SqlConnection(@"Data Source=(local)\SQLEXPRESS;Integrated Security=True");
                    /*Создаем экземпляр класса  SqlCommand по имени cmdCreateDataBase
                     и передаем конструктору этого класса, запрос на создание БД
                     и объект типа SqlConnection
                      */
                    SqlCommand cmdCreateDataBase = new SqlCommand(string.Format("CREATE DATABASE [{0}]", "Test"), conn);
                    //открываем подключение
                    conn.Open();
                    /*Посылаем запрос к СУБД
                     В данном случае, в результате запроса ничего не возврашается
                     ExecuteNonQuery, в последующих примерах мы будем использовать
                     и другие методы
                     */
                    Console.WriteLine("Посылаем запрос");
                    cmdCreateDataBase.ExecuteNonQuery();
                    //закрываем подключение
                    conn.Close();
                    //задержка, нужна для того, чтоб БД успела создаться
                    Thread.Sleep(5000);
                    //переопределяем обьект conn, и передаем новую строку подключения
                    conn = new SqlConnection(connStr);
                    //открываем подключение
                    conn.Open();
                }
            }
            finally
            {
                Console.WriteLine("Соедение успешно произведено");
                conn.Close();
                conn.Dispose();
            }
 
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2015, 11:14
Ответы с готовыми решениями:

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

Открытие и закрытие
Подскажите как реализовать открытие MonthCalendar (visible) при килке на lable. И если же опять...

Открытие,закрытие { }
Ребятки кто может рассказать как правильно определить,где нужно открывать массив{ и закрывать его}...

Открытие/Закрытие CD дисковода на C++
#include <iostream> #include <Windows.h> #include <mmsystem.h> #include <tchar.h> #define...

6
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,662
Записей в блоге: 14
07.11.2015, 11:17 2
Ответ в строке 35.
0
Заблокирован
07.11.2015, 11:22  [ТС] 3
Цитата Сообщение от Rius Посмотреть сообщение
Ответ в строке 35.
не вижу ответа

Добавлено через 1 минуту
разве бд создается не при вызове метода Open?
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,662
Записей в блоге: 14
07.11.2015, 11:24 4
Особенностей SQLEXPRESS не знаю, но старое нерабочее (из-за отсутствия БД) закрывается, открывается новое для её создания, БД создаётся, временное подключение заменяется на рабочее.
0
Заблокирован
07.11.2015, 11:33  [ТС] 5
Цитата Сообщение от Rius Посмотреть сообщение
Особенностей SQLEXPRESS не знаю, но старое нерабочее (из-за отсутствия БД) закрывается, открывается новое для её создания, БД создаётся, временное подключение заменяется на рабочее.
я еще раз повторяю разве бд создается не при вызове Open? зачем еще раз его закрывать и открывать? по моему бд должна создаться уже в 49 строке

Добавлено через 6 минут
даже точнее не так, пусть даже она создается при вызове Close, но почему тогда при повторном создании подключения в 62 строке не задается другая строка? (оригинальная с указанием Initial Catalog)
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,662
Записей в блоге: 14
07.11.2015, 12:07 6
Лучший ответ Сообщение было отмечено Volrajas как решение

Решение

БД создаётся командой cmdCreateDataBase.ExecuteNonQuery(), а не в Open или Close.

В 62 строке задаётся именно оригинальная строка, с которой программа и должна была работать с самого начала, будь БД в наличии.
1
Заблокирован
07.11.2015, 12:27  [ТС] 7
Rius, все понял спасибо
0
07.11.2015, 12:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2015, 12:27
Помогаю со студенческими работами здесь

Открытие и закрытие панели
Привет всем, можно ли открывать и закрывать панель одной клавишей клавиатуры? К примеру как в gta...

Открытие/закрытие div
Подскажите пожалуйста как открыть/закрыть div при клике т.е. при нажатии Вопрос 1 появляется текст...

Открытие/закрытие CD-ROM
при нажатии 1 открывается привод, а как сделать, чтобы программа не заканчивала после этого работу,...

Открытие и Закрытие дисковода.
Вот такой у меня код #pragma comment(lib,"winmm.lib") #include <iostream> #include <mmsystem.h>...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru