C#数据集方法

C#数据集方法,c#,coding-style,ado.net,C#,Coding Style,Ado.net,在我的C#程序中,我有几个区域可以连接到excel电子表格。为了减少编码的重复,我尝试编写一个方法,读取sql语句,然后输出数据集 如何编写此方法 第二,我应该用什么来创建这样一个模块?一个方法、类或其他东西 这就是我目前所拥有的 //Connection String to read Excel File into Dataset. if (Path.GetExtension(brtFile) == ".xlsx") {

在我的C#程序中,我有几个区域可以连接到excel电子表格。为了减少编码的重复,我尝试编写一个方法,读取sql语句,然后输出数据集

如何编写此方法

第二,我应该用什么来创建这样一个模块?一个方法、类或其他东西

这就是我目前所拥有的

        //Connection String to read Excel File into Dataset.  
        if (Path.GetExtension(brtFile) == ".xlsx")  
        {  
            ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", brtFile);  
        }  
        else  
        {  
            ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +  
                                  "Data Source=" + brtFile + ";" +  
                                  "Extended Properties=Excel 8.0;";  
        }  

        //Read Excel file into Dataset.  
        OleDbConnection objConn = new OleDbConnection(ConnectionString);  
        try  
        {  
            objConn.Open();  
        }  
        catch (Exception e)  
        {  
            Console.WriteLine("{0} Exception caught.", e);  
            Console.ReadLine();  
        }  

        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + xlWorksheet + "$]", objConn);  
        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();  
        objAdapter1.SelectCommand = objCmdSelect;  
        DataSet objDataset1 = new DataSet();  
        objAdapter1.Fill(objDataset1);  
        objConn.Close();  

您可以将其作为虚拟或静态公共方法放在类中,例如

public class ExcelHelper
{
        public static DataSet GetExcelData()
        {
            //your codes here
            return objDataset1;
        }
}
你可以这样称呼它

var xl = new ExcelHelper();
var ds = xl.GetExcelData();

而如果将其创建为静态方法,如

public class ExcelHelper { 
    public static DataSet GetExcelData()
    {
        return objDataset1;
    }
}
你可以称之为

var ds = ExcelHelper.GetExcelData();

您可以将其作为虚拟或静态公共方法放在类中,例如

public class ExcelHelper
{
        public static DataSet GetExcelData()
        {
            //your codes here
            return objDataset1;
        }
}
你可以这样称呼它

var xl = new ExcelHelper();
var ds = xl.GetExcelData();

而如果将其创建为静态方法,如

public class ExcelHelper { 
    public static DataSet GetExcelData()
    {
        return objDataset1;
    }
}
你可以称之为

var ds = ExcelHelper.GetExcelData();

下面的示例类是我使用的常规模式

我创建了一个“数据管理器”类来处理所有数据访问。我包括用于“核心”功能的静态方法,还允许用户使用指定的连接字符串创建对象

关于示例代码的要点:

  • 在每个数据类中使用
    语句非常重要
  • 在调用
    Open
    生成可读代码之前添加参数
  • 我特意不为这段代码使用数据适配器,以表明可以创建
    数据集
    ,并根据需要添加数据表。(请注意,将数据适配器与返回多个结果集的存储过程一起使用时,会使用每个结果集的数据表填充数据集。)
  • 我故意不处理异常。由于这是一个实用程序类,标准实践允许调用方出现异常
  • 这是一个示例代码,它向您展示了我如何处理底层数据访问。这段代码还没有经过测试,但我一直在使用这段代码模式
  • 样本类
    下面的示例类是我使用的常规模式

    我创建了一个“数据管理器”类来处理所有数据访问。我包括用于“核心”功能的静态方法,还允许用户使用指定的连接字符串创建对象

    关于示例代码的要点:

  • 在每个数据类中使用
    语句非常重要
  • 在调用
    Open
    生成可读代码之前添加参数
  • 我特意不为这段代码使用数据适配器,以表明可以创建
    数据集
    ,并根据需要添加数据表。(请注意,将数据适配器与返回多个结果集的存储过程一起使用时,会使用每个结果集的数据表填充数据集。)
  • 我故意不处理异常。由于这是一个实用程序类,标准实践允许调用方出现异常
  • 这是一个示例代码,它向您展示了我如何处理底层数据访问。这段代码还没有经过测试,但我一直在使用这段代码模式
  • 样本类
    您不使用实体框架有什么相关的原因吗?不要接受所有异常。@Gnostus:EF不能与Excel一起使用。我不理解这个问题。你是说你包含的代码不起作用吗?如果是,请指出代码失败的位置和异常。我希望主程序从方法调用此代码,并将数据集输出到主程序,以便在主程序中使用查询的数据。如何编写该方法,以及如何编写将放在主程序中的方法调用?您不使用实体框架是否有相关的原因?请不要忽略所有异常。@Gnostus:EF不能与Excel一起使用。我不理解这个问题。你是说你包含的代码不起作用吗?如果是,请指出代码失败的位置和异常。我希望主程序从方法调用此代码,并将数据集输出到主程序,以便在主程序中使用查询的数据。如何编写方法,以及如何编写将放置在主程序中的方法调用?