![]() |
Просмотр таблиц в SQLite и MD5Очень многие мои проекты связаны с базами данных. Это действительно удобно, причем зачастую используется не полноценный сервер баз данных, а его заменитель. Я уже рассказывал в нескольких статьях о SQLite, но в этой мы поговорим не в основном о программировании, а об инструментах – программе DB Browser for SQLite. Для чего вообще пишутся программы, использующие базы данных? Чтобы заносить и удобно доставать оттуда информацию. Фильтры, поиск, удобное представление. Однако, создаваемые мной программы в большинстве случаев имеют жесткую структуру: несколько таблиц с заданными столбцами – поменять ничего нельзя. Одна из основных задач программиста – продумать эту структуру. Создавать же структуру таблиц в базе данных удобно не в Visual Studio, а в сторонних программах. Конечно, там есть диаграммы баз данных, можно экспортировать/импортировать таблицы, менять ключи, менять значения – есть множество возможностей. Однако, студия нередко тормозит, подглючивает и все не особенно наглядно. Лично мне нравится работать со структурой и данными (если используется SQLite.) с помощью программы DB Browser for SQLite. Например, имеется уже у нас файл для базы и необходимо в него добавить еще одну таблицу – чтобы хранить логины/пароли пользователей. Запускаем программу и создаем новую таблицу: ![]() Можно сразу же заполнить поля – очень удобно. Не забудьте только нажать «Записать изменения» - я пару раз прокалывался на этом – ничего не сохранялось. Теперь уже в студии напишем проверку поля при входе. Для простоты примера будем считать, что у нас только один пользователь. String passDB = ""; using (var connection = new SQLiteConnection("Data Source=" + dbFileName + ";Version=3;")) { connection.Open(); try { using (SQLiteCommand command = new SQLiteCommand(connection)) { command.CommandText = "SELECT * FROM users WHERE id = '1'"; SQLiteDataReader r = command.ExecuteReader(); r.Read(); passDB = r["pass"].ToString(); r.Close(); } } catch (SQLiteException ex) { MessageBox.Show("Error: " + ex.Message); } connection.Close(); } var provider = System.Security.Cryptography.MD5.Create(); string salt = "SfgTfrrd"; string password = textBox1.Text; byte[] bytes = provider.ComputeHash(Encoding.ASCII.GetBytes(salt + password)); string newPass = BitConverter.ToString(bytes); newPass = newPass.Replace("-", ""); if (newPass == passDB) { Form2 fr = new Form2(); this.Hide(); fr.ShowDialog(); this.Show(); } else { MessageBox.Show("Пароль неверен!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); }Что здесь у нас происходит? Код можно разделить на три части:
//шифруем var provider = System.Security.Cryptography.MD5.Create(); string salt = " SfgTfrrd "; string password = textBox1.Text; byte[] bytes = provider.ComputeHash(Encoding.ASCII.GetBytes(salt + password)); string newPass = BitConverter.ToString(bytes); newPass = newPass.Replace("-", ""); using (var connection = new SQLiteConnection("Data Source=" + dbFileName + ";Version=3;")) { connection.Open(); try { using (SQLiteCommand command = new SQLiteCommand(connection)) { command.CommandText = "UPDATE users SET pass = @pass WHERE id='1'"; command.Parameters.Add("@pass", DbType.String).Value = newPass; command.ExecuteNonQuery(); } MessageBox.Show("Пароль успешно изменен!"); } catch (SQLiteException ex) { MessageBox.Show("Error: " + ex.Message); } connection.Close(); }Теперь данные у нас хранятся вот в таком виде в базе: ![]() Таким образом, рекомендую удобную программку DB Browser for SQLite. Если вам нужна помощь по C# (.NET), необходимо написать программу на си шарп с базами данных или без, то вы можете обратиться за помощью ко мне. За небольшую сумму я вам с удовольствием помогу. ![]() Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда. ![]() |
Мои услуги
|
© upread.ru 2013-2023 При перепечатке активная ссылка на сайт обязательна. |