Parametre eklemeden önce Prepare yöntemi çağrısı çalıştığınızda alınan hata: "Bir işlenmeyen özel durum türü 'System.Data.SqlClient.SqlException' içinde system.data.dll oluştu"

Makale çevirileri Makale çevirileri
Makale numarası: 310368 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Bu makalenin Microsoft Visual C# .NET sürümü için bkz: 311348.

Bu makalede, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanlarına başvurulmaktadır:
  • System.Data.OLEDB
  • System.Data.SqlClient
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Komutu için parametreleri eklemeden önce Prepare yöntemini çağırırsanız, Microsoft SQL Server 7.0 karşı parametreleştirilmiş bir komut oluşturduğunuzda aşağıdaki hata iletisini alırsınız:
Işlenmeyen bir özel durum türü 'System.Data.SqlClient.SqlException' içinde system.data.dll oluştu.
Ek bilgi: sistem hatası.
Bu sorun, SQL Server 2000'de oluşmaz.

Neden

Tasarım gereği, parametre eklemeden önce Prepare yöntemi çalıştırılamıyor çünkü, SQL Server 7. 0 ' Bu sorun oluşur. Bu veritabanı sistemlerin çoğu için geçerlidir.

Ilk komut yürütülür kadar Prepare çalışmaz, çünkü SQL Server 2000, yukarıda belirtilen özel durum oluşturmaz. Bu en iyi duruma getirme, hiçbir komut daha sonra çalıştırılır, Prepare, yükü engeller.

Çözüm

Parametreler ekledikten sonra bu sorunu gidermek için <a0></a0>, Prepare yöntemi kadar çağırmayın.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

Northwind bölge tablosunu izlemek için örnek kod kullanan örnek veritabanı.
  1. Microsoft Visual Studio .NET'i başlatın.
  2. Yeni bir Visual Basic Windows Application projesi oluşturun. Form1, varsayılan olarak projeye eklenir.
  3. Projenizi System.Data ad boşluğuna başvuru içerdiğinden emin olun ve yoksa, bu ad için bir başvuru ekleyin.
  4. Bir Düğme denetimi Form1 yerleştirin. Name özelliği düğmenin btnTest için değiştirmek ve sınama için metin özelliği değiştirme.
  5. ımports</a0> deyimini Sistem, System.Data.OLEDB ve System.Data.SqlClient ad kullanmayı kodunuzu daha sonra bu ad boşluklarında bildirimlerinde nitelemek için gerekli değildir. Form1 "Genel bildirimleri" bölümüne aşağıdaki kodu ekleyin:
    Imports System
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    					
  6. Aşağıdaki kod, kod penceresine sonra "Windows Form Designer generated" bölge ekleme.

    Not<username>Kullanıcı KIMLIĞINI ve parolasını değiştirmek için doğru değerler, bu kodu çalıştırmadan önce = < güçlü parola >. Kullanıcı KIMLIĞI'in veritabanında bu işlemi gerçekleştirmek için uygun izinlere sahip olduğundan emin olun.
        Private Sub btnTest_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles btnTest.Click
            Dim myConnString As String = _
                "User ID=<username>;password=<strong password>;Initial Catalog=Northwind;Data Source=myServer"
            Dim id As Integer = 25
            Dim desc As String = "myFirstRegion"
            Dim rConn As SqlConnection = New SqlConnection(myConnString)
            rConn.Open()
            Dim command As SqlCommand = New SqlCommand("", rConn)
            command.CommandText = "insert into Region (RegionID, RegionDescription)" & _
                                  "values (@id, @desc)"
    
            'SQL Server 7.0 throws an exception here.
            'Comment the following line to resolve this problem against SQL Server 7.0.
            command.Prepare()
    
            command.Parameters.Add("@id", SqlDbType.Int, 4)
            command.Parameters.Add("@desc", SqlDbType.Char, 50)
            'You can call Prepare after you set up CommandText and parameters.
            command.Prepare() 
    
            command.Parameters(0).Value = id
            command.Parameters(1).Value = desc
            command.ExecuteNonQuery()
            MessageBox.Show("Updated Successfully")
        End Sub
    					
  7. Bağlantı dizesi (myConnString) ortamınıza uygun olarak değiştirin.
  8. Projenizi kaydetmek. Hata Ayıkla) menüsünde, projenizin çalıştırmak için Başlat ' ı tıklatın.
  9. Sına ' yı tıklatın. Kod, bir SQL Server 7.0 veritabanına bağlıysanız, yukarıda belirtilen özel durum oluşturur.

    SQL Server 2000 veritabanına bağlı, kod düzgün çalışır ve "Başarıyla güncelleştirildi" ileti kutusu görünür.
  10. SQL Server 7.0 karşı bu sorunu gidermek için <a0></a0>, Parametreler ekleyin ve sonra projeyi yeniden çalıştırın kodu önündeki command.Prepare çağrısı aç?klama.

Referanslar

ADO.NET nesneleri ve sözdizimi hakkında daha fazla bilgi için aşağıdaki Microsoft .NET Framework Software Development Kit'e (SDK için) başvuran belgeler:
ADO.NET ile verilere erişme
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx

Özellikler

Makale numarası: 310368 - Last Review: 24 Şubat 2014 Pazartesi - Gözden geçirme: 2.8
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET 2.0
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic 2005
  • Microsoft SQL Server 7.0 Standard Edition
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbtshoot kberrmsg kbnofix kbprb kbsqlclient kbsystemdata KB310368 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:310368

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