SqlCeCommand objek tidak secara otomatis yang dibuang jika Anda menggunakan objek SqlCeDataAdapter

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

GEJALA

Jika Anda menggunakan SqlCeDataAdapter objek untuk mengisi DataSet objek, dan Anda tidak secara eksplisit panggilan Membuang metode untuk semua yang terkait SqlCeCommand contoh, Anda mungkin menerima pesan galat berikut:
Kode kesalahan: 8007000E
Pesan: Tidak cukup penyimpanan adalah tersedia untuk menyelesaikan operasi ini.
Catatan Jenis SqlCeCommand contoh mungkin pilih, memasukkan, update, atau menghapus.

PEMECAHAN MASALAH

Untuk mengatasi masalah ini, secara eksplisit panggilan Membuang metode untuk SqlCeCommand contoh bila Anda menggunakan SqlCeCommand kejadian dengan SqlCeDataAdapter objek.

INFORMASI LEBIH LANJUT

Berikut kode sampel menunjukkan bagaimana untuk mengisi DataSet objek dengan baris dari Microsoft SQL Server 2000 Windows CE Edition atau Microsoft SQL Server 2005 kompak edisi tabel database dengan menggunakan SelectCommand contoh dengan SqlCeDataAdapter objek:
public static DataSet LoadData()
{
	string sqlstring = "";

	//  Make the connection to the SQL Server CE data source
	SqlCeConnection conn = new SqlCeConnection("Data Source=<completePath of SDF file>");

	//  Create the SqlCeDataAdapter object
	sqlCeDataAdapter da = new SqlCeDataAdapter();

	//  Create the DataSet object
	DataSet ds = new DataSet();

	try
	{
		sqlstring = "select name from mytable where name = ?";

		// Create the SelectCommand instance to run a select query
		da.SelectCommand = new SqlCeCommand();

		// Set SelectCommand object properties
		da.SelectCommand.Connection = conn;
        	da.SelectCommand.CommandText = sqlstring;
		da.SelectCommand.Parameters.Add(new  SqlCeParameter("name", System.Data.SqlDbType.NVarChar, 30));
		da.SelectCommand.Parameters["name"].Value = name;


		//  Populate the DataSet object
		da.Fill(ds,"name");
	}

	catch (SqlCeException sqlx)
	{
         	ShowErrors(sqlx);
	}

	catch (Exception x)
        {
		MessageBox.Show(x.Message.ToString());
	}

	finally
	{
		//  Explicitly dispose the SelectCommand instance
		da.SelectCommand.Dispose();

		da.Dispose();
	}

	return ds;
}
Catatan The SelectCommand misalnya dibuang oleh secara eksplisit memanggil Membuang metode di Akhirnya blok.

Berikut contoh kode menyediakan generik metode yang dapat digunakan untuk membersihkan semua objek perintah yang berkaitan dengan SqlCeDataAdapter objek, seperti SelectCommand, InsertCommand, UpdateCommand, dan DeleteCommand objek:
public System.Data.IDbDataAdapter DisposeAdapter (System.Data.IDbDataAdapter dbAdapter)
{
	if (dbAdapter is SqlCeDataAdapter)	
	{
		// Create the SqlCeCommand object and assign the SelectCommand object
		SqlCeCommand cmd = dbAdapter.SelectCommand;


		// Dispose the SqlCeCommand object
                if (cmd != null) 
                {
                    cmd.Dispose();
                }

                cmd = dbAdapter.InsertCommand;
                if (cmd != null) 
                {
                    cmd.Dispose();
                }

                cmd = dbAdapter.UpdateCommand;
                if (cmd != null) 
                {
                    cmd.Dispose();
                }

                cmd = dbAdapter.DeleteCommand; 
                if (cmd != null) 
                {
                    cmd.Dispose();
                }
	}

	return null;
}
Catatan Metode umum dalam sampel ini menerima objek jenis IDbDataAdapter sebagai input parameter, khotbah yang menentukan objek perintah yang terkait dengan IDbDataAdapter objek, dan kemudian kembali hasil IDbDataAdapter objek.

REFERENSI

Untuk informasi lebih lanjut tentang menggunakan objek SqlCeDataAdapter mengambil data dari database SQL Server CE, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
813731Bagaimana mengambil data dari database SQL Server CE 2.0 atau dari database SQL Server 2005 kompak edisi dan menyimpan data dalam dokumen XML

Properti

ID Artikel: 824462 - Kajian Terakhir: 07 Oktober 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft SQL Server 2005 Compact Edition
Kata kunci: 
kbquery kbdatabase kbprb kbdataadapter kbappdev kbinfo kbcodesnippet kbmt KB824462 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:824462

Berikan Masukan