我是編程世界的新手。我被給了一個項目,現在停留在數據庫連接上。感謝回覆!「formMain entry = new formMain(dt.Rows [0] [0] .ToString());」這是什麼意思?特別是行[0] [0]
formMain entry = new formMain(dt.Rows[0][0].ToString());
這是什麼意思?特別是Rows[0][0]
?
請幫忙。
我是編程世界的新手。我被給了一個項目,現在停留在數據庫連接上。感謝回覆!「formMain entry = new formMain(dt.Rows [0] [0] .ToString());」這是什麼意思?特別是行[0] [0]
formMain entry = new formMain(dt.Rows[0][0].ToString());
這是什麼意思?特別是Rows[0][0]
?
請幫忙。
dt
是最有可能DataTable
類的對象(想想作爲正常數據庫t的DataTable
能夠),其中顯示DataRow[]
類型的屬性(即DataRow
數組),使用它可以通過傳遞行索引來訪問DataTable
的單個行;例如dt.Rows[4]
會給你你的DataTable
的第五排。
甲DataRow
對象(認爲DataRow
的作爲數據的單個行)依次暴露其自身object[]
類型的分度器(一個object
數組,它是),其可以訪問到該DataRow
的所有列的各個值。因此,如果您的DataRow
對象的名稱爲dr
,則可以使用dr[2]
來訪問或更改此dr
的第3列的值。所以,如果你想訪問或更改第五行的第三列的值,你可以這樣做:
var dr = dt[4]; //5th row is returned and stored in dr
var MyVal = dr[2]; //Value of dr's 3rd column is stored in MyVal
,或者你可以在一行做到這一點:
var MyVal = dt[4][2];
這正是你的代碼正在做,即它基本上將第一行的第一列的值dt
傳遞給構造函數frmMain
。
我懷疑是您的DataTable
只被用作單個值的容器(一個單個整數,一個字符串等),即dt
只包含一行和該行中有隻有一個值,其可以成爲某物的ID。如果是這樣,您應該更好地檢查您的代碼並查看它實際準備的位置並填充dt
對象。有更好的方法從數據庫訪問單個值(谷歌ExecuteScalar()
),這將使您擺脫首先創建一個DataTable
,然後訪問其行和列。
「formMain entry = new formMain」是一個構造函數語法,它意味着該算法正在創建一個formMain類型的對象並調用該對象formMain。
行[0] [0]是稱爲行的多維數組內的多維數組引用。行[0] [0]本身可能是任何類型的數據,包括值,數組,多維數組,對象...
如果X是一個數組,那麼X [0]是陣列,例如: X = [3,4,2,8,9];如果Y是多維數組,則Y [0]是第一個子數組,Y [0] [0]是數組Y [0]中的第一個條目,例如: Y = [[2,4,1],[2,3],[9,9,9,9]]; Y [1] [1] = 3.
此外,因爲它是dt.Rows,這意味着行是一個名爲'dt'的對象的屬性。 dt幾乎普遍地表示數據表(儘管這是一種正常/最佳實踐,而不是該語言的一部分)。
假設代碼中的正常RDB(關係數據庫)引用(現在我可能假設得太多,所以仔細檢查)行[0] [0]看起來像是特定數據庫表中的左上角單元格,它是存儲在對象dt中。
更多關於在C#中的多維數組:
更多關於在C#構造函數:https://msdn.microsoft.com/en-us/library/ace5hbzh.aspx
鑑於'dt'是一個'DataTable','dt.Rows [0] [0]'與多維數組沒有任何關係,只是它*看起來像*那樣。看到我的答案,確切地說,這裏發生了什麼。 – dotNET
非常感謝!它以更好的方式解釋了完整的概念。 。 –
@AsifPatankar:很高興知道。 Plz考慮接受幫助像你這樣的人的答案。 – dotNET
已經完成,但它說我需要一些聲譽來顯示數量的變化。再次感謝! –