Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据表中的数据类型?_C#_Mysql_Sql Server_Datagridview - Fatal编程技术网

C# 数据表中的数据类型?

C# 数据表中的数据类型?,c#,mysql,sql-server,datagridview,C#,Mysql,Sql Server,Datagridview,所以我一直在开发一个c#应用程序,它从excel文件中读取数据,并使用数据表将其加载到数据网格视图中 然后我想将它插入到一个SQL表中,我提出了一个有趣的问题,是否可以从数据表中获取数据类型,比如它是int、char、time还是date?所以我可以根据它自动生成一个SQL表,然后插入数据 以下是我将数据从excel导入数据表的方式: public void importExcel(string path, string sheetName) { var excel = new

所以我一直在开发一个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;
    }
可以:

  • 确定输入的数据类型(例如,来自excel)——
  • 从代码创建SQL服务器表-
我想我的问题是,为什么需要从代码中创建SQL Server表?通常,从excel导入数据时,您知道数据的格式(在excel文件中),并且您的数据库中已经有一个SQL Server表,用于存储导入的数据

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

yourTableAdapter.Update(yourDataTable);
其中,TableAdapter是在创建数据集时由visual studio创建的,负责向数据库中获取数据。到处都有关于数据集的教程,所以请仔细阅读,看看是否适合您-


最后,我不确定您是否考虑过使用DataTables的更好的替代方案。您可能只是偶然发现了数据表,不知道替代方案是什么。使用DataTables/dataset/DataAdapters将被视为“旧”的做事方式。一种进出数据库的“新”方法是使用微软的实体框架。这本身就是一个巨大的主题,所以我让你们来看看。

我使用数据表是因为我在学习过程中,这就是我在谷歌搜索如何做的信息时遇到的问题。我想从代码中创建它,因为我有不同结构的不同excel文件(更多具有不同标题的列,等等),所以我需要符合这些规范的表。这种方法比手工创建每个表更简单。使用数据集没有错。我在学习的时候也用同样的方式开始了我自己的项目,并且遇到了数据集。我的项目和他们配合得很好。然而,既然我使用了实体框架,我就再也不会回去了。太多的好处。不同的excel文件本质上是为了同一件事,但只是细节不同?如果是这样,我将在文件中强制使用一致的头名称。您仍然只需要创建一个数据库表,然后使用较少数据的导入只会将null映射到未提供的字段。