数据类型的数据类型?

时间:2016-02-07 18:04:34

标签: c# mysql sql-server datagridview

所以我一直在研究一个c#应用程序,它从excel文件读取数据并使用数据表将其加载到数据网格视图中。

然后我想将它插入到SQL表中,如果有可能从数据表中获取数据类型,我想出了一个有趣的问题,比如它是int,char,time还是date?所以我可以根据它自动生成一个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;
    }

1 个答案:

答案 0 :(得分:0)

可以:

  • 确定输入的数据类型(例如,来自excel) - link
  • 从代码 - link
  • 创建SQL Sever表

我认为我的问题是你为什么需要从代码中创建SQL Server表?通常,从excel导入数据时,您知道数据的格式是什么(在Excel文件中),并且您已经在数据库中有一个SQL Server表,您将在其中存储导入的数据。

如果您已有数据库表,那么完成您尝试执行的操作的最简单方法是使用Visual Studio工具从数据库表中自动创建DataSet。 DataSet本质上是DataTable的集合。在您的情况下,DataSet将只包含您要插入数据库的一个表。您将从导入过程中获取已知的结构化数据,并将其映射到DataTable,DataTable是从数据库表构建的。使用Visual Studio创建这些强类型DataSet的便利之处在于,一旦使用Linq导入过程中的数据填充DataTable并验证数据,将数据发送到数据库就像调用一样简单:

yourTableAdapter.Update(yourDataTable);

当您创建DataSet时,Visual Studio创建TableAdapter,并负责从数据库获取数据。 DataSet有各种各样的教程,所以请阅读并查看是否适合您 - link

最后,我不确定您是否考虑过使用DataTables的优秀替代方案。您可能偶然发现了DataTables并且不知道替代品是什么。使用DataTables / DataSets / DataAdapter将被认为是旧的'做事的方式。一个新的'进出数据库的方式是使用Microsoft的Entity Framework。这本身就是一个很大的话题,所以我想让你看看。