我想知道是否有任何方法可以基于C#数据表创建SQL查询?
使用dll,我能够读取excel文件中的数据,我将所有工作表包含在包含DataTables的DataSet中,每个工作表都在单独的DatatTable中。
我想生成一个包含dynamic_cast
子句的查询以创建表,并使用CREATE
子句为每个工作表将数据插入该表。
我不知道是否可以通过实体框架之类的东西来实现。
我可以想象,INSERT
的方法是遍历DataSet并提取每个DataTable中的列名,然后将其添加为字符串作为查询文本。这就是我的意思:
Create
创建一个DataRowModel:
'ID' INT,
'Name' VARCHAR(5),
'SurName' VARCHAR(6),
'Age' INT
通过提取的数据填充DataRowModel的列表:
public class DataRowModel
{
public string ColumnName { get; set; }
public string ColumnType { get; set; }
}
List<DataRowModel> TableModel = new List<DataRowModel>();
但是似乎很脏,推荐的解决方案是什么? 实际上,我想创建一个类似this cool website的工具。
答案 0 :(得分:0)
我将给出一些示例代码。希望对您有帮助
所以第一步是从Excel获取列列表。
string filename = UploadFile(fuCompanies);
OleDbConnection Econ = new OleDbConnection(string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", Server.MapPath("~/files/excels/" + filename)));
DataSet ds = new DataSet();
try
{
Econ.Open();
DataTable activityDataTable = Econ.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
OleDbCommand Ecom = new OleDbCommand();
Ecom.Connection = Econ;
Ecom.CommandText = string.Format("Select * FROM [{0}]", activityDataTable.Rows[0]["TABLE_NAME"]);
OleDbDataAdapter oda = new OleDbDataAdapter(Ecom.CommandText, Econ);
oda.Fill(ds);
}
catch (Exception ex)
{
//Exception
}
finally
{
Econ.Close();
}
foreach(DataColumn dc in ds.Tables[0].Columns){
// take columns here and create a dynamic class
}
例如,关于如何创建动态模型(类)的建议,我将建议以下链接: How to dynamically create a class
第3部分和第4部分可以使用上面显示的2个步骤实现