Ett exempel på hur jag kollar om en användare finns i databasen: Jag har tyvärr inte jobbat med windows applikationer, sÃ¥ jag kan inte svara pÃ¥ det... Vad jag ser så hämtar du bara ut ett värde (Password), då känns det väl lite lättare med att använda ExecuteScalar() och casta värdet till rätt typ.Databasclasser
På aspx.cs har jag två textboxvärden user.Text och password.Text dessa lägger jag in som parametrar i en medlems instans.
<code>
Member myMember = new Member();
if(myMember.Login(user.Text, password.Text))
{
myLabel.Text = "du är inloggad"
}
else
{
mylabel.Text = "försök igen"
}
</code>
Member classen ärver OleDbData´s metoder så här:
<code>
public class Member : Icaaq.DataAccess.OleDbData
{
public Member() : base(Application["connstring"].toString())
{ }
/// <summary>
/// Checks if the user is a member
/// </summary>
/// <param name="Username">The username the client has given</param>
/// <param name="Password">The password the client has given</param>
/// <returns>True if the client is a member, false if NOT.</returns>
///
#region Things that have with the login todo
public bool Login(string Username, string Password)
{
// The Sql Statement that fetches the DataReader
string SqlStatement = "SELECT f_password FROM "+
"t_members WHERE f_user = '"+Username+"' AND f_password = '"+Password+"'";
OleDbDataReader DataReader = RetriveDataReader(SqlStatement);
if(DataReader.Read() )
{
return DataReader["f_password"].ToString() == Password ? true : false;
}
}
</code>
Och OleDbData classen ser ut som följer (nerbantad då det finns metoder för att hämta datasets, göra nonQueryexecutes(inserts, updates, deletes)):
<code>
public abstract class OleDbData
{
protected OleDbConnection Connection;
/// <summary>
/// A valid connectionstring
/// </summary>
/// <param name="ConnectionString"></param>
public OleDbData(string ConnectionString)
{
Connection = new OleDbConnection(ConnectionString);
}
private OleDbCommand BuildCommand(string SqlStatement)
{
OleDbCommand Command = new OleDbCommand(SqlStatement, Connection);
Command.CommandType = CommandType.Text;
return Command;
}
protected OleDbDataReader RetriveDataReader(string SqlStatement)
{
OleDbDataReader DataReader;
Connection.Open();
OleDbCommand Command = BuildCommand(SqlStatement);
DataReader = Command.ExecuteReader(CommandBehavior.CloseConnection);
return DataReader;
}
}
</code>
Så här har jag lagt upp dem senaste siterna jag gjort och jag tycker det funkar bra.....
kommentera gärna, eller kom med förslag hur man kan fixa till denna kod :-)
mvh icaaqSv: Databasclasser
Är det skillnad på koden om man kör windows applikation?
Jag får inte den där koden att fungera utan får en massa fel, även om jag lägger till alla System.xxx som ska avnändas.
/Anna-KarinSv: Databasclasser
mvh icaaqSv: Databasclasser