Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверить есть ли такие данные в BD 
:(
    Опции темы
Entwickler
Дата 10.3.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 14.4.2007

Репутация: нет
Всего: 2



Привет всем!!!
хочу просто проверить есть ли такие данные в Базе... то есть что то типа проверка login и pwd... 
Код

SqlCommand cmd = new SqlCommand("SELECT [mnummer] FROM [university].[dbo].[studenten_login] WHERE [login] ='" + TextBox1.Text +
            "' AND [pwd] ='" + TextBox2.Text + "'");

если всё в порядке, то устанавливаю Cookies и перенаправляюсь на "внутриннею" страницу... если же нет такой комбинации, то WARNING соответствующий...
PM MAIL   Вверх
azesmcar
Дата 10.3.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Код

string sql = string.Format("SELECT count(*) AS no FROM [university].[dbo].[studenten_login] WHERE [login] = '{1}' AND [pwd]='{2}'", TextBox1.Text, TextBox2.Text);
SqlCommand cmd = new SqlCommand( sql );


запускай, смотри если no - 0, значит нет такой комбинации, если нет - значит есть!
PM   Вверх
Entwickler
Дата 10.3.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 14.4.2007

Репутация: нет
Всего: 2



круто...  smile я просто не хотел бы грузить данные в DataTable... или без этого никак... а как можно проверить DataTable на "пустоту" или нет... и что будет возвращено мне -1 или null если нет такой комбинации...
PM MAIL   Вверх
azesmcar
Дата 10.3.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Цитата

круто...  smile я просто не хотел бы грузить данные в DataTable... или без этого никак... 


а кто говорит грузи в DataTable, в классе SqlCommand есть фунцкия ExecuteScalar, возвращает первую колонку, первой строки..

Код

string sql = string.Format("SELECT count(*) AS no FROM [university].[dbo].[studenten_login] WHERE [login] = '{1}' AND [pwd]='{2}'", TextBox1.Text, TextBox2.Text);
SqlCommand cmd = new SqlCommand( sql );
object ret = cmd.ExecuteScalar();
if (ret is int && (ret as int) == 1)
//   OK!
else
//   не совсем ОК! :)
   

PM   Вверх
Rififi
Дата 10.3.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: нет
Всего: 36



azesmcar
Код
object ret = cmd.ExecuteScalar();
if (ret is int && (ret as int) == 1)


Сие работает неправильно, когда фунция count возвращает не int 
Лучше так

int ret = Convert.ToInt32(cmd.ExecuteScalar());
PM MAIL   Вверх
Entwickler
Дата 10.3.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 14.4.2007

Репутация: нет
Всего: 2



сейчас посмотрю... 
PM MAIL   Вверх
azesmcar
Дата 10.3.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Цитата

Сие работает неправильно, когда фунция count возвращает не int


 smile а что еще может вернуть функция count???

Цитата

int ret = Convert.ToInt32(cmd.ExecuteScalar()); 

хотя можно и так конечно

Это сообщение отредактировал(а) azesmcar - 10.3.2009, 16:15
PM   Вверх
Rififi
Дата 10.3.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: нет
Всего: 36



azesmcar
а что еще может вернуть функция count???
в mysql long, например.

PM MAIL   Вверх
azesmcar
Дата 10.3.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Цитата

в mysql long, например.


ну это MSSQL, я в том направлении думал..но для универсальности не помешает твой вариант smile
PM   Вверх
jonie
Дата 10.3.2009, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



написать хранимку и если чего не так сделать RAISE EXCEPTION (говоря про mssql) ....
код ОЧЕНЬ плохой - вас сломает даже студент-первокурсник с такими явными SQL Injection-ами...

а еще можно тупо попробывать проинсертить и получить Primary Key Violation... ))


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.