[英]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.