c#数据表列数据类型

本文关键字:数据类型 数据表 | 更新日期: 2023-09-27 18:17:29

我正在将数据从excel表格导入到数据表中,我对数据类型有一个问题/疑问。在创建数据表时,添加列及其数据类型。在此之后,我从excel导入数据,这工作得很好。当我检查列的数据类型时,它显示了我所期望的。然而,当我尝试向函数传递一个值时,我得到的消息是我试图传递一个对象类型,而不是我设置的数据类型。

这是我的代码(它是一个简化的数据集):

public void importData(string _file)
    {
        DataTable dtTest = new DataTable();
        dtTest.Columns.Add("a", typeof(Int32));
        dtTest.Columns.Add("b", typeof(Int32));
        string connString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data       Source={0};Extended Properties='"Excel 12.0 Xml;HDR=YES;IMEX=1'";", _file);
        OleDbConnection conn = new OleDbConnection(connString);
        conn.Open();
        OleDbDataAdapter objAdapter = new OleDbDataAdapter();
        string sheetName = "Sheet1";
        string sql = "SELECT * FROM [" + sheetName + "$]";
        OleDbCommand objCmdSelect = new OleDbCommand(sql, conn);
        objAdapter.SelectCommand = objCmdSelect;
        objAdapter.Fill(dtTest);
        conn.Close();
        form.write(dtTest.Rows[0]["a"]);
    }

函数'form.write()'接受一个整数。

,当我在尝试将值传递给form之前检查数据类型。写,它说它是Int32.

if (dtTest.Columns[0].DataType == typeof(Int32))
        {
            //this is true
        }

我做错了什么?

c#数据表列数据类型

函数'form.write()'接受一个整数。

由于form.Write接受一个整数,您需要将其从object强制转换为int:

int a = dtTest.Rows[0].Field<int>("a");
form.write(a);

在c#中不允许延迟绑定,你必须在编译时使用正确的类型

如果我正确理解你的帖子,你可能需要转换值。

form.write(dtTest.Rows[0]["a"]);

我认为应该是:

form.write(Convert.ToInt32(dtTest.Rows[0]["a"]));

没有Convert.ToInt32(),您引用的是对象类型