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

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:310368
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Для 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 SystemImports System.Data.OleDbImports 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 — последний просмотр: 02/21/2014 00:43:51 — редакция: 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
Отзывы и предложения