我是编程世界的新手。我得到了一个项目,现在坚持使用数据库连接。感谢回复!
formMain entry = new formMain(dt.Rows[0][0].ToString());
这是什么意思?特别是Rows[0][0]
?
请帮忙。
答案 0 :(得分:0)
“formMain entry = new formMain”是一个构造函数语法,这意味着该算法正在创建一个formMain类型的对象并调用该对象formMain。
Rows [0] [0]是一个名为Rows的多维数组内的多维数组引用。行[0] [0]本身可能是任何类型的数据,包括值,数组,多维数组,对象......
如果X是一个数组,则X [0]是数组中的第一个值,例如: X = [3,4,2,8,9]; X [0] = 3。
如果Y是多维数组,则Y [0]是第一个子数组,Y [0] [0]是数组Y [0]中的第一个条目,例如: Y = [[2,4,1],[2,3],[9,9,9,9]]; Y [1] [1] = 3。
另外因为它是dt.Rows,这意味着Rows是一个名为'dt'的对象的属性。 dt几乎普遍表示数据表(尽管这是正常/最佳实践,不是语言的一部分)。
假设代码中有一个正常的RDB(关系数据库)引用(现在我可能假设太多,所以仔细检查)行[0] [0]看起来像存储在特定数据库表中的左上角单元格在对象dt。
有关c#中的多维数组的更多信息:
有关c#中构造函数的更多信息:https://msdn.microsoft.com/en-us/library/ace5hbzh.aspx
答案 1 :(得分:0)
dt
很可能是DataTable
类的对象(将DataTable
视为普通数据库表),它公开了Row
类型的属性DataRow[]
}(一个DataRow
数组,使用它可以通过传递行索引来访问DataTable
的单行;例如dt.Rows[4]
将为您提供DataTable
的第5行。
DataRow
对象(将DataRow
视为单行数据)依次公开自己的object[]
类型的索引器(object
数组) ,通过该工具,您可以访问DataRow
的所有列的各个值。因此,如果您的DataRow
对象名为dr
,则可以使用dr[2]
来访问或更改此dr
的第3列的值。因此,如果要访问或更改第5行第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
对象。有更好的方法可以从数据库访问单个值(google for ExecuteScalar()
),这样您就可以先创建DataTable
,然后再访问其行和列。