首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将DataTable传递回调用方法?

如何将DataTable传递回调用方法?
EN

Stack Overflow用户
提问于 2018-01-02 07:36:30
回答 1查看 1.2K关注 0票数 0

我一直试图将一个DataTable传递回调用方法。下面是调用Class来创建DataTable的代码。

代码语言:javascript
运行
复制
string SQL = "SELECT .....";
Tables.Create_DataTable(SQL);

下面是类Tables的代码。

代码语言:javascript
运行
复制
public static class Tables
{
    internal static object Create_DataTable(string SQL)
    {
        DataTable dataTable = new DataTable("Work_Orders");

        using (DataAccessClass.sql_Connection)
        using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(SQL, DataAccessClass.sql_Connection))
        {
            DataAccessClass.OpenConnection();

            sqlDataAdapter.Fill(dataTable);
        }

        return Work_Orders;
    }
}

sqlDataAdapter.Fill(dataTable);之后,就有一个包含所请求数据的Work_Orders DataTable。返回时,我意识到DataTable实际上是一个object。这就是我被困的地方。如何将object更改为DataTable?然后我将把它添加到DataSet中。

EN

回答 1

Stack Overflow用户

发布于 2018-01-02 07:45:46

您应该从您的方法返回dataTable,但是作为基本问题,签名应该是:

代码语言:javascript
运行
复制
attributes modifiers return-type method-name(parameters )
    {
     statements
    }

看看这里这里

但是要改变你的方法,比如:

代码语言:javascript
运行
复制
internal static DataTable Create_DataTable(string SQL)
{
    DataTable dataTable = new DataTable("Work_Orders");

    using (DataAccessClass.sql_Connection)
    using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(SQL, DataAccessClass.sql_Connection))
    {
        DataAccessClass.OpenConnection();

        sqlDataAdapter.Fill(dataTable);
    }

    return dataTable;
}

编辑:

1-避免从方法中返回对象

2-避免从方法中返回DataTable

因为这两种方法都会使您的代码不可读和不干净,所以最好返回一个指定的对象,例如,假设您的DataTable有一些关于用户的文件,那么最好这样做:

如果DataTable有一行:

代码语言:javascript
运行
复制
internal static User Create_DataTable(string SQL)
{
    DataTable dataTable = new DataTable("Work_Orders");

    using (DataAccessClass.sql_Connection)
    using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(SQL, DataAccessClass.sql_Connection))
    {
        DataAccessClass.OpenConnection();

        sqlDataAdapter.Fill(dataTable);
    }
     User u = new User()
       { 
          Name = dataTable.Rows[0]("Name"),
          Family = dataTable.Rows[0]("Family"),
          UserName = dataTable.Rows[0]("UserName")
        }
    return u;
}

或者如果DataTable有关于几个用户的信息(有一些行):

代码语言:javascript
运行
复制
internal static List<User> Create_DataTable(string SQL)
{
    DataTable dataTable = new DataTable("Work_Orders");

    using (DataAccessClass.sql_Connection)
    using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(SQL, DataAccessClass.sql_Connection))
    {
        DataAccessClass.OpenConnection();

        sqlDataAdapter.Fill(dataTable);
    }
     List<User> uList = new List<User>();
     foreach (DataRow row in Datatable.Rows) 
     { 
         uList.Add(new User()
              { 
                   Name = row["Name"],
                   Family = row["Family"],
                   UserName = row["UserName"]
               });
      }
    return uList;
}

上面的代码只是样本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48057237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档