Як створити таблицю даних у C # та як додати рядки?


197

Як створити таблицю даних у C #?

Мені було так:

 DataTable dt = new DataTable();
 dt.clear();
 dt.Columns.Add("Name");
 dt.Columns.Add("Marks");

Як я бачу структуру DataTable?

Тепер я хочу додати ravi for Nameі 500 for Marks. Як я можу це зробити?


2
@Cute. Просто коментар - якщо ви використовуєте .NET 3.5, ви дійсно повинні побачити, що пропонує LINQ для SQL. Якщо ви все-таки вирішите спуститися по маршруту DataTable / DataSet, принаймні погляньте на створення сильно набраних даних DataTables.
РічардОД

Відповіді:


256

Ось код:

DataTable dt = new DataTable(); 
dt.Clear();
dt.Columns.Add("Name");
dt.Columns.Add("Marks");
DataRow _ravi = dt.NewRow();
_ravi["Name"] = "ravi";
_ravi["Marks"] = "500";
dt.Rows.Add(_ravi);

Щоб побачити структуру, а точніше я перефразую її як схему, ви можете експортувати її у XML-файл, виконавши наступне.

Щоб експортувати лише схему / структуру, виконайте:

dt.WriteXMLSchema("dtSchemaOrStructure.xml");

Крім того, ви також можете експортувати свої дані:

dt.WriteXML("dtDataxml");

8
Клас DataTable не має методу AddRow. Ви повинні зробити dt.Rows.Add (_ravi); натомість
Саламандер2007,

1
І немає такого поняття, як AddRow. Це DataTable.Rows.Add ()
djdd87

Не забудьте зателефонувати на dt.AcceptChanges () у випадку, якщо ви використовуєте DataView з фільтром, відмінним від CurrentRows.
Саламандер2007,

@DanD, @ Salamander2007: погодився. Я змінив це зараз. Вибачте за помилку, що сталася bcoz, я використовую набрані набори даних, які підтримують цю річ.
це. __curious_geek

@phoenix: Я просто хотів, щоб запитувач із задоволенням відповідав моїй відповіді.
це. __curious_geek

66

Ви також можете передавати об’єктний масив, як-от так:

DataTable dt = new DataTable();
dt.Clear();
dt.Columns.Add("Name");
dt.Columns.Add("Marks");
object[] o = { "Ravi", 500 };
dt.Rows.Add(o);

Або навіть:

dt.Rows.Add(new object[] { "Ravi", 500 });

11
Іншою альтернативою в цьому є відзначити, що Addметод, показаний вище, має перевантаження зі змінною кількістю парам, тому ви можете скоротити це до dt.Rows.Add("Ravi", 500);та працюватиме так само. Одне велике попередження при будь-якому з цих підходів: ви повинні надати ці параметри в такому ж порядку, як визначено стовпці, інакше ви отримаєте помилку. (Тож використовуйте обережно!)
Funka

34
// Create a DataTable and add two Columns to it
DataTable dt=new DataTable();
dt.Columns.Add("Name",typeof(string));
dt.Columns.Add("Age",typeof(int));

// Create a DataRow, add Name and Age data, and add to the DataTable
DataRow dr=dt.NewRow();
dr["Name"]="Mohammad"; // or dr[0]="Mohammad";
dr["Age"]=24; // or dr[1]=24;
dt.Rows.Add(dr);

// Create another DataRow, add Name and Age data, and add to the DataTable
dr=dt.NewRow();
dr["Name"]="Shahnawaz"; // or dr[0]="Shahnawaz";
dr["Age"]=24; // or dr[1]=24;
dt.Rows.Add(dr);

// DataBind to your UI control, if necessary (a GridView, in this example)
GridView1.DataSource=dt;
GridView1.DataBind();

30

Створіть таблицю даних:

DataTable MyTable = new DataTable(); // 1
DataTable MyTableByName = new DataTable("MyTableName"); // 2

Додати стовпчик до таблиці:

 MyTable.Columns.Add("Id", typeof(int));
 MyTable.Columns.Add("Name", typeof(string));

Додайте рядок до методу 1:

DataRow row = MyTable.NewRow();
row["Id"] = 1;
row["Name"] = "John";
MyTable.Rows.Add(row);

Додайте рядок до методу DataTable 2:

MyTable.Rows.Add(2, "Ivan");

Додати рядок до методу DataTable 3 (Додати рядок з іншої таблиці за тією ж структурою):

MyTable.ImportRow(MyTableByName.Rows[0]);

Додайте рядок до методу DataTable 4 (Додати рядок з іншої таблиці):

MyTable.Rows.Add(MyTable2.Rows[0]["Id"], MyTable2.Rows[0]["Name"]);

Додати рядок до методу DataTable 5 (Вставити рядок в індексі):

MyTable.Rows.InsertAt(row, 8);

24

Щоб додати рядок:

DataRow row = dt.NewRow();
row["Name"] = "Ravi";
row["Marks"] = 500;
dt.Rows.Add(row);

Щоб побачити структуру:

Table.Columns

18

Ви можете написати один вкладиш, використовуючи DataRow.Add (параметри об'єкта [] значення) замість чотирьох рядків.

dt.Rows.Add("Ravi", "500");

Під час створення нового DataTableоб'єкта, мабуть, немає потреби Clear DataTableв наступному твердженні. Ви також DataTable.Columns.AddRangeможете додавати стовпці з оператором on. Повний код буде.

DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("Name"), new DataColumn("Marks") });     
dt.Rows.Add("Ravi", "500");

14

Ви можете додати рядок в одному рядку

    DataTable table = new DataTable();
    table.Columns.Add("Dosage", typeof(int));
    table.Columns.Add("Drug", typeof(string));
    table.Columns.Add("Patient", typeof(string));
    table.Columns.Add("Date", typeof(DateTime));

    // Here we add five DataRows.
    table.Rows.Add(25, "Indocin", "David", DateTime.Now);
    table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
    table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
    table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
    table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);

11
DataTable dt=new DataTable();
Datacolumn Name = new DataColumn("Name");
Name.DataType= typeoff(string);
Name.AllowDBNull=false; //set as null or not the default is true i.e null
Name.MaxLength=20; //sets the length the default is -1 which is max(no limit)
dt.Columns.Add(Name);
Datacolumn Age = new DataColumn("Age", typeoff(int));`

dt.Columns.Add(Age);

DataRow dr=dt.NewRow();

dr["Name"]="Mohammad Adem"; // or dr[0]="Mohammad Adem";
dr["Age"]=33; // or dr[1]=33;
dt.add.rows(dr);
dr=dt.NewRow();

dr["Name"]="Zahara"; // or dr[0]="Zahara";
dr["Age"]=22; // or dr[1]=22;
dt.rows.add(dr);
Gv.DataSource=dt;
Gv.DataBind();

9
DataTable dt=new DataTable();
DataColumn Name = new DataColumn("Name",typeof(string)); 

dt.Columns.Add(Name);
DataColumn Age = new DataColumn("Age", typeof(int));`

dt.Columns.Add(Age);

DataRow dr=dt.NewRow();

dr["Name"]="Kavitha Reddy"; 
dr["Age"]=24; 
dt.add.Rows(dr);
dr=dt.NewRow();

dr["Name"]="Kiran Reddy";
dr["Age"]=23; 
dt.Rows.add(dr);
Gv.DataSource=dt;
Gv.DataBind();

8

Для цього вам потрібно додати потоки даних до своїх даних.

// Creates a new DataRow with the same schema as the table.
DataRow dr = dt.NewRow();

// Fill the values
dr["Name"] = "Name";
dr["Marks"] = "Marks";

// Add the row to the rows collection
dt.Rows.Add ( dr );

8

Найпростіший спосіб - створити DtaTable на даний момент

DataTable table = new DataTable
{
    Columns = {
        "Name", // typeof(string) is implied
        {"Marks", typeof(int)}
    },
    TableName = "MarksTable" //optional
};
table.Rows.Add("ravi", 500);

4

Окрім інших відповідей.

Якщо ви керуєте структурою DataTable, є ярлик для додавання рядків:

// Припустимо, у вас визначена таблиця даних, як у вашому прикладі, названа dt dt.Rows.Add ("Ім'я", "Позначення");

Метод DataRowCollection.Add () має перевантаження, яка займає парамічний масив об'єктів. Цей метод дозволяє передати стільки значень, скільки потрібно, але вони повинні бути в тому ж порядку, що і стовпці, визначені в таблиці.

Тому, хоча це зручний спосіб додавання даних про рядки, використовувати це може бути ризиковано. Якщо структура таблиці зміниться, код не вдасться.


1

Питання 1: Як створити таблицю даних у C #?

Відповідь 1:

DataTable dt = new DataTable(); // DataTable created

// Add columns in your DataTable
dt.Columns.Add("Name");
dt.Columns.Add("Marks");

Примітка: Там немає необхідностіпісля його створення.Clear()DataTable

Запитання 2: Як додати рядки?

Відповідь 2: Додайте один рядок:

dt.Rows.Add("Ravi","500");

Додайте кілька рядків: використовуйте ForEachцикл

DataTable dt2 = (DataTable)Session["CartData"]; // This DataTable contains multiple records
foreach (DataRow dr in dt2.Rows)
{
    dt.Rows.Add(dr["Name"], dr["Marks"]);
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.