using System; using System.Collections.Generic; using System.Linq; using System.Web; // Namespaces för SQL Server och ADO.NET using System.Data.SqlClient; using System.Data; // Namespace för inläsning av data från Web.Config using System.Configuration; namespace HobbyDb.Models /// Klassen anropas från klassen UserMethods public class PocoDb public PocoDb() // Koppling mot SQL Server dbconnection.connectionstring = "Data Source=(LocalDB)\\v11.0; AttachDbFilename=m:\\Libraray\\Dokument\\visual studio 2013\\Projects\\HobbyDb\\HobbyDb\\App_Data\\Hobbies.mdf; Integrated Security=True"; //dbconnection.connectionstring = ConfigurationManager.ConnectionStrings["SQLLocal"].ConnectionString; // Skapa SqlConnection public SqlConnection dbconnection = new SqlConnection(); public DataSet GenerateDataSet(SqlCommand dbcommand, String tablename, out String errormsg) errormsg = ""; SqlDataAdapter dbadapter = new SqlDataAdapter(dbCommand); DataSet dataset = new DataSet(); dbconnection.open(); dbadapter.fill(dataset, tablename); return (dataset); errormsg = e.message; return null; dbconnection.close();
public int ExecuteNonQuery(SqlCommand dbcommand, out string msg) msg = ""; int i = 0; dbconnection.open(); i = dbcommand.executenonquery(); msg = e.message; dbconnection.close(); return i; // end of class PocoDb public class PocoModel public IEnumerable<UserDetail> ListaMedUserDetail get; set; /// Userdetail är användarobjektet som används för /// autentisering, namn, roller, olika adresser m.m. public class UserDetail /// Empty constructor public UserDetail() en int public string Id get; set; //Notera: Detta är en string - i databasen är det public string ForName get; set; public string EfterNamn get; set; public string Email get; set; public int YearOfBirth get; set; public int LivesID get; set; /// UserMethods innehåller metoder för att skapa, uppdatera, hämta och ta bort userobjekt public class UserMethods
/// Empty constructor public UserMethods() /// Metoden lägger till en user i databasen. /// <param name="ud">skicka in en UserDetail som får ett id, en string, när den läggt till i databasen</param> /// <param name="errormsg">="1" om allt är ok och =sql felmeddelande om det blir ett fel</param> /// <returns>om allt går som det ska returnerar den guid-värdet som en sträng, i annat fall en allmännt hållen text</returns> public String InsertUser(UserDetail ud, out string errormsg) PocoDb pdb = new PocoDb(); // sqlstring och lägg till en user i databasen String sqlstring = "INSERT INTO Person ( Fornamn, Efternamn, Fodelsear, Epost, Bor) VALUES (@firstname,@lastname,@dateofbirth,@email,@placetolive)"; SqlCommand dbcommand = new SqlCommand(sqlstring, pdb.dbconnection); dbcommand.parameters.add("firstname", SqlDbType.NVarChar, 30).Value = ud.forname; dbcommand.parameters.add("lastname", SqlDbType.NVarChar, 30).Value = ud.efternamn; dbcommand.parameters.add("dateofbirth", SqlDbType.Int).Value = ud.yearofbirth; dbcommand.parameters.add("email", SqlDbType.NVarChar, 50).Value = ud.email; dbcommand.parameters.add("placetolive", SqlDbType.Int).Value = ud.livesid; int i = 0; string local_errormsg = ""; i = pdb.executenonquery(dbcommand, out local_errormsg); if (i == 1) errormsg = ""; else errormsg = "Error nr 401, det skapas inte en user"; return (i.tostring()); errormsg = "Error nr 402 " + e.message; return ("Ett fel har uppstått i datahanteringen och det exakta felmeddelande visas inte av säkerhetsskäl. Notera hur felet uppstod och kontakta Per Kvarnbrink."); /// GetUser - Metoden hämtar ett userobjekt
/// <param name="userid">en string som innehåller id:t till userdetail</param> /// <param name="errormsg">felmeddelande ut från metoden</param> /// <returns>returnerar ett objekt om det finns, annars null</returns> public UserDetail GetUser(string userid, out string errormsg) PocoDb pdb = new PocoDb(); // sqlstring och lägg till en user i databasen String sqlstring = "Select * From Person Where Id = @id"; SqlCommand dbcommand = new SqlCommand(sqlstring, pdb.dbconnection); //omvandla stringvädet som är ett id till ett guid int local_id = Convert.ToInt32(userid); dbcommand.parameters.add("id", SqlDbType.Int).Value = local_id; //skapa en adapter DataSet myds = new DataSet(); UserDetail ud = new UserDetail(); string local_errormsg = ""; myds = pdb.generatedataset(dbcommand, "myuser", out local_errormsg); int count = 0; count = myds.tables["myuser"].rows.count; if (count > 0) // Läser ut data från datasetet ud.id = myds.tables["myuser"].rows[0]["id"].tostring(); ud.forname = myds.tables["myuser"].rows[0]["fornamn"].tostring(); ud.efternamn = myds.tables["myuser"].rows[0]["efternamn"].tostring(); ud.email = myds.tables["myuser"].rows[0]["epost"].tostring(); ud.livesid = Convert.ToInt32(myDS.Tables["myUser"].Rows[0]["Bor"].ToString()); ud.yearofbirth = Convert.ToInt32(myDS.Tables["myUser"].Rows[0]["Fodelsear"].ToString()); errormsg = ""; return (ud); else errormsg = "Error nr 403. Det hämtas ingen user."; return (null); errormsg = "Error nr 404. " + e.message; return null;