因此,我一直在研究一个C#应用程序,该应用程序从Excel文件中读取数据,然后使用数据表将其加载到数据网格视图中。
然后我想将其插入到SQL表中,然后提出一个有趣的问题,是否可以从数据表中获取数据类型,例如它是int,char,时间还是日期?所以我可以根据它自动生成一个SQL表,然后插入数据?
这是我将数据从Excel导入数据表的方式:
public void importExcel(string path, string sheetName) {
var excel = new LinqToExcel.ExcelQueryFactory(path);
excel.ReadOnly = true;
var companies = from a in excel.Worksheet(sheetName) select a;
var columnNames = excel.GetColumnNames(sheetName);
DataTable dtExcelRecords = new DataTable();
foreach (var columnName in columnNames)
{
dtExcelRecords.Columns.Add(columnName);
}
foreach (var row in companies)
{
DataRow dr = dtExcelRecords.NewRow();
foreach (var columnName in columnNames)
{
dr[columnName] = row[columnName];
}
dtExcelRecords.Rows.Add(dr);
}
dataGWseznam.DataSource = dtExcelRecords;
}
最佳答案
可以:
确定输入的数据类型(例如,来自excel)-link
通过代码-link创建SQL Sever表
我想我的问题是,为什么需要从代码创建SQL Server表?通常,从excel导入数据时,您知道数据的格式(在excel文件中),并且数据库中已经有一个SQL Server表,您将在其中存储导入的数据。
如果您已经有一个数据库表,那么完成您要执行的操作的最简单方法是使用Visual Studio工具从数据库表中自动创建一个DataSet。数据集本质上是数据表的集合。在您的情况下,数据集将仅包含您要插入数据库中的一个表。您将从导入过程中获取已知的结构化数据,并将其映射到从数据库表构建的DataTable。使用Visual Studio创建这些强类型数据集的方便之处在于,一旦用您的Linq导入过程中的数据填充了数据表并验证了数据,将数据发送到数据库就像调用一样容易:
yourTableAdapter.Update(yourDataTable);
TableAdapter是在创建数据集时由Visual Studio创建的,它负责从数据库获取数据。到处都有有关DataSet的教程,因此请仔细阅读并查看是否适合您-link
最后,我不确定您是否考虑过使用DataTables的替代方法。您可能只是偶然发现了DataTables,却不知道替代方案是什么。使用DataTables / DataSets / DataAdapters被认为是做事的“老方法”。一种进出数据库的“新”方法是使用微软的实体框架。这本身就是一个巨大的话题,所以我让您研究一下。
关于c# - 来自数据表的数据类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35257056/