PS: In fact, this is just a record that I do for the place I don't understand. If you have any mistakes or improper places, you are welcome. Regarding DataRow and Datacolumn, it is a DataTable row and column that exists as the two set elements of the DataTable, and the unique table value is determined with the method similar to the coordinate system X and Y. I originally thought that both are the same nature, but inadvertent problems explained that they are not simple. Use the SQL statement to establish a table, but forget the write content: create Table TestTable (ID INT Primary Key, Description Char (30)); then use DataReader to certainly not return anything. Use the VS.NET 2003 Server Explorer to view the table and have not prompted. There are columns, but there is no content, that is, this "empty table" can exist. Try to change the SQL statement: create table testtable; or create table testTable (); both a syntax error. It can be seen that the basis for the table is column. From the DataReader's way to work, it is a process of traversing behavioral elements, where data is set, the output is two nested cycles: Foreach (DataRow I in dt.rows) {Foreach (Datacolumn J in dt.columns) {console.write ("/ t {0}", i [j]);} console.writeline ();} All rows are listed as a structure, actually accessing line, column Just develop the location name of its data, it can be abstracted as this: struct row {type column_1; type colorn_2; ... type colorn_n;} This leads out a problem that is built on top: The row is added in the table. 1. DataRow's addition is compared, that is, adding an element, it can be seen as an element to add the above ROW []. The specific method is about the following: DATAROW NEWROW = DT.NEWROW (); // Call the DataTable DT method new line () declaration to establish a new line to get a DATAROW instance ... newrow ["(colorn name ...)"] = " ... "; // Write data for DataRow ... DT.ROWS.ADD (newrow); // is finished. 2. DataColumn's addition seems to be simple. In fact, there is no newcolumn () method in DT. Two ideas: a. Inside the SQL, this idea is not discussed here. If you are interested, you can try it; b. Find similar add () method calls in the program; this is necessary to explain Datacolumn and DatacolumnCollection The relationship between two classes: actually establishing the framework is DatacolumnCollection, a collection of DataColumn, including a set of Column objects, that is, to add a column to the table, you need to adjust the add () method on the table framework DatacolumnCollection Not adding an element that is traversed as a traversal on the DT, because the column is independent of the column is also traversed in line-> columns.