/// <summary> /// Schleust die zu erstellende Nachricht zur Dal durch mit einer Sqltransaction /// </summary> /// <param name="message"> /// zu erstellende Nachricht /// </param> public static void CreateMessage(Message message) { // Öffnen der Sql-Server-Verbindung using (SqlTransaction transaction = ConnectionManager.GetOpenConnection().BeginTransaction()) { //Zugriffssicht auf díe Datenbank deklarieren und instanzieren MessageDal msgDal = new MessageDal(); //Aufruf der Nachrichterstellenmethode msgDal.CreateMessage(message, transaction); //Transaktion speichern transaction.Commit(); } }
/// <summary> /// Erstellt die Nachricht in der DB /// </summary> /// <param name="message"> /// Das zuspeicherende Nachrichtenobjekt /// </param> /// <param name="transaction"> /// Sicherung der SQL-Interaktion /// </param> /// <returns> /// Gibt in Byte wieder ob Nachrichten in DB erfolgreich gespeichert wurde /// </returns> public byte[] CreateMessage(Message message, SqlTransaction transaction) { //Erstellen und Instanzieren des SQLkommandos using (SqlCommand sqlcmd = new SqlCommand(createMessageMethod, transaction.Connection, transaction)) { //Sqlkommandotyp auf Gespeicherte Prozedur setzen sqlcmd.CommandType = CommandType.StoredProcedure; //SQL-Parameter zum SQLkommando hinzufügen sqlcmd.Parameters.Add("@sender", SqlDbType.UniqueIdentifier).Value = message.sender; sqlcmd.Parameters.Add("@receiver", SqlDbType.UniqueIdentifier).Value = message.receiver; sqlcmd.Parameters.Add("@attchment", SqlDbType.VarBinary, message.attchment.Length).Value = message.attchment; sqlcmd.Parameters.Add("@Message", SqlDbType.NVarChar, message.messages.Length).Value = message.messages; //Ausführen des SQLkommandos byte[] result = (byte[])sqlcmd.ExecuteScalar(); return result; } }
/// <summary> /// Holt alle Nachrichten aus der DB /// </summary> /// <param name="userId"> /// Alle Nachrichten des angemeldeten Benutzers /// </param> /// <param name="transaction"> /// Sicherung der SQL-Interaktion /// </param> /// <returns> /// Gibt eine Liste von Nachrichten zurück /// </returns> public List<Message> ReadMessage(Guid userId, SqlTransaction transaction) { //Erstellen und Instanzieren des SQLkommandos using (SqlCommand sqlcmd = new SqlCommand(readMessage, transaction.Connection, transaction)) { //Sqlkommandotyp auf Gespeicherte Prozedur setzen sqlcmd.CommandType = CommandType.StoredProcedure; //SQL-Parameter zum SQLkommando hinzufügen sqlcmd.Parameters.Add("@userId", SqlDbType.UniqueIdentifier).Value = userId; // Ausführen des SQLkommandos und Speichern des Ergebnis in den Dataadapter using (SqlDataAdapter dataApdater = new SqlDataAdapter(sqlcmd)) { // Dekalarieren der Datentabelle DataTable MessagesTable = new DataTable(); // Füllen der Datentabelle mit den Werten aus dem Dataadapter dataApdater.Fill(MessagesTable); //Deklararieren der Liste von Nachrichten List<Message> messageList = new List<Message>(); // Durchgehen der Datentabellenreihen foreach (DataRow dr in MessagesTable.Rows) { //Bauen eines Nachrichtenobjekts Message message = new Message(); message.id = dr["id"] as int?; message.sender = dr["sender"] as Guid?; message.receiver = dr["receiver"] as Guid?; message.messages = dr["Message"] as string; message.attchment = dr["attchment"] as byte[]; message.timeStamp = dr["Timestamp"] as DateTime?; // hinzufügen des Nachrichtenobjekts messageList.Add(message); } //Rückgabe der Nachrichtenliste return messageList; } } }