public static bool Registration(string username, string password, DateTime birth, string email, byte[] avatar) { MyDataBase.ConnectToDB(); MyDataBase.ExecuteCommand("SELECT * FROM users WHERE users.username = '******' OR users.email = '" + email + "'"); if (MyDataBase.rdr.HasRows) { MessageBox.Show("This user already exist.");//Некрасиво тут содержать MessageBox, но всё же. return(false); } MyDataBase.rdr.Close(); MyDataBase.AddWithValue("@avatar", avatar); MyDataBase.ExecuteCommand( "INSERT INTO `users` (`username`, `userpass`, `email`, `avatar`, `datebirth`)" + "VALUES ('" + username + "', '" + password + "', '" + email + "', @avatar, '" + birth.Year + "-" + birth.Month + "-" + birth.Day + "');"); MyDataBase.rdr.Close(); MyDataBase.CloseConnectToDB(); return(true); }
public static void SyncNotes() { if (OfflineMode) { return; } //Удаление заметок из бд и из системы. MyDataBase.ConnectToDB(); string[] notes = Directory.GetFiles(DeleteDirectory); for (int i = 0; i < notes.Length; i++) { MyDataBase.ExecuteCommand("DELETE FROM `notes` WHERE `iduser`='" + Evennote.user.id + "' AND `title`='" + notes[i].Split('\\').Last().Split('.').First() + "';"); //Разбиваем путь по слэшам, берем имя файла с расширением. Разюиваем имя файла и вытягиваем имя заметки. File.Delete(notes[i]); MyDataBase.rdr.Close(); } MyDataBase.ExecuteCommand("SELECT idnote, title, note, dateCreate, dateChanged FROM notes WHERE notes.iduser = "******";"); //написать проверки о наличии данных int idnote = -1; List <Note> fromDB = new List <Note>(); while (MyDataBase.rdr.Read()) { Note buf = new Note(); using (MemoryStream mem = new MemoryStream((byte[])MyDataBase.rdr[2])) { TextRange textRange = new TextRange( buf.Text.ContentStart, buf.Text.ContentEnd); textRange.Load(mem, DataFormats.XamlPackage); buf.Id = (int)MyDataBase.rdr[0]; buf.Title = (string)MyDataBase.rdr[1]; buf.DateCreate = new DateTime((long)MyDataBase.rdr[3]); buf.DateChanged = new DateTime((long)MyDataBase.rdr[4]); fromDB.Add(buf); } } MyDataBase.rdr.Close(); Notebook.notebook.ForEach(delegate(Note x) //коллекция локальных заметок { bool flag = true; foreach (Note y in fromDB) //коллекция заметок из бд { if (y.Title == x.Title) { flag = false; if (DateTime.Compare(x.DateChanged, y.DateChanged) < 0) { //Когда на бд новая заметка, а у нас старая x.DateChanged = y.DateChanged; x.DateCreate = y.DateCreate; x.Text = y.Text; x.SaveToFile(String.Format("{0}{1}.note", Evennote.path, x.Title)); File.SetCreationTime(String.Format("{0}{1}.note", Evennote.path, x.Title), x.DateCreate); File.SetLastWriteTime(String.Format("{0}{1}.note", Evennote.path, x.Title), x.DateChanged); break; } else if (DateTime.Compare(x.DateChanged, y.DateChanged) > 0) { //Когда на бд старая заметка, а у нас новая idnote = y.Id; using (MemoryStream mem = new MemoryStream()) { TextRange textRange = new TextRange( x.Text.ContentStart, x.Text.ContentEnd); textRange.Save(mem, DataFormats.XamlPackage); MyDataBase.AddWithValue("@notefile", mem.ToArray()); MyDataBase.ExecuteCommand("UPDATE notes SET note = @notefile, dateChanged = " + x.DateChanged.Ticks + " WHERE notes.idnote = " + idnote); } break; } } } //Добавляем новую заметку в БД if (flag) { using (MemoryStream mem = new MemoryStream()) { TextRange textRange = new TextRange( x.Text.ContentStart, x.Text.ContentEnd); textRange.Save(mem, DataFormats.XamlPackage); DateTime cR = x.DateCreate; DateTime cH = x.DateChanged; MyDataBase.AddWithValue("@notefile", mem.ToArray()); MyDataBase.ExecuteCommand("INSERT INTO `notes` (`iduser`, `title`, `note`, `dateCreate`, `dateChanged`) VALUES (" + user.id + ", '" + x.Title + "', @noteFile, " + cR.Ticks + ", " + cH.Ticks + ");"); } } }); //Когда у нас нет локальных заметок, и есть заметки в БД. foreach (Note y in fromDB) //коллекция заметок из бд { bool flag = true; Notebook.notebook.ForEach(delegate(Note x) //коллекция локальных заметок { if (y.Title == x.Title) { flag = false; } }); if (flag) { y.SaveToFile(String.Format("{0}{1}.note", Evennote.path, y.Title)); Notebook.notebook.Add(y); File.SetCreationTime(String.Format("{0}{1}.note", Evennote.path, y.Title), y.DateCreate); File.SetLastWriteTime(String.Format("{0}{1}.note", Evennote.path, y.Title), y.DateChanged); } } MyDataBase.rdr.Close(); MyDataBase.CloseConnectToDB(); (((Application.Current.MainWindow as MainWindow).mainframe.Content as menu_page).frame.Content as notes_page).SyncListView(); }