Поиск: |
|
23.12.2009, 06:15 | Вверх #1 |
Близкий Знакомый
Возраст: 43 Регистрация: 27.01.2006
Был(а) у нас: 11.01.2016 12:20
Сообщений: 225
Пол:
|
вопрос в мастерам ADO.NET
Люди, хелп...
Код:
try { conn.Open(); SqlDataReader readit = cmd.ExecuteReader(); if (readit.HasRows) { theUser = new User((Int64)readit[0], readit[1].ToString(), readit[2].ToString(), readit[3].ToString(), readit[4].ToString(), (Int32)readit[5]); } readit.Close(); } catch (System.Exception ex) { JobInfoIl.Tools.SetErrorMessagesForUser(ex.Message); } finally { if (conn.State != ConnectionState.Closed) conn.Close(); } Недопустимая попытка чтения при отсутствии данных. Но при дебаге я вижу что в readit все данные которые должны поступать с базы данных. |
23.12.2009, 06:53 | Вверх #2 |
Красавчик форума
Возраст: 42 Регистрация: 23.09.2003
Был(а) у нас: 01.11.2011 07:05
Сообщений: 22,253
Пол:
|
Vegas, перенеси readit.Close(); в конец, после conn.Close();
И лучше используй не readit[индекс].ToString(), а названия колонок. К примеру, readit["productID"].ToString(), readit["productName"].ToString() и.т.п. |
Кто ищет, тот найдёт. Кто не ищет, того найдут.. (с)
|
|
23.12.2009, 07:38 | Вверх #5 |
Близкий Знакомый
Возраст: 43 Регистрация: 27.01.2006
Был(а) у нас: 11.01.2016 12:20
Сообщений: 225
Пол:
|
Это с даталеера метод
Код:
public static JobInfoIl.User UserLogin(string UserNick, string UserPassword) { JobInfoIl.User theUser = null; JobInfoIl.Tools.SetErrorMessagesForUser(string.Empty); //theUser.DataBaseError = string.Empty; cmd.Parameters.Clear(); cmd.CommandText = "UserLogin"; SqlParameter pUserName = new SqlParameter("@UserNick", UserNick); cmd.Parameters.Add(pUserName); SqlParameter pUserPassword = new SqlParameter("@UserPassword", UserPassword); cmd.Parameters.Add(pUserPassword); try { conn.Open(); SqlDataReader readit = cmd.ExecuteReader(); if (readit.HasRows) { theUser = new User((Int64)readit[0], readit[1].ToString(), readit[2].ToString(), readit[3].ToString(), readit[4].ToString(), (Int32)readit[5]); } readit.Close(); } catch (System.Exception ex) { JobInfoIl.Tools.SetErrorMessagesForUser(ex.Message); } finally { if (conn.State != ConnectionState.Closed) conn.Close(); } return theUser; } (не могу сделать скрин с подсказаками VS2008) предедущий метод брал только ID пользователя Result = Convert.ToInt32(cmd.ExecuteScalar()); Это работает. Теперь надо загнать несколько полей в класс. Код:
public class User { //protected string database_error = string.Empty; //public string DataBaseError //{ // set // { // database_error = value; // } // get // { // return database_error; // } //} private Int64 userId = 0; private string userNick = ""; private string userFirstName = ""; private string userLastName = ""; private string userEmail = ""; private int userAdminStatus = 0; //тут еще свойства, я их убрал чтоб не расстягивать пост. public User(Int64 User_Id, string User_Nick, string User_FirstName, string User_LastName, string User_Email, int User_AdminStatus) { this.userId = User_Id; this.userNick = User_Nick; this.userFirstName = User_FirstName; this.userLastName = User_LastName; this.userEmail = User_Email; this.userAdminStatus = User_AdminStatus; } } |
Последний раз редактировалось Vegas; 23.12.2009 в 07:41.. Причина: отменить смайлы |
|
23.12.2009, 08:15 | Вверх #7 |
Близкий Знакомый
Возраст: 43 Регистрация: 27.01.2006
Был(а) у нас: 11.01.2016 12:20
Сообщений: 225
Пол:
|
отсюда переходит к catch
Код:
theUser = new User((Int64)readit[0], readit[1].ToString(), readit[2].ToString(), readit[3].ToString(), readit[4].ToString(), (Int32)readit[5]); Ошибка: Недопустимая попытка чтения при отсутствии данных. Я уже чего только не перепробовал... |
23.12.2009, 08:23 | Вверх #8 |
Красавчик форума
Возраст: 42 Регистрация: 23.09.2003
Был(а) у нас: 01.11.2011 07:05
Сообщений: 22,253
Пол:
|
Vegas, пропиши так:
Код:
conn.Open(); SqlDataReader readit = cmd.ExecuteReader(); readit.Read(); if (readit.HasRows) { theUser = new User((Int64)readit[0], readit[1].ToString(), readit[2].ToString(), readit[3].ToString(), readit[4].ToString(), (Int32)readit[5]); } readit.Close(); |
Кто ищет, тот найдёт. Кто не ищет, того найдут.. (с)
|
|
Эти пользователи сказали Спасибо Vit0: Vegas |