Du hast eine Datenbank mit einer Tabelle UserProfile
Diese Tabelle enthält irgendwelche User-Informationen und was Du sonst noch so brauchst.
Zusätzlich hat sie die Spalten
- CurrentLoginCode
- CurrentLoginCodeCreationTimestamp
Diese beiden Spalten muss der Server schreiben können. Wie das geht, da gibt's Möglichkeiten wie Sand am Meer.
Die einfachste Möglichkeit ist ein ORM (Object Relation Manager), z.B.
EntityFramework (EF)
Wenn Du alles "per Hand" machen willst, also auch die SQL-Statements selber schreiben, dann ist ADO.NET dein Stichwort.
Beides findest Du aber gut in dem Buch
Visual C# 2012 (aktuelle aber kostenpflichtige Version:
C# 6 mit Visual Studio 2015) beschrieben, zusammen mit WPF (als moderne Alternative zu WinForms) und allgemeinen Grundlagen.
Wenn Du keine Datenbank hast (ist nicht unbedingt zu empfehlen), dann tut's auch XML.
In dem Fall ist der
XmlSerializer gerade für Anfänger das Beste. Alternativ gibt's auch noch LINQ to XML, was beim Serialisieren/Deserialisieren mehr Möglichkeiten bietet.
Wie das konkret geht, kann ich dir also nicht sagen, da es zu viele Möglichkeiten gibt, zwischen denen Du dich erst entscheiden musst.
Da ist's definitiv einfacher, wenn Du dir die nötigen Grundlagen aneignest.
Dazu gibt's dann auch Hilfe und Beispiele in rauen Mengen.
Wenn Du dich für EF entscheidest und die Datenschicht mit EF fertig implementiert hast, könnte der Abschnitt so aussehen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| public MyDbContext MyDbContext { get; }
public void PrepareLogin(string username) { var profile = GetUserProfile(username); var loginCode = CreateNewLoginCode();
profile.CurrentLoginCode = loginCode; profile.CurrentLoginCodeCreationTimestamp = DateTime.Now; MyDbContext.SaveChanges(); SendLoginCodeSMS(profile.MobileNr, loginCode); }
UserProfile GetUserProfile(string username) { return MyDbContext.UserProfiles.Single(x => x.UserName == userName); } string CreateNewLoginCode() { var existingCodes = MyDbContext.UserProfiles .WHere(x => (DateTime.Now - x.CurrentLoginCodeCreationTimestamp) < TimeSpan.FromMinutes(5)) .Select(x => x.CurrentLoginCode);
} void SendLoginCodeSMS(string mobileNr, string loginCode) { } |