我正在做一个我都想要的项目
mysql
和
MSQL语言
兼容的。
一切正常,但我有一个关于代码重复的小问题:
对于所有数据库查询,我都有一个单独的类,对于selects,我执行以下操作(例如,对于对象“profil”):
我有一个参数“ismysql”,如果我想使用mysql,该参数设置为true;如果我想使用microsoft SQL Server,该参数设置为false。
public Profil Select_profil(string query)
{
Profil profil = new Profil();
if (this.OpenConnection() == true)
{
if (this.isMySQL)
{
MySqlCommand cmd = new MySqlCommand(query.Replace("[myDataBase].", ""), connection);
using (MySqlDataReader dataReader = cmd.ExecuteReader())
{
while (dataReader.Read())
{
profil.ID = Int32.Parse(dataReader["ID"].ToString().Trim());
profil.Nom = dataReader["PROFIL"].ToString().Trim();
profil.Famille = dataReader["FAMILLE"].ToString().Trim();
profil.Largeur = double.Parse(dataReader["LARGEUR"].ToString().Trim());
profil.Hauteur = double.Parse(dataReader["LARGEUR_AILE"].ToString().Trim());
profil.EpAile = double.Parse(dataReader["EP_AILE"].ToString().Trim());
profil.EpAme = double.Parse(dataReader["EP_AME"].ToString().Trim());
profil.Radius1 = double.Parse(dataReader["R"].ToString().Trim());
profil.Radius2 = double.Parse(dataReader["R2"].ToString().Trim());
profil.PdsLin = double.Parse(dataReader["PDS_LINEAIRE"].ToString().Trim());
profil.PaintSurf = double.Parse(dataReader["PAINT_SURF"].ToString().Trim());
profil.P08 = double.Parse(dataReader["P08"].ToString().Trim());
profil.P09 = double.Parse(dataReader["P09"].ToString().Trim());
profil.P10 = double.Parse(dataReader["P10"].ToString().Trim());
profil.P11 = double.Parse(dataReader["P11"].ToString().Trim());
}
}
}
else
{
SqlCommand cmd = new SqlCommand(query, MSconnection);
using (SqlDataReader dataReader = cmd.ExecuteReader())
{
while (dataReader.Read())
{
profil.ID = Int32.Parse(dataReader["ID"].ToString().Trim());
profil.Nom = dataReader["PROFIL"].ToString().Trim();
profil.Famille = dataReader["FAMILLE"].ToString().Trim();
profil.Largeur = double.Parse(dataReader["LARGEUR"].ToString().Trim());
profil.Hauteur = double.Parse(dataReader["LARGEUR_AILE"].ToString().Trim());
profil.EpAile = double.Parse(dataReader["EP_AILE"].ToString().Trim());
profil.EpAme = double.Parse(dataReader["EP_AME"].ToString().Trim());
profil.Radius1 = double.Parse(dataReader["R"].ToString().Trim());
profil.Radius2 = double.Parse(dataReader["R2"].ToString().Trim());
profil.PdsLin = double.Parse(dataReader["PDS_LINEAIRE"].ToString().Trim());
profil.PaintSurf = double.Parse(dataReader["PAINT_SURF"].ToString().Trim());
profil.P08 = double.Parse(dataReader["P08"].ToString().Trim());
profil.P09 = double.Parse(dataReader["P09"].ToString().Trim());
profil.P10 = double.Parse(dataReader["P10"].ToString().Trim());
profil.P11 = double.Parse(dataReader["P11"].ToString().Trim());
}
}
}
this.CloseConnection();
}
return profil;
}
对于MySQL和SQL Server,代码是相同的(除了
[我的数据库]。
,如果是mysql,我会替换它),但我需要重复两次,因为在一个情况下,我使用对象mysqlcommand和mysqldatareader,在第二个情况下,我需要使用sqlcommand和sqldatareader。
不方便的是,当我在数据库中进行一些修改时,我需要全部更改两次(错误的来源)。
有没有一种方法可以将代码分组并放一次,而不使用函数?