A类型(类)作为占位符?(避免复制/粘贴)

eMi*_*eMi 3 c# generics types class

我有这个代码:

 OracleConnection myOracleConnection = new OracleConnection(connectionString);
 myOracleConnection.Open();
 OracleCommand command = myOracleConnection.CreateCommand();
 command.CommandText = 
      SchemaDifferenceFinder.Model.SQLStatements.MissingTables.DropTable;
 command.CommandType = System.Data.CommandType.Text;
 command.ExecuteNonQuery();
 myOracleConnection.Close();  
Run Code Online (Sandbox Code Playgroud)

在第4行,您会找到" MissingTables ".那是一个班级.

整个代码将重复7次,一切都是一样的,除了这个类的变化,举例:" MissingColumns ".但我不想复制/粘贴整个代码,只是为了取代这些小事.

我能做什么?什么与泛型?如果需要我也可以传递参数等.感谢每一个解决方案!

vc *_* 74 8

private static void ExecuteSQL(string SQL)
{
  OracleConnection myOracleConnection = new OracleConnection(connectionString);
  myOracleConnection.Open();
  OracleCommand command = myOracleConnection.CreateCommand();
  command.CommandText = SQL;
  command.CommandType = System.Data.CommandType.Text;
  command.ExecuteNonQuery();
  myOracleConnection.Close(); 
}
Run Code Online (Sandbox Code Playgroud)

然后可以通过以下方式调用:

Helper.ExecuteSQL(SchemaDifferenceFinder.Model.SQLStatements.MissingTables.DropTable);
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 7

您不需要泛型 - 只是一个将命令文本作为参数的包装器方法.

private void ExecuteNonQuery(string commandText, string connString)
{
    using(OracleConnection myOracleConnection = new OracleConnection(connString))
    {
        myOracleConnection.Open();
        OracleCommand command = myOracleConnection.CreateCommand();
        command.CommandText = commandText;
        command.CommandType = System.Data.CommandType.Text;
        command.ExecuteNonQuery();
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意使用该using声明以确保正确处置.