Ошибка при попытке вызвать метод подготовки, прежде чем добавлять параметры: «Произошло необработанное исключение типа «System.Data.SqlClient.SqlException» произошло в system.data.dll»

Переводы статьи Переводы статьи
Код статьи: 310368 - Vizualiza?i produsele pentru care se aplic? acest articol.
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Для Microsoft Visual C#.NET версии статьи, см. 311348.

В данной статье относится следующие корпорации Майкрософт.Библиотека классов NET Framework пространства имен:
  • System.Data.OleDb
  • System.Data.SqlClient
Развернуть все | Свернуть все

В этой статье

Проблема

При создании параметризованных команд от корпорации Майкрософт SQL Server 7.0, при вызове Подготовка метод, прежде чем добавлять параметры команды, то появится следующее сообщение об ошибке:
Необработанное исключение типа «System.Data.SqlClient.SqlException» при system.data.dll.
Дополнительные сведения: ошибка системы.
Эта проблема не возникает в SQL Server 2000.

Причина

Данная проблема возникает в SQL Server 7.0, конструкция не удается запустить Подготовка метод перед добавлением параметров. Это относится к большинству баз данных систем.

SQL Server 2000 не создает вышеуказанную исключение, так как он работает Подготовка пока выполняется первая команда. Эта оптимизация позволяет предотвратить Дополнительные издержки Подготовка Если нет команды выполняются последовательно.

Решение

Чтобы решить эту проблему, не нужно вызывать Подготовка метод пока после добавления параметров.

Дополнительная информация

Действия по воспроизведению проблемы

Пример кода для выполнения использует таблицу Region базы данных Northwind Образец базы данных.
  1. Запустите Microsoft Visual Studio.NET.
  2. Создание нового проекта приложения Windows Visual Basic. По умолчанию в проект добавляется Form1.
  3. Убедитесь, что проект содержит ссылку на System.Data пространство имен и добавьте ссылку на пространство имен, в противном случае не.
  4. Место Кнопка элемент управления на форму Form1. Изменение Имя свойство кнопки btnTest, и изменить Текст Свойство Тест.
  5. Использование Импортируемые пространства имен Инструкция по Система, System.Data.OleDb, и System.Data.SqlClient пространства имен таким образом, не требуется указывать объявления в этих пространствах имен в коде. Добавьте следующий код в главной" Раздел декларации"Form1:
    Imports System
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    					
  6. Добавьте следующий код в окно кода после Область «Конструктора форм Windows Forms созданный код».

    Примечание Необходимо изменить код пользователя <username> и пароль =<strong password=""> правильные значения, перед запуском этого код. Убедитесь, что идентификатор пользователя, имеет соответствующие разрешения на выполнение данной операции над базой данных.</strong></username>
        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. Изменение (строка подключения)myConnString) в зависимости от окружения.
  8. Сохраните проект. На Отладка меню, нажмите кнопку Начало для запуска проекта.
  9. Нажмите кнопку Тест. Если вы подключены к базе данных SQL Server 7.0, код Создает вышеуказанную исключения.

    Если вы подключены к База данных SQL Server 2000, код работает правильно, а обновленная версия" Успешно» появится окно сообщения.
  10. Чтобы решить эту проблему с SQL Server 7.0, в комментарий вызов метода команда.Подготовка Перед код для добавления параметров и запуска проект еще раз.

Ссылки

Дополнительные сведения о ADO.NET объекты и синтаксис, обратитесь следующие корпорации Майкрософт.NET Framework пакет средств разработки программного обеспечения (SDK) документация:
Доступ к данным с помощью ADO.NET
http://msdn2.Microsoft.com/en-us/library/e80y5yhx (vs.71) .aspx

Свойства

Код статьи: 310368 - Последний отзыв: 21 февраля 2014 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft ADO.NET 2.0
  • 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
Ключевые слова: 
kbnosurvey kbarchive kbtshoot kberrmsg kbnofix kbprb kbsqlclient kbsystemdata kbmt KB310368 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: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