Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

База данных в с#

Виктория Фрейберг Ученик (60), закрыт 3 года назад
Добрый день, у меня есть БД, и есть форма регистрации в С# пользователь регистрируется, только тогда когда ставит фото еще, но мне хотелось бы что бы можно было регистрироваться не загружая фото, но если фото не загружать то выдается ошибка, вот код

byte[] images = null;
FileStream Streem = new FileStream(imgLocation, FileMode.Open, FileAccess.Read);
BinaryReader brs = new BinaryReader(Streem);
images = brs.ReadBytes((int)Streem.Length);

//SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DatabaseDictionary.mdf;Integrated Security=True");
con.Open();
string sqlQery= "INSERT INTO [Users] (Surname, Name, Patronymic, Login, Password, Role, Picture) VALUES (@Surname, @Name, @Patronymic, @Login, @Password, @Role, @images)";
cmd = new SqlCommand(sqlQery, con);

cmd.Parameters.AddWithValue("Surname", fieldSurname.Text);
cmd.Parameters.AddWithValue("Name", fieldName.Text);
cmd.Parameters.AddWithValue("Patronymic", fieldPatronymic.Text);
cmd.Parameters.AddWithValue("Login", fieldLogin.Text);
cmd.Parameters.AddWithValue("Password", fieldPassword.Text);
cmd.Parameters.AddWithValue("Role", fieldRole.Text);
cmd.Parameters.AddWithValue("@images", images);
cmd.ExecuteNonQuery();
con.Close();

MessageBox.Show("Вы успешно зарегистировались!");

заранее спасибо!
Лучший ответ
Xttx Мыслитель (8519) 3 года назад
Попробуй это:
string sqlQery= "INSERT INTO [Users] (Surname, Name, Patronymic, Login, Password, Role, Picture) VALUES (@Surname, @Name, @Patronymic, @Login, @Password, @Role, @images)";

заменить на:
string sqlQery= "";
if (images != null)
string sqlQery= "INSERT INTO [Users] (Surname, Name, Patronymic, Login, Password, Role, Picture) VALUES (@Surname, @Name, @Patronymic, @Login, @Password, @Role, @images)";
else
string sqlQery= "INSERT INTO [Users] (Surname, Name, Patronymic, Login, Password, Role) VALUES (@Surname, @Name, @Patronymic, @Login, @Password, @Role)";

вот это:
cmd.Parameters.AddWithValue("@images", images);
на это:
if (images != null) cmd.Parameters.AddWithValue("@images", images);
АМудрец (14657) 3 года назад
так не будет работать
XttxМыслитель (8519) 3 года назад
Почему? в чём проблема?
Остальные ответы
А Мудрец (14657) 3 года назад
Во-первых, все параметры sql должны начинаться с @:
cmd.Parameters.AddWithValue("@Surname", fieldSurname.Text);

Во-вторых, если поле допускает значение null, то для sql оно должно передавать DBNull.Value:
cmd.Parameters.AddWithValue("@images", images ?? (object)DBNull.Value);

PS: AddWithValue возвращает SqlParametr, в котором можно дополнительно уточнить тип данных. Но обычно это не требуется.
Похожие вопросы