Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2012, 16:24   #1
-INFERNO-
 
Регистрация: 24.04.2012
Сообщений: 6
Вопрос SQL запрос к подключенной БД.

Создал БД на SQL server, подключил к проекту как источник данных. Создал на форме таблицу. Как к этой таблице выполнить SQL запрос, например по нажатию кнопки?
-INFERNO- вне форума Ответить с цитированием
Старый 16.05.2012, 16:43   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Код:
using (SqlConnection connection = new SqlConnection(_connectionPath))
            {
                string queryString = "SELECT * FROM Clients WHERE Id=\'" + id + "\';";
                SqlCommand command = new SqlCommand(queryString, connection);
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();

                try
                {

                }
                catch
                {
                }
                finally
                {
                    reader.Close();
                }
            }
Либо Linqtosql
dampirik вне форума Ответить с цитированием
Старый 16.05.2012, 17:08   #3
-INFERNO-
 
Регистрация: 24.04.2012
Сообщений: 6
По умолчанию

А путь, что собой должен представлять?
-INFERNO- вне форума Ответить с цитированием
Старый 16.05.2012, 19:55   #4
Гаврилов
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 85
По умолчанию

Прежде, чем делать запросы к БД, надо почитать что-нибудь о базах данных. Во всех источниках в самом начале Вы можете найти, что первое, что надо сделать - это установить связь с БД при помощи строки соединения, например:

string _connectionPath =
"Data Source=" + serverName +
"; Database=" + dbName +
"; User Id=" + dbUserName +
"; Password=" + dbUserPass +
"; Connect Timeout=15; CharSet=cp1251";

И уж затем делать то, что написал damprink, подставив этот _connectionPath.

"Путь" указывается в "Data Source" (иногда это называется "Server", "Srv" и т.д.). Кстати, serverName может содержать IP-адрес сервера, а не только сетевое имя. Если база находится на том же компе, то обычно указывают "localhost" или просто точку: "."

Лучше не делать этого в цикле using, т.к. при выходе из него соединение будет разорвано. Вместо этого после одного или серии запросов закрывать соединение: connection.Close() А перед новым запросом открывать его: connection.Open() При этом соединение не разрывается. Это работает гораздо быстрее, чем каждый раз восстанавливать соединение. Но надо не забыть при выходе из приложения и/или по таймауту делать следующее:

if ( connection != null ) connection.Dispose();
Гаврилов вне форума Ответить с цитированием
Старый 16.05.2012, 20:58   #5
-INFERNO-
 
Регистрация: 24.04.2012
Сообщений: 6
По умолчанию

У меня идет проверка подлинности windows, т.е. логин и пас не ввожу, просто убрать их?
Название сервера у меня выглядит так: USER\SQLEXPRESS
Ругается на "\"
И если просто без слэша попробовать, пишет что "srv, db" и т.п. не существует в контексте, их как-то инициализировать надо?

Последний раз редактировалось -INFERNO-; 16.05.2012 в 21:09.
-INFERNO- вне форума Ответить с цитированием
Старый 16.05.2012, 22:38   #6
Гаврилов
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 85
По умолчанию

После слэша в строке должен быть управляющий символ. Например, "\n" - переход на следующую строку. "S" не является управляющим символом, поэтому компилятор и ругается. Введите двойной слэш: "USER\\SQLEXPRESS" - тогда компилятор воспримет два слэша как один.
Логин и пассворд можно не вводить, только если так настроена СУБД при инсталляции (и то, по-моему, хотя бы один логин без пассворда должен быть).
Давно я не работал с SQL Server, да ещё EXPRESS. Поэтому не помню точно, в случае анонимного пользователя в строке соединения вообще не надо указывать User Id (или User, Username) и Password, или указать их пустыми:

"...; User=; Password=;..."

Попробуйте и так, и эдак.

А ещё лучше - почитайте книжку или найдите учебный курс в интернете. Без этого Вы всё равно не обойдётесь. У вас ещё будет столько вопросов, что на них на все не ответит никто.
Гаврилов вне форума Ответить с цитированием
Старый 17.05.2012, 16:44   #7
-INFERNO-
 
Регистрация: 24.04.2012
Сообщений: 6
По умолчанию

Спасибо.
Вот так подключилось без исключений:
Код:
string _connectionPath = 
"Data Source=USER\\SQLEXPRESS;Initial Catalog=db;Integrated Security=SSPI;";
Гаврилов, не подскажете книгу, где описана работа c источниками данных(SQL) в VS?

Мне нужно сделать автоинкремент.
Проверил опцию на сервере, все работает, но добавляется только при использовании запроса INSERT через подключение:

Код:
 string queryString = "INSERT INTO [dbo].[table] ([name],[cod])VALUES('?','?')"
? - как сделать чтобы значения сюда, передавались из текстбокса?

Последний раз редактировалось -INFERNO-; 17.05.2012 в 23:34.
-INFERNO- вне форума Ответить с цитированием
Старый 18.05.2012, 13:22   #8
Гаврилов
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 85
По умолчанию

У меня несколько таких книг (не обязательно с MS SQL Server), но они все старые, их может уже не быть в продаже, да в них и нет новостей типа AJAX и LINQ. Лучшие из них (разной степени паршивости, но лучше тогда не было):
1) "Программирование для Microsoft .NET", Джеф Просиз - фундаментальная и дорогая.
2) "Программирование на C#", Джесс Либерти - некоторые вопросы рассмотрены подробно, другие совсем отсутствуют.
3) "Визуальное проектирование приложений C#", Фролов А.В., Фролов Г.В. - упор сделан на применение средств автоматизации, существующих в VC.
4) "Visual Studio .NET - разработка приложений баз данных", Анатолий Постолит - эта, пожалуй, лучше других подходит к Вашим проблемам.

Лучше сходите на страничку Библио-Глобуса или закиньте в инет общий запрос типа "книги по SQL в Visual Studio".
Во многих случаях помогает документация MSDN (с русским языком), встроенного в help VC, доступ к которой осуществляется по клавише F1 (Microsoft Document Explorer). MSDN в полном варианте можно найти в инете и инсталлировать себе добавочно.
Успехов!
Гаврилов вне форума Ответить с цитированием
Старый 18.05.2012, 19:48   #9
emdroof
Пользователь
 
Аватар для emdroof
 
Регистрация: 11.04.2011
Сообщений: 46
По умолчанию

создаешь хранимую процедуру, в которой пишешь sql запрос и вызываешь её из клиентской части! Делается это так:

Код:
private void button8_Click(object sender, EventArgs e)
        {
            using (System.Data.SqlClient.SqlConnection myConn = new System.Data.SqlClient.SqlConnection(@"ваше подключение"))
                                                   
	{
 myConn.Open();
	 System.Data.SqlClient.SqlCommand myCmd = new System.Data.SqlClient.SqlCommand();
	 myCmd.Connection = myConn;
	 myCmd.CommandType = CommandType.StoredProcedure;
	 myCmd.CommandText = "имя вашей процедуры";
	 System.Data.SqlClient.SqlDataAdapter DA = new System.Data.SqlClient.SqlDataAdapter(myCmd);
	 DataTable DT = new DataTable();
	 DA.Fill(DT);
	 dataGridView1.DataSource = DT;
          
	}
                }
строку с подключением легко найти в студии. Нажимаешь на свою бд и справа в студии из поля connection string копируешь всю строку во внутрь кавычек, и все будет работать
emdroof вне форума Ответить с цитированием
Старый 21.05.2012, 21:44   #10
Гаврилов
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 85
По умолчанию

... и запросившему помощи надо на минуточку изучить, как пишутся процедуры, а для этого надо выучить Transact-SQL, кроме общего языка запросов SQL. Я сам почти всегда пользуюсь хранимыми процедурами и считаю это правильным, но для начинающего это двойная нагрузка. Пусть начинает с передачи серверу ТЕКСТОВОГО SQL-запроса: так, по крайней мере, ему не надо будет сразу углубляться в написание процедур БД и изучатьTransact-SQL или процедурный язык другой СУБД.

myCmd.CommandType = CommandType.Text;

И надо прибавить, что приведённый пример - далеко не единственный метод запроса сервера БД. Всё-таки, надо сначала хоть одну, хоть плохую книжку, но прочитать.

Последний раз редактировалось Гаврилов; 21.05.2012 в 21:53.
Гаврилов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
Перехват движения мыши, подключенной к заданному порту. Mixasik Общие вопросы Delphi 5 28.12.2008 18:47
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15