簡體   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