我一直试图将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
。
答案 0 :(得分:3)
您应该从您的方法返回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-避免从方法
返回Object2-避免从方法中返回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;
}
以上代码只是样本。