我一直试图将一个DataTable
传递回调用方法。下面是调用Class
来创建DataTable
的代码。
string SQL = "SELECT .....";
Tables.Create_DataTable(SQL);
下面是类Tables
的代码。
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
中。
发布于 2018-01-02 07:45:46
您应该从您的方法返回dataTable
,但是作为基本问题,签名应该是:
attributes modifiers return-type method-name(parameters )
{
statements
}
看看这里或这里
但是要改变你的方法,比如:
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有一行:
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有关于几个用户的信息(有一些行):
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;
}
上面的代码只是样本。
https://stackoverflow.com/questions/48057237
复制相似问题