Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > проверить есть ли такие данные в BD


Автор: Entwickler 10.3.2009, 15:35
Привет всем!!!
хочу просто проверить есть ли такие данные в Базе... то есть что то типа проверка login и pwd... 
Код

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

если всё в порядке, то устанавливаю Cookies и перенаправляюсь на "внутриннею" страницу... если же нет такой комбинации, то WARNING соответствующий...

Автор: azesmcar 10.3.2009, 15:42
Код

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, значит нет такой комбинации, если нет - значит есть!

Автор: Entwickler 10.3.2009, 15:55
круто...  smile я просто не хотел бы грузить данные в DataTable... или без этого никак... а как можно проверить DataTable на "пустоту" или нет... и что будет возвращено мне -1 или null если нет такой комбинации...

Автор: azesmcar 10.3.2009, 16:08
Цитата

круто...  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
//   не совсем ОК! :)
   

Автор: Rififi 10.3.2009, 16:11
azesmcar
Код
object ret = cmd.ExecuteScalar();
if (ret is int && (ret as int) == 1)


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

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

Автор: Entwickler 10.3.2009, 16:13
сейчас посмотрю... 

Автор: azesmcar 10.3.2009, 16:15
Цитата

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


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

Цитата

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

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

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

Автор: azesmcar 10.3.2009, 17:40
Цитата

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


ну это MSSQL, я в том направлении думал..но для универсальности не помешает твой вариант smile

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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)