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

Создание dll для связи бд с API

06.02.2015, 10:19. Показов 8468. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!Надо написать dll для связи БД c формой скажем так, единственное что я знаю это подключение к SQL базе с помощью Connection(сделал по примеру). А вот что делать дальше,я не знаю. Подскажите пожалуйста что дальше делать, у кого есть опыт в написании таких программ
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Data.SqlClient;
using System.Data;
 
namespace Connection
{
    class Program
    {
        static void Main(string[] args)
        { string connStr = @"Data Source=(local)\SQLEXPRESS;  Initial Catalog=Northwind; Integrated Security=True";
            SqlConnection conn = new SqlConnection(connStr);
            try
            {
                conn.Open();
            }
            catch (SqlException se)
            {
                Console.WriteLine("Ошибка подключения:{0}", se.Message);
                return;
            }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2015, 10:19
Ответы с готовыми решениями:

Api для связи сайта с android приложением
Существует андроид приложение, в котором хранится информация о пользователе. В приложении генерируется код. Код вводится на сайте и сайт...

[iFIX] Изменить флаг внутри iFIX (dll-ка для связи c iFIX)
Появилась необходимость "воздействовать" на IFix из сторонних программ. Например, взвести какой-нибудь глобальный флаг. Слышал, что для...

Создать DLL-ку для связи 1С с сайтом
Вроде на среднем уровне пишу на QT, но никогда не имел дело с созданием DLL-ок. Сейчас встала следующая задача: Нужно написать дллку,...

60
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
18.02.2015, 00:25  [ТС]
Студворк — интернет-сервис помощи студентам
Если написать ExecuteNonQuery() ,выдает ошибку Error 1 The name 'ExecuteNonQuery' does not exist in the current context

Добавлено через 14 минут
исправил в DLL , теперь DLL комп-ся ,но теперь ошибка при вызове метода
C#
1
2
3
4
5
public void Main(string[] args)
            {
 
                InsertUser("Stan", 123456, 2);
            }
Error 1 The name 'InsertUser' does not exist in the current context

Добавлено через 19 минут
Исправил
C#
1
2
3
4
5
 public static void Main(string[] args)
            {
                var dbc = new DBCommands();
                dbc.InsertUser("Stan", 123456, 2);
            }
Теперь выдает ошибку в длл
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll

Additional information: ExecuteNonQuery: Свойство Connection не инициализировано.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
18.02.2015, 00:57
Цитата Сообщение от Impossible333 Посмотреть сообщение
ExecuteNonQuery: Свойство Connection не инициализировано
Все правильно. Вы соединение не забыли открыть случаем?
0
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
18.02.2015, 01:28  [ТС]
А как и где его открывать?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
18.02.2015, 01:56
Цитата Сообщение от Impossible333 Посмотреть сообщение
А как и где его открывать?
Это ваш код, кому как не вам это следует знать.
1
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
18.02.2015, 10:54  [ТС]
Что-то я ничего не понимаю, пытаюсь перед вызовом функции открыть подключение conn.Open(), но ошибка всё равно осталась
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
18.02.2015, 11:53
Цитата Сообщение от Impossible333 Посмотреть сообщение
открыть подключение conn.Open()
А создавать, перед тем, как открыть, не пробовали? Вы же даже методы создали для открытия и зарытыия подключения ...
C#
1
2
3
4
DBCommands dbc = new DBCommands();
dbc.OpenConnection(string.Empty); // У вас строка подключения задается внутри метода, но сюда зачем то нужно что то передавать. Передаю пустую строку.
dbc.InsertUser("Stan", 123456, 2);
dbc.CloseConnection();
1
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
18.02.2015, 13:02  [ТС]
(А сюда dbc.OpenConnection(string.Empty, надо что-то оправлять? )Благодарю, но теперь подключаться не хочет Additional information: Не удается открыть базу данных "Obuchen", запрашиваемую именем входа. Не удалось выполнить вход.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
18.02.2015, 13:59
Цитата Сообщение от Impossible333
(А сюда dbc.OpenConnection(string.Empty, надо что-то оправлять? )
Раз параметр есть, значит надо. Но у вас параметр бессмысленный, так как сразу же получает в методе другое значение.
Цитата Сообщение от Impossible333
Additional information: Не удается открыть базу данных "Obuchen", запрашиваемую именем входа. Не удалось выполнить вход.
Пока ни разу не встречал, чтобы SQL Server ошибался. Если он пишет, что невозможно открыть базу данных, значит либо ее нет, либо на нее нет прав. В вашем случае более вероятен первый вариант.
1
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
18.02.2015, 19:22  [ТС]
Она есть,я пробовал подключаться к ней создавая подключение без использования dll ,через консоль и всё нормально
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
18.02.2015, 19:34
Impossible333, вот прямо строка подключения в консоли и в библиотеке ни чем не различается? Даже в приведенном вами коде она от примера к примеру меняется. Допустим, вы обращаетесь то к экземпляру (local), то к экземпляру (local)\SQLEXPRESS. И если у вас реально стоят они оба, то на одном может быть база Obuchen, а на другом нет.
1
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
18.02.2015, 19:39  [ТС]
(loacal)\SQLEXPRESS не сработало в консоли, изменил на (local) в консоли так работает
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
18.02.2015, 19:43
Impossible333, используйте в dll ту же строку подключения, что и в консоле.
1
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
20.02.2015, 10:45  [ТС]
Исправил ,но снова ошибка. ВОт такая Incorrect syntax near 'доступа'. с этой строкой cmd.ExecuteNonQuery();
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
20.02.2015, 10:54
Цитата Сообщение от Impossible333 Посмотреть сообщение
такая Incorrect syntax near 'доступа'
Идентификаторы в SQL могут включать пробел, но только, если он обрамлены спец.символами. Замените в ашем запросе Уровень доступа на [Уровень доступа]
1
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
20.02.2015, 13:32  [ТС]
Благодарю, получилось запись добавить в таблицу.

Добавлено через 2 часа 11 минут
Мне нужно написать функцию которая получает имя пользователя и в ответ отправляет сообщение что такой пользователь есть в БД , либо его нет. Как это сделать ? Я неочень понимаю как реализовать эту функцию
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
20.02.2015, 13:53
Лучший ответ Сообщение было отмечено Impossible333 как решение

Решение

C#
1
2
3
4
5
6
7
8
bool HasUser(string UserName)
{
    using(SqlCommand sqlCommand = new SqlCommand("SELECT * FROM Users WHERE Имя_пользователя = @UserName", sqlConnection))
    {
        sqlCommand.Parameters.AddWithValue("@UserName", UserName);
        return sqlCommand.ExecuteReader().HasRows;
    }
}
Подразумевается, что sqlConnection является свойством класса и на момент вызова метода открыт.
1
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
21.02.2015, 10:11  [ТС]
Большое спасибо, а таким же методом можно проверять логин и пароль?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
21.02.2015, 10:42
Impossible333, вам ни чего не мешает добавить в метод и запрос по аналогии второй параметр, в котором будет передаваьься пароль. Только у меня каждый раз, когда я вижу подобный вариант авторизации, возникает вопрос: чем вас всех не устраивает встроенный в MS SQL Server механизм авторизации? И велосипед изобретать не пришлось бы ...
1
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 69
21.02.2015, 11:06  [ТС]
Не очень понял, я плохо лажу с SQL .Не поясните о чем вы?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
21.02.2015, 11:14
Impossible333, если вы начнете разбираться с тем, что можно передать серверу через строку подключения, то увидите, что можно передать логин и пароль. Если пользователь в СУБД заведен и имеет необходимые права, то подключение пройдет успешно, иначе СУБД не даст прдключиться. Подключитесь к СУБД через Management Studio и посмотрите раздел "безопасность", который есть как у БД, так и у сервера. Там вы найдете настройки для заведения пользователей. Если вам это интересно, то Яндекс в помощь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2015, 11:14
Помогаю со студенческими работами здесь

Подключение внешней библиотеки (dll) для работы с внешним API
Добрый день, друзья! Начал недавно изучать C#. Опыта мало. Учусь. Теперь к вопросу: Есть сервис RDS, который по API может...

Компонента (DLL) для работы с ASP, с использованием WinInet API
написал компоненту (DLL) для работы с ASP, с использованием WinInet API, в частности InternetReadFile через месяц, повторного...

Создание связи с ADOQuery для Access
Здравствуйте. У меня связывается Delphi и Access с помощью ADOQuery, ADOConnection, DataSource. В эдиты будут вводится различные...

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

Создание метода для обращения к API
Приветствую, форумчане. Очень нужна ваша помощь : дали мне тестовое задание, в котором из описания метода надо создать простенькую...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru