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?


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

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

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

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

24

Untuk menambahkan baris:

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

Untuk melihat struktur:

Table.Columns

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

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

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

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

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

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.


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"]);
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.