繁体   English   中英

C#数据表列数据类型

[英]C# datatable column datatype

我正在将数据从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.write之前检查数据类型时,它说它是Int32。

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

我究竟做错了什么?

函数“ 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(),您引用的是对象类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM