Bagaimana cara membuat DataTable di C # dan bagaimana cara menambahkan baris?

196

Bagaimana cara membuat DataTable di C #?

Saya memang suka ini:

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

Bagaimana cara melihat struktur DataTable?

Sekarang saya ingin menambahkan ravi untuk Namedan 500 untuk Marks. Bagaimana saya bisa melakukan ini?

Imut
sumber
2
@Imut. Hanya komentar - jika Anda menggunakan. NET 3.5 Anda harus benar-benar melihat apa yang ditawarkan LINQ ke SQL. Jika Anda memutuskan untuk turun rute DataTable / DataSet setidaknya lihat untuk membuat DataTable yang sangat diketik.
RichardOD

Jawaban:

256

Berikut kodenya:

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);

Untuk melihat struktur, atau lebih tepatnya saya ulangi sebagai skema, Anda dapat mengekspornya ke file XML dengan melakukan hal berikut.

Untuk hanya mengekspor skema / struktur, lakukan:

dt.WriteXMLSchema("dtSchemaOrStructure.xml");

Selain itu, Anda juga dapat mengekspor data Anda:

dt.WriteXML("dtDataxml");
ini. __curious_geek
sumber
8
Kelas DataTable tidak memiliki metode AddRow. Anda harus melakukan dt.Rows.Add (_ravi); sebaliknya
Salamander2007
1
Dan tidak ada yang namanya AddRow. Ini DataTable.Rows.Add ()
djdd87
Jangan lupa menelepon dt.AcceptChanges () jika Anda menggunakan DataView dengan filter selain CurrentRows.
Salamander2007
@DanD, @ Salamander2007: setuju. Saya mengubahnya sekarang. Maaf untuk kesalahan, itu terjadi karena saya menggunakan dataset yang diketik yang mendukung hal ini.
ini. __curious_geek
@ phoenix: Saya hanya ingin penanya dengan senang hati berhubungan dengan jawaban saya.
ini. __curious_geek
65

Anda juga bisa meneruskan dalam array objek, seperti:

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

Atau bahkan:

dt.Rows.Add(new object[] { "Ravi", 500 });
James McConnell
sumber
11
Alternatif lain untuk ini adalah untuk mencatat Addmetode yang ditunjukkan di atas memiliki kelebihan dengan jumlah variabel params, sehingga Anda dapat mempersingkat ini menjadi dt.Rows.Add("Ravi", 500);dan akan bekerja sama. Satu peringatan besar dengan salah satu dari pendekatan ini: Anda harus menyediakan parameter ini dalam urutan yang sama persis dengan kolom yang ditentukan, jika tidak, Anda akan mendapatkan kesalahan. (Jadi gunakan dengan hati-hati!)
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();
shahnawaz
sumber
29

Buat DataTable:

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

Tambahkan kolom ke tabel:

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

Tambahkan baris ke metode DataTable 1:

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

Tambahkan baris ke metode DataTable 2:

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

Tambahkan baris ke metode DataTable 3 (Tambahkan baris dari tabel lain dengan struktur yang sama):

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

Tambahkan baris ke metode DataTable 4 (Tambahkan baris dari tabel lain):

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

Tambahkan baris ke metode DataTable 5 (Sisipkan baris pada indeks):

MyTable.Rows.InsertAt(row, 8);
Hamed Naeemaei
sumber
24

Untuk menambahkan baris:

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

Untuk melihat struktur:

Table.Columns
djdd87
sumber
18

Anda dapat menulis satu liner menggunakan DataRow.Add (nilai objek params []) alih-alih empat baris.

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

Saat Anda membuat DataTableobjek baru , sepertinya tidak perlu Clear DataTabledalam pernyataan selanjutnya. Anda juga dapat menggunakan DataTable.Columns.AddRangeuntuk menambahkan kolom dengan pernyataan. Kode lengkap akan menjadi.

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

Anda dapat menambahkan Baris dalam satu baris

    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);
Diego
sumber
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();
Mohammed Shafi Adem
sumber
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();
kavitha Reddy
sumber
8

Anda harus menambahkan flatows ke datatable Anda untuk ini.

// 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 );
rahul
sumber
8

Cara termudah adalah membuat DtaTable seperti sekarang

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

Selain jawaban lainnya.

Jika Anda mengontrol struktur DataTable ada jalan pintas untuk menambahkan baris:

// Anggaplah Anda memiliki tabel data yang didefinisikan dalam contoh Anda bernama dt dt.Rows.Add ("Name", "Marks");

Metode DataRowCollection.Add () memiliki kelebihan yang mengambil array param objek. Metode ini memungkinkan Anda memberikan nilai sebanyak yang diperlukan, tetapi harus dalam urutan yang sama dengan kolom yang didefinisikan dalam tabel.

Jadi sementara ini adalah cara yang nyaman untuk menambahkan data baris, ini bisa berisiko digunakan. Jika struktur tabel berubah, kode Anda akan gagal.

Rune Grimstad
sumber
1

Pertanyaan 1: Bagaimana cara membuat DataTable di C #?

Jawaban 1:

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

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

Catatan: Tidak perlu untukClear()ituDataTablesetelah menciptakan itu.

Pertanyaan 2: Bagaimana cara menambahkan baris?

Jawaban 2: Tambahkan satu baris:

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

Tambahkan beberapa baris: gunakan ForEachloop

DataTable dt2 = (DataTable)Session["CartData"]; // This DataTable contains multiple records
foreach (DataRow dr in dt2.Rows)
{
    dt.Rows.Add(dr["Name"], dr["Marks"]);
}
5377037
sumber