Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 4

Как открыть единый SQLConnection для всего приложения

13.05.2015, 02:07. Показов 4437. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как сделать единый SqlConnection для всего приложения. Дело в том что в приложение реализована авторизация на уровне SQL сервера. При успешной авторизации, отправляет в меню. Проблема в том что на следующую форму SqlConnection не распространяется, а значит любой пользователь имеет права делать с таблицами что угодно.
Когда в отдельной форме создаю ЗАНОВО SqlConnection, всё работает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace test2
{
    public partial class q : Form
    {
        SqlConnection cn = new SqlConnection("Data Source=ЮРИЙ-ПК\\SQLEXPRESS;Initial Catalog=db01;Persist Security Info=True;User ID=user;Password=12345678"); // ЗАНОВО СОЗДАНОЕ ПОДКЛЮЧЕНИЕ, ИМЕННО ПОД ЭТИМ ПОЛЬЗОВАТЕЛМ ПРОХОЖУ АВТОРИЗАЦИЮ(ПОЛЬЗОВАТЕЛЮ ЗАПРЕЩЕНО ВНОСИТЬ ИЗМЕНЕНИЯ)
        public q()
        {
            InitializeComponent();
            
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
                cn.Open();
                SqlCommand cmd = new SqlCommand("INSERT INTO [dbo].[улицы] ([к_улицы], [название]) VALUES ('"+textBox1.Text+"','"+textBox2.Text+"')",[SIZE="7"]cn[/SIZE]);// ЗАПРОС
                cmd.ExecuteNonQuery();
                MessageBox.Show("Добавил!");
                cn.Close();
            
        }
              
    }
}
Необходимо сделать чтобы создавать SqlConnection было не нужно, а была едина переменная. Возможно ли это вообще? Можно ли как нибудь передать уже осуществленный коннект другой форме?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2015, 02:07
Ответы с готовыми решениями:

Как установить локализацию по умолчанию для всего приложения?
Привет! Имею проблемы с отображением дат - они выводятся в формате ММ/DD/YYYY, что меня не устраивает. Пока нашел только одно решение...

Как лучше всего хранить данные для приложения?
Допустим есть статический массив интов,или булов.Как его сохранять(onDestroy()) и подгружать(onCreate), наиболее минимальным кол-вом строк...

Как открыть для приложения только один определенный порт используя Comodo фаервол?
Здравствуйте! Вы не могли бы подсказать- как, используя фаервол Comodo для одного определенного приложения открыть только один определенный...

5
2 / 2 / 1
Регистрация: 05.09.2014
Сообщений: 49
13.05.2015, 02:16
Создайте форму 2 и в ее конструкторе пусть передается 1 параметр типа SQLConnection.
Тогда при вызове из первой формы через конструктор передайте свой SQLConnection во вторую форму.
1
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 4
13.05.2015, 08:01  [ТС]
Не совсем понимаю как передать параметр, буду очень признателен если разъясните
0
27 / 27 / 10
Регистрация: 18.08.2014
Сообщений: 212
13.05.2015, 08:23
keps, создавайте класс со статическими методами и в перед вызывайте с любой формы
1
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 4
16.05.2015, 16:36  [ТС]
Не понимаю как это сделать. Можете объяснить на примере ?

Добавлено через 16 часов 41 минуту
Создал класс со статическим методом, но на сколько я понял в класс со статическими методом можно передавать только статические объекты. Как мне сделать так чтобы в моём примере логин и пароль считывался из Textbox?

При такой записи пишет что элемента нет в текущем контексте
C#
1
2
public static SqlConnection connection = new SqlConnection("Data Source=ЮРИЙ-ПК\\SQLEXPRESS;Initial Catalog=db01;Persist Security Info=True;User ID=" + login.Text + ";Password=" + password.Text;
           // НЕ ЗНАЮ КАК ПЕРЕДАТЬ В СТАТИЧЕСКИЙ КЛАСС  два Textbox login и password
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static class Verbinding
        {
           public static SqlConnection connection = new SqlConnection("Data Source=ЮРИЙ-ПК\\SQLEXPRESS;Initial Catalog=db01;Persist Security Info=True;User ID=keps;Password=1234567");
           //public static SqlConnection connection = new SqlConnection("Data Source=ЮРИЙ-ПК\\SQLEXPRESS;Initial Catalog=db01;Persist Security Info=True;User ID=" + login.Text + ";Password=" + password.Text;
           // НЕ ЗНАЮ КАК ПЕРЕДАТЬ В СТАТИЧЕСКИЙ КЛАСС  два Textbox login и password      
        }
        
        public void button1_Click(object sender, EventArgs e)
        {
            Verbinding.connection.Open();
            if (Verbinding.connection.State == ConnectionState.Open)
            {
                Verbinding.connection.Close();
                q men = new q();
                men.ShowDialog();
            }
Во второй форме вызываю следующим образом, всё работает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 public q()
        {
            InitializeComponent();
            Form1.Verbinding.connection.Open();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            
               // cn.Open();
                SqlCommand cmd = new SqlCommand("INSERT INTO [dbo].[улицы] ([к_улицы], [название]) VALUES ('"+textBox1.Text+"','"+textBox2.Text+"')",Form1.Verbinding.connection);
                cmd.ExecuteNonQuery();
                 MessageBox.Show("Добавил!");
0
27 / 27 / 10
Регистрация: 18.08.2014
Сообщений: 212
18.05.2015, 08:18
Лучший ответ Сообщение было отмечено keps как решение

Решение

Пример класса
C#
1
2
3
4
5
6
7
8
class Worker()
{
    public static void OpenConection(string connection_string)
    {
        SqlConnection connection = new SqlConnection(connection_string);
        connection.Open
    }
}
Вызов метода
C#
1
2
string str=string.Format(@"Data Source=ЮРИЙ-ПК\\SQLEXPRESS;Initial Catalog=db01;Persist Security Info=True;User ID={0};Password={1}",login.Text, password.text);
OpenConection(str);
Но при таком способе нужен будет метод закрытия соединения который будет содержать Dispose() и Close() методы.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2015, 08:18
Помогаю со студенческими работами здесь

Return для всего приложения
В C# есть функция, которая закрывает все приложение? то есть например есть класс MyClass, в котором есть метод exitApp(), после...

Кастомный шрифт для всего приложения
подскажите лучший способ использовать кастомный шрифт для всего приложения.

Свой шрифт для всего приложения
1.Есть приложение на WinForms, с кучей кнопочек и надписей (все сделаны одним шрифтом, который определён в их свойствах, т.е. в дизайнере)....

Установка шрифта для всего приложения
Доброго времени суток. Устанавливаю шрифт для отдельного контрола так: hFont = CreateFont(20, 7, 0, 0, FW_BOLD, FALSE, FALSE, FALSE,...

Установка CultureInfo для всего приложения
Доброго времени суток. Нужно установить для всего приложения дефолтный формат даты "dd.MM.yyyy", дни недели и дни месяца на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru