C# 如何从动态生成的sql表中读取和处理数据
tl;dr有没有一种方法可以从sql表中创建动态类或对象,而sql表中的列您不知道其名称或数量,以后可以用于排序、搜索等 我有一个网站,有各种各样的项目,你可以选择,他们基本上都是相同的,只是他们有不同的数据和用户,这是根据项目ID划分的。像项目通常是 然而,我有一件事是其中一个表是用代码动态创建的,这个表在这里称为projectTable_id number。列基于您在输入表单中选择的内容。在此表单中,您可以选择列的名称、数据类型、大小等。通过这个,我创建了带有自定义列的表 我还创建了一个描述表来知道这个项目中有哪些列,这个表叫做projectTable\u id number here\u desc 描述表可以如下所示: 而动态生成的表如下所示 这些是剪纸,不是整张桌子 所以表的创建很好,我有关于列的所有信息,等等 此描述表始终与查找其中的数据相同,因此我可以为描述表创建一个类,前提是我可以存储所有数据 但是对于动态生成的表,我不确定应该如何处理数据 现在,获取动态生成表数据的C代码如下所示:C# 如何从动态生成的sql表中读取和处理数据,c#,sql,.net,class,C#,Sql,.net,Class,tl;dr有没有一种方法可以从sql表中创建动态类或对象,而sql表中的列您不知道其名称或数量,以后可以用于排序、搜索等 我有一个网站,有各种各样的项目,你可以选择,他们基本上都是相同的,只是他们有不同的数据和用户,这是根据项目ID划分的。像项目通常是 然而,我有一件事是其中一个表是用代码动态创建的,这个表在这里称为projectTable_id number。列基于您在输入表单中选择的内容。在此表单中,您可以选择列的名称、数据类型、大小等。通过这个,我创建了带有自定义列的表 我还创建了一个描述
public static List<List<string>> getAllFromCustomTable(int projectID)
{
string tableName = string.Format("projectTable_{0}", projectID);
string sql = string.Format("SELECT * FROM {0}", tableName);
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(sql, connection);
List<List<string>> lstCustomTableData = new List<List<string>>();
List<tableDescription> lstTableDescription = tableDescriptionModel.getAllTableDescription(projectID);
try
{
connection.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
#region reader
List<string> lstCustomTableDataItem = new List<string>();
if (reader["id"] != DBNull.Value)
lstCustomTableDataItem.Add(reader["id"].ToString());
else
lstCustomTableDataItem.Add("");
foreach (tableDescription tableDescription in lstTableDescription)
{
if (reader[tableDescription.columnName] != DBNull.Value)
lstCustomTableDataItem.Add(reader[tableDescription.columnName].ToString());
else
lstCustomTableDataItem.Add("");
}
lstCustomTableData.Add(lstCustomTableDataItem);
#endregion
}
}
catch (Exception error)
{
}
finally
{
connection.Close();
connection.Dispose();
}
return lstCustomTableData;
}
这确实有效。但是现在我只有一个包含所有数据的字符串列表
但基本上我希望能够排序、搜索,甚至将其转换为json,但我不知道该怎么做,因为我没有一个类用于它,因为列名是动态生成的
我从表描述表中知道列名,但仅此而已
但基本上是2-我几乎什么都只使用类,当我没有可用的类时,我不知道该怎么办。
有没有动力学类或对象可以用于这种情况
我还知道,这段代码对SQL注入是开放的,但这是其中唯一对它开放的部分,并且这些函数仅在具有高用户角色要求的有限区域中可用
感谢您的时间经典的方式:由DataAdapter填充的DataTable。@TimSchmelter以前没有太多使用过它,但我会研究一下