CARA: Menerapkan DataSet membuat tabel penolong kelas dalam Visual C#.NET

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 325938 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini selangkah demi selangkah menjelaskan bagaimana menerapkan dan bagaimana menggunakan DataSetHelper kelas yang mencakup kode contoh membuat tabel dari berpembatas koma daftar jenis bidang nama dan data. Artikel ini mencakup metode kedua sehingga Anda juga dapat menentukan kolom kunci utama.

The DataSetHelper termasuk kelas DataSet variabel anggota. Opsional, Anda dapat menetapkan yang ada DataSet keberatan DataSet variabel anggota. Jika variabel anggota poin untuk berlaku DataSet, apapun DataTable objek yang CreateTable metode menciptakan ditambahkan ke DataSet. Dalam kedua kasus, panggilan metode mengembalikan referensi ke DataTable objek.

Untuk informasi lebih lanjut tentang DataSet objek, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
313485 INFO: Peta jalan untuk ADO.NET DataSet, DataView dan DataViewManager

Persyaratan

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang Anda butuhkan:
  • Microsoft Windows XP, Windows 2000, atau Windows NT 4.0 Paket Layanan 6a
  • Microsoft Visual Studio.NET
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan topik-topik berikut:
  • Visual Basic.Sintaks bersih
  • ADO.Dasar-dasar bersih dan sintaks

DataSetHelper Shell kelas

Kode dalam bagian ini menyatakan shell kelas yang semua DataSetHelper Artikel menambahkan metode dan variabel anggota.
  1. Mulai Visual Studio.NET.
  2. Pada File menu, titik Baru, lalu klik Proyek.
  3. Dalam Proyek baru kotak dialog, klik Visual C# proyek di bawah Jenis proyek, lalu klik Perpustakaan kelas di bawah Template.
  4. Dalam Nama kotak, jenis DataSetHelper.
  5. Ganti kode kelas dengan kode berikut:
    public class DataSetHelper
    {
    	public DataSet ds;
    	public DataSetHelper(DataSet DataSet)
    	{
    		ds = DataSet;
    	}
    	public DataSetHelper()
    	{
    		ds = null;
    	}
    }
    					
    Anda dapat menggunakan overloads dua untuk constructor untuk membuat sebuah instance dari kelas dengan atau tanpa referensi untuk berlaku DataSet. Untuk kelas yang berisi referensi untuk berlaku DataSet, the DataTable benda-benda yang metode kembali juga ditambahkan secara otomatis ke DataSet.

CreateTable metode (opsi 1)

Bagian ini berisi kode untuk utama CreateTable metode.

Ini adalah contoh yang menyerukan Konvensi ini CreateTable metode:
DataTable dt = dsHelper.CreateTable("CT1", "Name String, ID Int32 Required, Field3 String Name + ID");
				
Kode ini menciptakan baru DataTable dengan TableName TestTable dan tiga bidang (nama, ID, dan Field3). Bidang nama dan Field3 adalah jenis System.string, dan bidang ID diisi dan jenis System.Int32. Field3 berisi hasil dari ekspresi "+ nama ID".

Menggunakan sintaks berikut untuk menentukan bidang dalam daftar bidang:
fieldname datatype[ REQUIRED|expression], ...
				
  • Tipe data yang didukung adalah setiap anggota Sistem namespace, seperti Int32 atau String anggota. Anda tidak dapat menggunakan jenis spesifik-bahasa data, seperti int atau Bilangan bulat. Juga, tidak menentukan Sistem namespace dalam daftar bidang; namespace ini tersirat.
  • Secara default, semua bidang opsional. Menambahkan kata REQUIRED setelah data type untuk melarang nilai-nilai NULL di lapangan.
  • Ekspresi adalah setiap ungkapan yang sah yang DataColumn kelas mendukung.
Untuk panggilan ini CreateTable metode, menambahkan metode berikut untuk DataSetHelper kelas yang Anda buat di ""bagian:
public DataTable CreateTable(string TableName, string FieldList)
{	
	DataTable dt = new DataTable(TableName);
	DataColumn dc;
	string[] Fields= FieldList.Split(',');    
	string[] FieldsParts;
	string Expression;
	foreach(string Field in Fields)
	{
		FieldsParts = Field.Trim().Split(" ".ToCharArray(), 3); // allow for spaces in the expression
		// add fieldname and datatype			
		if (FieldsParts.Length == 2)
		{	
			dc = dt.Columns.Add(FieldsParts[0].Trim(), Type.GetType("System." + FieldsParts[1].Trim(),true,true));
			dc.AllowDBNull = true;
		}
		else if (FieldsParts.Length == 3)  // add fieldname, datatype, and expression
		{
			Expression = FieldsParts[2].Trim();
			if (Expression.ToUpper() == "REQUIRED")
			{				
				dc = dt.Columns.Add(FieldsParts[0].Trim(), Type.GetType("System." + FieldsParts[1].Trim(), true, true));
				dc.AllowDBNull = false;
			}
			else
			{
				dc = dt.Columns.Add(FieldsParts[0].Trim(), Type.GetType("System." + FieldsParts[1].Trim(), true, true), Expression);
			}
		}
		else
		{
			throw new ArgumentException("Invalid field definition: '" + Field + "'.");
		}
	}
	if (ds != null) 
	{
	        ds.Tables.Add(dt);
	}
	return dt;
}
				

CreateTable metode (opsi 2)

Bagian ini berisi kode untuk kedua CreateTable metode yang sama sebagai metode pertama kecuali bahwa kode ini menambahkan daftar bidang kunci berpembatas koma. Metode ini panggilan pertama CreateTable metode untuk membuat DataTable, mem-parsing daftar bidang kunci, dan kemudian menetapkan DataTable.PrimaryKey properti.

Ini adalah contoh yang menyerukan Konvensi ini CreateTable metode:
DataTable dt = dsHelper.CreateTable("CT2","Name String, ID Int32 Required, Field3 String Name + ID", "ID");
				
Kode ini menciptakan baru DataTable dengan TableName TestTable dan tiga bidang. Dalam kode ini, bidang ID adalah kunci utama. Anda dapat menetapkan lebih dari satu nama field kunci (misalnya, ID dan nama).

Untuk panggilan ini CreateTable metode, menambahkan metode berikut untuk DataSetHelper kelas yang Anda buat di ""bagian:
public DataTable CreateTable(string TableName, string FieldList , string KeyFieldList)
{
	DataTable dt = CreateTable(TableName, FieldList);
	string[] KeyFields = KeyFieldList.Split(',');
	if (KeyFields.Length > 0)
	{
		DataColumn[] KeyFieldColumns= new DataColumn[KeyFields.Length];								        int i;
		for (i = 1; i==KeyFields.Length-1 ; ++i)
		{
		        KeyFieldColumns[i] = dt.Columns[KeyFields[i].Trim()];
		}
		dt.PrimaryKey = KeyFieldColumns;	
	}
	return dt;  // You do not have to add to DataSet - The CreateTable call does that
}
				

Menguji aplikasi

  1. Simpan dan kemudian kompilasi DataSetHelper kelas yang Anda buat dalam bagian sebelumnya.
  2. Ikuti langkah berikut untuk membuat baru Visual C# aplikasi Windows:
    1. Mulai Visual Studio.NET.
    2. Pada Berkas menu, titik Baru, lalu klik Project.
    3. Dalam Proyek baru kotak dialog, klik Visual C# proyek di bawah Jenis proyek, lalu klik Aplikasi Windows di bawah Pola acu.
  3. Dalam solusi Explorer, klik kanan solusi, dan kemudian klik Menambahkan ada proyek. Tambahkan DataSetHelper proyek.
  4. Pada Project menu, klik Menambahkan referensi.
  5. Dalam Menambahkan referensi kotak dialog, klik Proyek tab, dan kemudian menambahkan referensi ke proyek DataSetHelper untuk Windows formulir aplikasi.
  6. Dalam bentuk desainer, tarik dua Tombol kontrol dan DataGrid kontrol dari toolbox untuk bentuk. Nama tombol btnCreate1 dan btnCreate2. Menjaga nama standar untuk DataGrid kontrol (DataGrid1).
  7. Dalam bentuk kode, tambahkan berikut Impor Pernyataan atas jendela kode:
    using System.Data
    					
  8. Tambahkan berikut Deklarasi variabel bentuk definisi:
    	DataSet ds;
    	DataSetHelper dsHelper;
    					
  9. Tambahkan kode berikut untuk Form.load acara:
            ds = new DataSet();
    	dsHelper = new DataSetHelper(ds);
    					
  10. Tambahkan kode berikut untuk btnCreate1.Click acara:
    	DataTable dt = dsHelper.CreateTable("CT1", "Name String, ID Int32 Required, Field3 String Name + ID");
    	dt.Rows.Add(new Object[] {"Jones", 4});
    	dt.Rows.Add(new Object[] {"Jones", 8});
    	dt.Rows.Add(new Object[] {"Thompson", 42});
    	dataGrid1.SetDataBinding(ds,"CT1");	
    					
  11. Tambahkan kode berikut untuk btnCreate2.Click acara:
    	DataTable dt = dsHelper.CreateTable("CT2","Name String, ID Int32 Required, Field3 String Name + ID", "ID");
    	dt.Rows.Add(new Object[] {"Tom Jones", 45});
    	dt.Rows.Add(new Object[] {"Will Smith", 58});
    	dt.Rows.Add(new Object[] {"Davey Jones", 84});
    	dt.Rows.Add(new Object[] {"Rob Thompson", 42});
    	dataGrid1.SetDataBinding(ds, "CT2");
    
    					
  12. Menjalankan aplikasi, dan kemudian klik masing-masing tombol. Perhatikan bahwa DataGrid diisi dengan meja dan data dari kode.

    CATATAN: Anda hanya dapat mengklik tombol satu kali. Jika Anda klik salah satu tombol ini lebih dari satu kali, Anda menerima pesan galat yang Anda mencoba untuk menambahkan tabel yang sama dua kali.

Ide-ide peningkatan

Anda dapat memperpanjang parser sehingga Anda dapat menentukan panjang maksimum untuk kolom string. Sebagai contoh, Anda dapat menggunakan sintaks berikut:
String(50)
				
Menambahkan kondisi untuk memeriksa apakah jenis data dimulai dengan "String(". Jika itu, menggunakan nomor untuk mengatur MaxLength properti DataColumn objek.

Pemecahan Masalah

  • Ekspresi tidak boleh berisi tanda koma, bahkan jika koma tertanam dalam tanda kutip. Sebagai contoh, ungkapan berikut tidak sah:
    LastName+", "+FirstName
    					
    Ini adalah pembatasan parsing teknik yang digunakan. Anda dapat menggunakan teknik parsing yang lebih canggih sehingga Anda dapat menanamkan koma dalam tanda kutip. Untuk mengatasi keterbatasan ini, tambahkan ekspresi bermasalah setelah tabel dibuat.

  • Jika Anda mengklik sebuah tombol lebih dari satu kali, tabel yang sama yang ditambahkan dua kali untuk DataSet, yang mengakibatkan pengecualian. Untuk mengatasi masalah ini, Anda dapat menambahkan kode untuk aplikasi tes untuk memeriksa apakah DataTable nama yang sama sudah ada. Atau, Anda dapat membuat DataSetHelper kelas tanpa referensi untuk DataSet dan kemudian mengikat DataGrid.DataSource properti secara langsung untuk DT variabel bukan dengan menggunakan SetDataBinding metode panggilan.

Properti

ID Artikel: 325938 - Kajian Terakhir: 03 Oktober 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Kata kunci: 
kbhowtomaster kbsystemdata kbmt KB325938 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:325938

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com