Я использую TableAdapters, чтобы установить соединение и запрос через мои таблицы базы данных. У меня есть этот запрос:Не удалось получить значение строки?
SELECT salt FROM users WHERE (username = @usernameOrEmail) OR (email = @usernameOrEmail)
Что вы можете себе представить, так как имя пользователя и электронной почты поля являются уникальными можно извлекать только 1 строку, строка может быть либо NULL или фактически может содержать соль в зависимости, если параметр usernameOrEmail имеет строка, соответствующая любому имени пользователя или электронной почте.
Я использую этот код для вызова запроса и передать параметр через:
public void checkEmailOrUsername(string emailOrUsername)
{
DataTable userDataTable = userInfoTableAdapters.getUserSalt(emailOrUsername);
DataRow userDataRow = userDataTable.Rows[0];
string saltValue = userDataRow["salt"].ToString();
}
Он отлично работает, если параметр не соответствует имя пользователя или адрес электронной почты в таблице, однако ломает, когда адрес электронной почты или имя пользователя делает Матчи. Это дает ошибку на этой линии:
DataTable userDataTable = userInfoTableAdapters.getUserSalt(emailOrUsername);
И это ошибка:
An exception of type 'System.Data.ConstraintException' occurred in System.Data.dll but was not handled in user code
Additional information: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
У вас есть значения null, возвращаемые для любых столбцов, не установленных для разрешения null в вашей TA? – DavidG
Столбец SALT не является NULL @DavidG – mogorilla
Можете ли вы опубликовать свой метод GetUserSalt? Возможно, в вашем методе заполнения DT есть ошибка, и т. Д. – Dylan