Chyba při pokusu o volání metody připravit před přidat parametry: "neošetřené výjimce typu 'System.data.SqlClient.SqlException došlo v system.data.dll"

Překlady článku Překlady článku
ID článku: 310368 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Microsoft Visual C# .NET verzi tohoto článku naleznete 311348.

Tento článek se týká následujících oborů názvů knihovny tříd Microsoft .NET Framework:
  • System.data.OLEDB
  • System.data.SqlClient
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Při vytváření parametrizované příkazu proti Microsoft SQL Server 7.0, pokud volání metody Připravit před přidat parametry do příkazu, zobrazí se následující chybová zpráva:
Neošetřená výjimka typ 'System.data.SqlClient.SqlException došlo v system.data.dll.
Další informace: Systémová chyba.
Tento problém nenastává v SQL Server 2000.

Příčina

K tomuto problému dochází v SQL Server 7.0, protože podle návrhu, nelze spustit metodu Připravit před přidáním parametrů. Týká se Většina databázových systémů.

SQL Server 2000 negeneruje výše uvedené výjimka, protože nespouštěla Připravit, dokud je první příkaz spuštěn. Tato optimalizace zabraňuje režii Připravit, pokud jsou následně provedeny žádné příkazy.

Řešení

Tento problém vyřešíte Nevolejte metoda Připravit až po přidání parametry.

Další informace

Kroky pro reprodukci tohoto chování

Ukázkový kód postupujte používá tabulku oblast Northwind ukázkové databáze.
  1. Spusťte aplikaci Visual Studio .NET.
  2. Vytvořit nový projekt aplikace Visual Basic Windows. Ve výchozím nastavení je Form1 přidán do projektu.
  3. Zkontrolujte, zda projekt obsahuje odkaz na obor názvů System.data a přidat odkaz na tento obor názvů, pokud ji neobsahuje.
  4. Umístěte ovládacího prvku tlačítko na Form1. Změňte vlastnost název tlačítka btnTest a změnit vlastnost TextTest.
  5. Pomocí příkazu Imports na systémy, System.data.OLEDB a System.data.SqlClient obory názvů, takže není nutné kvalifikovat deklarace obory názvů později v kódu. V části "Obecné deklarační" Form1 přidejte následující kód:
    Imports System
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    					
  6. Přidejte následující kód do okna kódu po oblasti "Kód generovaný Windows Form Designer".

    Poznámka:<username>Musíte změnit <uživatelské_jméno> uživatelské jméno a heslo = < silné heslo > správné hodnoty, před spuštěním tohoto kódu. Zkontrolujte IDENTIFIKAČNÍ má příslušná oprávnění k provedení této operace na databázi.
        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. Upravit řetězec připojení (myConnString) jako pro vaše prostředí.
  8. Uložit projekt. V nabídce Debug klepněte na tlačítko Start spustit projektu.
  9. Klepněte na tlačítko Test. Pokud jste připojeni k databázi SQL Server 7.0 generuje kód výše uvedené výjimku.

    Jste připojeni k databázi SQL Server 2000 kód spuštěn správně a zobrazí se okno se zprávou "Úspěšně aktualizováno".
  10. Chcete-li vyřešit tento problém proti SQL Server 7.0, komentář mimo volání command.Prepare předchází kód přidat parametry a znovu spusťte projektu.

Odkazy

Další informace o objektech ADO.NET a syntaxi naleznete v následující Microsoft .NET Framework Software Development Kit (SDK) dokumentace:
Přístup k datům s ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx

Vlastnosti

ID článku: 310368 - Poslední aktualizace: 28. února 2014 - Revize: 2.8
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbnosurvey kbarchive kbmt kbtshoot kberrmsg kbnofix kbprb kbsqlclient kbsystemdata KB310368 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:310368

Dejte nám zpětnou vazbu

 

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