2010-05-22 6 views
2

Я начинающий кодер, я создаю проект с использованием C# Asp.Net, в котором я регистрирую пользователей с идентификатором пользователя, теперь мой вопрос заключается в том, как проверить, что идентификатор пользователя уже существует в пользовательской таблице или нет, когда пользователь пытается зарегистрироваться, я использую SQL Server 2000?Как проверить идентификатор пользователя уже существует

+0

Какие технологии вы используете для доступа к базе данных? –

+0

Я использую ado.net – Sheery

+0

Привет, я использую это, но он дает ошибку CS0103: Имя «User_id» не существует в текущем контексте. мой пример кода такой, что con = new SqlConnection ("server = NEW-80DF4B540E3; database = Cv_Manage; uid = sa; pwd = micron"); cmd = new SqlCommand ("select * from tbl_userlogin где User_id = имя пользователя.text ", con); if (username.Text == User_id) { MessageBox.Show (« Идентификатор пользователя уже существует »); } – Sheery

ответ

10

Основываясь на коде в вашем комментарии, я бы сказал, что вам нужен хороший вводный учебник о том, как запрашивать данные с помощью ADO.NET, если кто-то может порекомендовать его.

Прежде всего, вы не можете просто использовать «username.Text» в своем запросе, SQL Server ничего не знает о вашей странице ASP.NET, и это «имя пользователя» TextBox.

Вам необходимо передать параметр в ваш SqlCommand (не никогда построить строку типа «выберите * из tbl_userlogin где user_id =» + username.Text, Google для «SQL Injection атаки», если вы хотите знать, почему), как это:

SqlCommand cmd = new SqlCommand("select * from tbl_userlogin where User_id = @UserID", con); 
    SqlParameter param = new SqlParameter(); 
    param.ParameterName = "@UserID"; 
    param.Value = username.Text; 
    cmd.Parameters.Add(param); 

Тогда вам нужно на самом деле выполнить команду и получить SqlDataReader назад от него. Вы не можете просто ссылаться на поля из базы данных вашего кода на C#, поэтому вы получаете ошибку компиляции CS0103.

SqlDataReader reader = cmd.ExecuteReader(); 

Теперь ваш SqlDataReader имеет результаты запроса. Поскольку все, о чем вы заботитесь, это то, нашли или нет, вы можете использовать свойство HasRows, чтобы проверить, не вернули ли что-либо.

if (reader.HasRows) 
    { 
     MessageBox.Show("User Id already exists"); 
    } 

Читайте на SqlDataReader - http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx - чтобы узнать, как на самом деле получить доступ к результатам, если вам нужно.

3

Вы можете просто запросить пользователя из базы данных:

select * from User where user_id=<new-input-id> 

Если есть какие-либо записи, это означает, что пользователь берется, и если нет, то вы можете вставить его в таблицу.

+0

Привет, я использую это, но он дает ошибку CS0103: User_id 'не существует в текущем контексте. Мой пример кода такой: con = new SqlConnection ("server = NEW-80DF4B540E3; database = Cv_Manage; uid = sa; pwd = micron"); cmd = new SqlCommand ("select * from tbl_userlogin where User_id = username.text ", con); if (username.Text == User_id) {MessageBox.Show (« Идентификатор пользователя уже существует »);} – Sheery

+0

у вас отсутствуют некоторые основы: запустили ли вы запрос и проверить, правильно ли это? Запрос - выберите * из tbl_userlogin, где User_id = 'username.text', и ваш User_id объявлен в вашем коде? –

+0

User_id i s поле базы данных таблицы tbl_userlogin, где as username - текстовое поле, в котором пользователь вводит значение – Sheery

0

Его так просто. сначала вы пытаетесь получить (выбрать) запись желаемого пользователя.

`Select * from UserTable where userId = <your-input-userid>` 

Если оно возвращает какую-либо запись, значит, оно означает, что пользователь уже существует.
Если запись не возвращается, ее означает, что тот же идентификатор пользователя еще не существует, и вы используете этот идентификатор пользователя для нового пользователя.

Смежные вопросы