Altså erklær en metode på en klasse som ser nogenlunde således ud (for nu at tage udgangspunkt i din egen kode):
public MySqlDataReader KaldDatabase(string sql, int type)
{
try
{
string hostnavn = Vars.getMySqlHost();
string Brugernavn = Vars.getMySqlUsername();
string Adgangskode = Vars.getMySqlPassword();
string Database = Vars.getMySqlDatabase();
string Administration = "
http://mysql6.unoeuro.com"; string mysql = "Server=" + hostnavn + ";Database=" + Database + ";Uid=" + Brugernavn + ";Pwd=" + Adgangskode + "";
con.ConnectionString = mysql;
con.Open();
cmd = con.CreateCommand();
cmd.Connection = con;
}
catch (Exception err)
{
this.Close();
throw new Exception(err.Message);
}
MySqlDataReader reader;
try
{
cmd.CommandText = sql;
reader = null;
if (type == 1)
{
reader = cmd.ExecuteReader();
}
else if (type == 2)
{
int i = cmd.ExecuteNonQuery();
}
}
catch (Exception err)
{
this.Close();
throw new Exception(err.Message);
}
this.Close();
return reader;
}
Dog synes jeg ikke det er optimalt at pakke det ind på denne måde, da du mister noget information fra ExecuteNonQuery. Funktionen bør mindst splittes op i to, så du har en funktion der returnerer en reader og en der returnerer en int (og måske en mere som returnerer værdien fra en ExecuteScalar). Men så skal du til at splitte din funktion yderligere op, da du så ender med at gentage en del kode flere gange ;-)