C# — Проблема при запроссе к бд через MySqlConnector C#


Вопрос по работе с базами данных через C# сниппеты.

Veterinar

Client

Доброго времени суток.

Почитал немного документацию (несколько куцая она и без нормальных примеров) и исходя из ее данных при использовании ZennoPoster.Db, я постоянно открываю соединение с mySql или любой другой базой данных по новой, что дает мне при частом использовании БД кучу открытых соединений, это если я правильно понял.

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

Если не рекомендуете по опыту то просто скажите чтобы я бросил это дело и подключил библиотеки из VisualStudio для работы с mySql и не парился, хотя я не добавлял другие библиотеки в зенно еще ни разу потому тут тоже прошу совета.

Я не сильно опытен в работе с базами данных, не судите строго.

Скрин набора базовых функций для взаимодействия с БД:

Подключение к mysql из 1С через «mysql-connector-odbc» НЕ РАБОТАЕТ ((

Добрый день.
На Server 2012 R2 установлено:
— 1c server и платформа «1С:Предприятие 8.3 (8.3.8.1652)»
— SQL Server 2012
— Конфигурация «Зарплата и управление персоналом, редакция 3.0 (3.0.25.101)» , хотя она в данной задаче не играете никакой роли
— Драйвер «mysql-connector-odbc-5.3.4-win32»
— СКУД с БД MySQL на борту

Задача — подключиться к БД СКУД и вытащить данные по запросу.
Проблема — при подключении из 1С вылетает ошибка — «Ошибка при вызове метода контекста (open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию»»

Что уже пробовали: переустанавливать разные версии драйвера, вносить информацию о БД в реестр, переписывание кода и строки подключение к БД ( как на прямую так и через DSN). Если вкратце то — два для танцев с бубнами не дало никакого результата.
http://itmages.ru/image/view/4827172/31d239fd
Примечание — тестирование подключения к БД из менеджера ODBC работает.
Дополнительная информация на картинках ниже.
http://itmages.ru/image/view/4827173/bcb9f200
http://itmages.ru/image/view/4827178/bddf0f5c
http://itmages.ru/image/view/4827179/bea4580d
Буду рад любой помощи. Спасибо.

С чем связаны такие выводы?

Я кстати маленько ошибся:
Сама база находится на:
Server 2012 R2 где установлено:
— 1c server и платформа «1С:Предприятие 8.3 (8.3.8.1652)»
— SQL Server 2012
— Конфигурация «Зарплата и управление персоналом, редакция 3.0 (3.0.25.101)» , хотя она в данной задаче не играете никакой роли

А вот сам драйвер mysql-connector-odbc-5.3.4-win32 установлен на server 2012 , там же и платформа 1С с сервером конечно есть, но база из которой подключаемся находится на другой сервере.

C# — Проблема при запроссе к бд через MySqlConnector C#

Прежде, чем делать запросы к БД, надо почитать что-нибудь о базах данных. Во всех источниках в самом начале Вы можете найти, что первое, что надо сделать — это установить связь с БД при помощи строки соединения, например:

string _connectionPath =
«Data Source=» + serverName +
«; Database=» + dbName +
«; User > «; Password=» + dbUserPass +
«; Connect Timeout=15; CharSet=cp1251»;

И уж затем делать то, что написал damprink, подставив этот _connectionPath.

«Путь» указывается в «Data Source» (иногда это называется «Server», «Srv» и т.д.). Кстати, serverName может содержать IP-адрес сервера, а не только сетевое имя. Если база находится на том же компе, то обычно указывают «localhost» или просто точку: «.»

C# — Проблема при запроссе к бд через MySqlConnector C#

Здравствуйте вот сколько не старался не могу найти примера для работы с mysql а именно как вывести данные откуда нашел и болие или мение разобрался как обновлять данные а вот не подскажите ли код именно для вывода данных в listbox имееться 3 столбца описаны ниже

Как мне вывести из этой тоблици id,name,lastname в listbox(1,2,3)

Ответы

Примерно так, правда Вам строку подключения надо подправить, у Вас она будет другой.

  • Изменено Yatajga Editor 19 июля 2012 г. 17:45 Дополнил
  • Помечено в качестве ответа Alex_KG 20 июля 2012 г. 8:45

Все ответы

прямо код наверное не подскажу быстро,
но в и-нете видел компонент для entity framework,
он подключается к MySQL (сам пробовал год назад).
Ппотом можно написать linq запрос (или текстовый),
и получить что надо.
Ну а там уже куда хочется вывести можно.

Вроде даже на сайте MYSQL и брал.
В VS интегрируется даже.

это по-моему я ставил, только более старую врсию
http://dev.mysql.com/downloads/connector/net/
через раз как-то выпускали они раньше версию, где визульный редактор не работал в visual studio,
несколько версий если что можно скачать.

Примерно так, правда Вам строку подключения надо подправить, у Вас она будет другой.

Sql Connection Класс

Определение

Представляет подключение к базе данных SQL Server. Represents a connection to a SQL Server database. Этот класс не наследуется. This class cannot be inherited.

Примеры

В следующем примере производится создание объектов SqlCommand и SqlConnection. The following example creates a SqlCommand and a SqlConnection. Соединение SqlConnection открыто и задано в свойстве Connection объекта SqlCommand. The SqlConnection is opened and set as the Connection for the SqlCommand. Затем в примере вызывается ExecuteNonQuery. The example then calls ExecuteNonQuery. Для этого ExecuteNonQuery передается строка подключения и строка запроса, которая является инструкцией Transact-SQL Transact-SQL INSERT. To accomplish this, the ExecuteNonQuery is passed a connection string and a query string that is a Transact-SQL Transact-SQL INSERT statement. Соединение закрывается автоматически, когда код выходит из блока using. The connection is closed automatically when the code exits the using block.

Комментарии

Объект SqlConnection представляет собой уникальный сеанс для SQL Server источника данных. A SqlConnection object represents a unique session to a SQL Server data source. В системе базы данных клиента или сервера она эквивалентна сетевому подключению к серверу. With a client/server database system, it is equivalent to a network connection to the server. SqlConnection используется вместе с SqlDataAdapter и SqlCommand для повышения производительности при подключении к базе данных Microsoft SQL Server. SqlConnection is used together with SqlDataAdapter and SqlCommand to increase performance when connecting to a Microsoft SQL Server database. Для всех SQL Server продуктов сторонних производителей и других поддерживаемых OLE DB источников данных используйте OleDbConnection. For all third-party SQL Server products and other OLE DB-supported data sources, use OleDbConnection.

При создании экземпляра SqlConnection всем свойствам присваиваются их начальные значения. When you create an instance of SqlConnection, all properties are set to their initial values. Список этих значений см. в конструкторе SqlConnection. For a list of these values, see the SqlConnection constructor.

Список ключевых слов в строке подключения см. в разделе ConnectionString. See ConnectionString for a list of the keywords in a connection string.

Если SqlConnection выходит из области, она не будет закрыта. If the SqlConnection goes out of scope, it won’t be closed. Поэтому необходимо явно закрыть соединение, вызвав Close или Dispose . Therefore, you must explicitly close the connection by calling Close or Dispose . функции Close и Dispose функционально эквивалентны. Close and Dispose are functionally equivalent. Если значение пула соединений Pooling равно true или yes , то базовое соединение возвращается в пул соединений. If the connection pooling value Pooling is set to true or yes , the underlying connection is returned back to the connection pool. С другой стороны, если Pooling имеет значение false или no , то базовое соединение с сервером фактически закрывается. On the other hand, if Pooling is set to false or no , the underlying connection to the server is actually closed.

Цукерберг рекомендует:  Javascript - Как в javascript создать односвязный список с помощью цикла

События входа в систему и выхода из системы не вызываются на сервере при выборке подключения из пула подключений и при возврате его в пул подключений, поскольку при возврате в пул подключений подключение фактически не закрывается. Login and logout events will not be raised on the server when a connection is fetched from or returned to the connection pool, because the connection is not actually closed when it is returned to the connection pool. Дополнительные сведения см. в разделе Пулы подключений SQL Server (ADO.NET). For more information, see SQL Server Connection Pooling (ADO.NET).

Чтобы обеспечить постоянное закрытие подключений, откройте соединение внутри блока using , как показано в следующем фрагменте кода. To ensure that connections are always closed, open the connection inside of a using block, as shown in the following code fragment. Это гарантирует, что соединение будет автоматически закрыто при выходе кода из блока. Doing so ensures that the connection is automatically closed when the code exits the block.

Для развертывания высокопроизводительных приложений необходимо использовать пулы соединений. To deploy high-performance applications, you must use connection pooling. При использовании .NET Framework поставщика данных для SQL Server не нужно включать пулы соединений, так как поставщик управляет этим автоматически, хотя некоторые параметры можно изменить. When you use the .NET Framework Data Provider for SQL Server, you do not have to enable connection pooling because the provider manages this automatically, although you can modify some settings. Дополнительные сведения см. в разделе Пулы подключений SQL Server (ADO.NET). For more information, see SQL Server Connection Pooling (ADO.NET).

Если SqlException создается методом, выполняющим SqlCommand, SqlConnection остается открытым, если уровень серьезности не равен 19 или меньше. If a SqlException is generated by the method executing a SqlCommand, the SqlConnection remains open when the severity level is 19 or less. Если уровень серьезности равен 20 или больше, сервер обычно закрывает SqlConnection. When the severity level is 20 or greater, the server ordinarily closes the SqlConnection. Тем не менее, пользователь может опять открыть подключение и продолжить работу. However, the user can reopen the connection and continue.

Приложение, которое создает экземпляр объекта SqlConnection, может потребовать, чтобы все прямые и косвенные вызывающие объекты имели достаточные разрешения на доступ к коду, установив декларативные или императивные требования к безопасности. An application that creates an instance of the SqlConnection object can require all direct and indirect callers to have sufficient permission to the code by setting declarative or imperative security demands. SqlConnection выполняет требования безопасности с помощью объекта SqlClientPermission. SqlConnection makes security demands using the SqlClientPermission object. Пользователи могут убедиться, что их код имеет достаточные разрешения, используя объект SqlClientPermissionAttribute. Users can verify that their code has sufficient permissions by using the SqlClientPermissionAttribute object. Пользователи и администраторы также могут использовать средство Caspol. exe (политика управления доступом для кода) для изменения политики безопасности на уровне компьютера, пользователя и предприятия. Users and administrators can also use the Caspol.exe (Code Access Security Policy Tool) to modify security policy at the machine, user, and enterprise levels. Дополнительные сведения см. в разделе Безопасность в .NET. For more information, see Security in .NET. Пример, демонстрирующий использование требований безопасности, см. в разделе Управление доступом для кода и ADO.NET. For an example demonstrating how to use security demands, see Code Access Security and ADO.NET.

Дополнительные сведения об обработке предупреждений и информационных сообщений с сервера см. в разделе события подключения. For more information about handling warning and informational messages from the server, see Connection Events. Дополнительные сведения об ошибках SQL Server Engine и сообщениях об ошибках см. в разделе ядро СУБД события и ошибки. For more information about SQL Server engine errors and error messages, see Database Engine Events and Errors.

Вместо общей памяти можно принудительно использовать TCP. You can force TCP instead of shared memory. Это можно сделать путем добавления префикса TCP: к имени сервера в строке подключения или же можно использовать localhost. You can do that by prefixing tcp: to the server name in the connection string or you can use localhost.

Конструкторы

Инициализирует новый экземпляр класса SqlConnection. Initializes a new instance of the SqlConnection class.

Инициализирует новый экземпляр класса SqlConnection после получения строки, содержащей строку соединения. Initializes a new instance of the SqlConnection class when given a string that contains the connection string.

Инициализирует новый экземпляр класса SqlConnection, используя строку подключения, в которой не используется Integrated Security = true , и объект SqlCredential, содержащий идентификатор пользователя и пароль. Initializes a new instance of the SqlConnection >Integrated Security = true and a SqlCredential object that contains the user ID and password.

Свойства

Возвращает или задает токен доступа для подключения. Gets or sets the access token for the connection.

Возвращает значение, показывающее, может ли компонент вызывать событие. Gets a value indicating whether the component can raise an event.

(Унаследовано от Component) ClientConnectionId

Идентификатор соединения последней попытки подключения, независимо от того, успешно ли выполнена попытка или завершилась ошибкой. The connection ID of the most recent connection attempt, regardless of whether the attempt succeeded or failed.

Возвращает или задает срок жизни для записей ключей шифрования столбцов в кэше ключей шифрования столбцов для функции Always Encrypted. Gets or sets the time-to-live for column encryption key entries in the column encryption key cache for the Always Encrypted feature. Значение по умолчанию — 2 часа. The default value is 2 hours. 0 означает отсутствие кэширования. 0 means no caching at all.

Возвращает или задает значение, которое указывает, включено ли кэширование метаданных запроса (True) или нет (False) для параметризованных запросов к базам данных с поддержкой функции Always Encrypted. Gets or sets a value that indicates whether query metadata caching is enabled (true) or not (false) for parameterized queries running against Always Encrypted enabled databases. Значение по умолчанию — true. The default value is true.

Позволяет задать список доверенных путей к разделам для сервера базы данных. Allows you to set a list of trusted key paths for a database server. Если при обработке запроса приложения драйвер получает путь к разделу, которого нет в списке, запрос завершится ошибкой. If while processing an application query the driver receives a key path that is not on the list, the query will fail. Это свойство обеспечивает дополнительную защиту от атак на систему безопасности, которые подразумевают предоставление скомпрометированным сервером SQL Server неверных путей к разделам, что может привести к утечке учетных данных хранилища ключей. This property provides additional protection against security attacks that involve a compromised SQL Server providing fake key paths, which may lead to leaking key store credentials.

Цукерберг рекомендует:  Bitcoin API и PHP – Базовое использование

Получает или задает строку, используемую для открытия базы данных SQL Server. Gets or sets the string used to open a SQL Server database.

Возвращает значение времени ожидания (в секундах) при попытке установления подключения, по истечении которого процедура завершается и генерируется ошибка. Gets the time to wait (in seconds) while trying to establish a connection before terminating the attempt and generating an error.

Возвращает контейнер IContainer, содержащий компонент Component. Gets the IContainer that contains the Component.

(Унаследовано от Component) Credential

Возвращает или задает объект SqlCredential для этого подключения. Gets or sets the SqlCredential object for this connection.

Получает имя текущей базы данных или базы данных, которая будет использоваться после открытия подключения. Gets the name of the current database or the database to be used after a connection is opened.

Получает имя экземпляра SQL Server, к которому осуществляется подключение. Gets the name of the instance of SQL Server to which to connect.

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время. Gets a value that indicates whether the Component is currently in design mode.

(Унаследовано от Component) Events

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component. Gets the list of event handlers that are attached to this Component.

(Унаследовано от Component) FireInfoMessageEventOnUserErrors

Получает размер сетевых пакетов (в байтах), используемых при взаимодействии с экземпляром SQL Server. Gets the size (in bytes) of network packets used to communicate with an instance of SQL Server.

Получает строку, содержащую версию экземпляра SQL Server, к которому подключается клиент. Gets a string that contains the version of the instance of SQL Server to which the client is connected.

Возвращает или задает ISite объекта Component. Gets or sets the ISite of the Component.

(Унаследовано от Component) State

Отображает состояние SqlConnection во время последней сетевой операции, выполненной по подключению. Indicates the state of the SqlConnection during the most recent network operation performed on the connection.

Когда задано значение true , разрешает сбор статистических сведений для текущего подключения. When set to true , enables statistics gathering for the current connection.

Получает строку, определяющую клиента базы данных. Gets a string that identifies the database client.

Методы

Начинает транзакцию базы данных. Starts a database transaction.

Начинает транзакцию базы данных с указанным уровнем изоляции. Starts a database transaction with the specified isolation level.

Начинает транзакцию базы данных с указанным уровнем изоляции и именем транзакции. Starts a database transaction with the specified isolation level and transaction name.

Начинает транзакцию базы данных с указанным уровнем изоляции. Starts a database transaction with the specified transaction name.


Осуществляет смену текущей базы данных для открытого соединения SqlConnection. Changes the current database for an open SqlConnection.

Изменяет пароль SQL Server для пользователя, указанного в объекте SqlCredential. Changes the SQL Server password for the user indicated in the SqlCredential object.

Заменяет пароль SQL Server для пользователя, указанного в строке подключения, заданным новым паролем. Changes the SQL Server password for the user indicated in the connection string to the supplied new password.

Очищает пул подключений. Empties the connection pool.

Очищает пул подключений, связанный с заданным подключением. Empties the connection pool associated with the specified connection.

Закрывает соединение с базой данных. Closes the connection to the database. Рекомендуется использовать этот метод для закрытия любого открытого подключения. This is the preferred method of closing any open connection.

Создает и возвращает объект SqlCommand, связанный с SqlConnection. Creates and returns a SqlCommand object associated with the SqlConnection.

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Унаследовано от MarshalByRefObject) Dispose()

Освобождает все ресурсы, занятые модулем Component. Releases all resources used by the Component.

(Унаследовано от Component) Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы. Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(Унаследовано от Component) EnlistDistributedTransaction(ITransaction)

Выполняет присоединение указанной транзакции как распределенной транзакции. Enlists in the specified transaction as a distributed transaction.

Выполняет присоединение указанной транзакции как распределенной транзакции. Enlists in the specified transaction as a distributed transaction.

Определяет, равен ли заданный объект текущему объекту. Determines whether the specified object is equal to the current object.

(Унаследовано от Object) GetHashCode()

Служит хэш-функцией по умолчанию. Serves as the default hash function.

(Унаследовано от Object) GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра. Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject) GetSchema()

Возвращает сведения схемы для источника данных этого объекта SqlConnection. Returns schema information for the data source of this SqlConnection. Дополнительные сведения о схеме см. в разделе Коллекции схемы SQL Server. For more information about scheme, see SQL Server Schema Collections.

Возвращает сведения о схеме для источника данных этого объекта SqlConnection, используя указанную строку в качестве имени схемы. Returns schema information for the data source of this SqlConnection using the specified string for the schema name.

Возвращает сведения о схеме для источника данных этого объекта SqlConnection, используя указанную строку в качестве имени схемы и указанный массив строк для значений ограничений. Returns schema information for the data source of this SqlConnection using the specified string for the schema name and the specified string array for the restriction values.

Возвращает объект, представляющий службу, обеспечиваемую компонентом Component или его контейнером Container. Returns an object that represents a service provided by the Component or by its Container.

(Унаследовано от Component) GetType()

Возвращает объект Type для текущего экземпляра. Gets the Type of the current instance.

(Унаследовано от Object) InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. Obtains a lifetime service object to control the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject) MemberwiseClone()

Создает неполную копию текущего объекта Object. Creates a shallow copy of the current Object.

(Унаследовано от Object) MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject. Creates a shallow copy of the current MarshalByRefObject object.

(Унаследовано от MarshalByRefObject) Open()

Открывает подключение к базе данных со значениями свойств, определяемыми объектом ConnectionString. Opens a database connection with the property settings specified by the ConnectionString.

Асинхронная версия Open(), которая открывает соединение с базой данных с параметрами свойства, указанными в строке ConnectionString. An asynchronous version of Open(), which opens a database connection with the property settings specified by the ConnectionString. Чтобы запросить отмену операции до истечения времени ожидания соединения, можно использовать токен отмены. The cancellation token can be used to request that the operation be abandoned before the connection timeout elapses. Исключения будут распространяться с помощью возвращаемой задачи. Exceptions will be propagated via the returned Task. Если время ожидания соединения истекло без успешного подключения, возвращаемая задача будет помечена как сбойная с исключением. If the connection timeout time elapses without successfully connecting, the returned Task will be marked as faulted with an Exception. Реализация возвращает задачу без блокировки вызывающего потока как для соединений, помещенных в пул, так и соединений вне пула. The implementation returns a Task without blocking the calling thread for both pooled and non-pooled connections.

Цукерберг рекомендует:  C# - Ресурсы, c#

Регистрирует поставщиков хранилища ключей шифрования столбцов. Registers the column encryption key store providers.

Если сбор статистики разрешен, все значения сбрасываются в нуль. If statistics gathering is enabled, all values are reset to zero.

Возвращает коллекцию пар имя-значение статистических данных на момент вызова метода. Returns a name value pair collection of statistics at the point in time the method is called.

Возвращает объект String, содержащий имя Component, если оно есть. Returns a String containing the name of the Component, if any. Этот метод не следует переопределять. This method should not be overridden.

(Унаследовано от Component)

События

Происходит при удалении компонента вызовом метода Dispose(). Occurs when the component is disposed by a call to the Dispose() method.

(Унаследовано от Component) InfoMessage

Возникает, когда SQL Server возвращает предупреждение или информационное сообщение. Occurs when SQL Server returns a warning or informational message.

Возникает при изменении состояния подключения. Occurs when the state of the connection changes.

Явные реализации интерфейса

Создает новый объект, являющийся копией текущего экземпляра. Creates a new object that is a copy of the current instance.

Начинает транзакцию базы данных. Begins a database transaction.

Начинает транзакцию базы данных с указанным значением IsolationLevel. Begins a database transaction with the specified IsolationLevel value.

Создает и возвращает объект Command, связанный с подключением. Creates and returns a Command object that is associated with the connection.

Connector/NET 8.0.18

Connector/NET is a fully-managed ADO.NET driver for MySQL.

MySQL Connector/NET 8.0 is compatible with all MySQL versions starting with MySQL 5.5. Additionally, MySQL Connector/NET 8.0 supports the new X DevAPI for development with MySQL Server 8.0.

MySQL Connector/NET 8.0 is highly recommended for use with MySQL Server 8.0, 5.7, 5.6, and 5.5. Please upgrade to MySQL Connector/NET 8.0.

Please report any bugs or inconsistencies you observe to our Bugs Database.
Thank you for your support!

Подключаемся к серверу MySQL через SSH для выполнения запросов (C#)

В данной записи показываю, как подключаться в MySQL через SSH с помощью C# и библиотеки Renci.SshNet
В среде Visual Studio (старше 2008) через систему управления пакетами Nuget добавляем библиотеку SshNet.
Добавляем библиотеку mysql.dll (Можно скачать connector на www.mysql.com).
Переходим к написанию кода. Объявляем SshClient:

private static SshClient client = new SshClient(«120.20.20.20», «login_ssh», «password_ssh»);

Настраиваем строку подключения к MySQL

Объявим строку подключения connBuilderIMSoverSSH и настроим ее:

Пробрасываем порт для SSH

Проверяем, открыто ли подключение к SSH. Если не открыто, открываем:

Выполняем запрос к MySQL через SSH

В итоге мы получили функцию, которая возвращает результат запроса в БД MySQL через SSH в виде DataTable.

Вопрос по работе с базами данных через C# сниппеты.

Veterinar

Client

Доброго времени суток.

Почитал немного документацию (несколько куцая она и без нормальных примеров) и исходя из ее данных при использовании ZennoPoster.Db, я постоянно открываю соединение с mySql или любой другой базой данных по новой, что дает мне при частом использовании БД кучу открытых соединений, это если я правильно понял.

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

Если не рекомендуете по опыту то просто скажите чтобы я бросил это дело и подключил библиотеки из VisualStudio для работы с mySql и не парился, хотя я не добавлял другие библиотеки в зенно еще ни разу потому тут тоже прошу совета.

Я не сильно опытен в работе с базами данных, не судите строго.

Скрин набора базовых функций для взаимодействия с БД:

Подключение к mysql из 1С через «mysql-connector-odbc» НЕ РАБОТАЕТ ((

Добрый день.
На Server 2012 R2 установлено:
— 1c server и платформа «1С:Предприятие 8.3 (8.3.8.1652)»
— SQL Server 2012
— Конфигурация «Зарплата и управление персоналом, редакция 3.0 (3.0.25.101)» , хотя она в данной задаче не играете никакой роли
— Драйвер «mysql-connector-odbc-5.3.4-win32»
— СКУД с БД MySQL на борту

Задача — подключиться к БД СКУД и вытащить данные по запросу.
Проблема — при подключении из 1С вылетает ошибка — «Ошибка при вызове метода контекста (open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию»»

Что уже пробовали: переустанавливать разные версии драйвера, вносить информацию о БД в реестр, переписывание кода и строки подключение к БД ( как на прямую так и через DSN). Если вкратце то — два для танцев с бубнами не дало никакого результата.
http://itmages.ru/image/view/4827172/31d239fd
Примечание — тестирование подключения к БД из менеджера ODBC работает.
Дополнительная информация на картинках ниже.
http://itmages.ru/image/view/4827173/bcb9f200
http://itmages.ru/image/view/4827178/bddf0f5c
http://itmages.ru/image/view/4827179/bea4580d
Буду рад любой помощи. Спасибо.

С чем связаны такие выводы?

Я кстати маленько ошибся:
Сама база находится на:
Server 2012 R2 где установлено:
— 1c server и платформа «1С:Предприятие 8.3 (8.3.8.1652)»
— SQL Server 2012
— Конфигурация «Зарплата и управление персоналом, редакция 3.0 (3.0.25.101)» , хотя она в данной задаче не играете никакой роли

А вот сам драйвер mysql-connector-odbc-5.3.4-win32 установлен на server 2012 , там же и платформа 1С с сервером конечно есть, но база из которой подключаемся находится на другой сервере.

Состояние подключения MySql Connector/NET

Я использую последний стабильный MySql Connector/NET 6.5.4.0.

Открываю соединение с базой данных MySQL. В коде C# свойство Connection.State равно Open . Я делаю магический stuf, и пока я это делаю, я убью сервер соединения. Однако в коде государство остается Open .

Я столкнулся с этой проблемой, потому что я сохраняю экземпляры моего класса базы данных в статической переменной за сеанс (словарь). Если пользователь выполняет запрос, класс базы данных извлекается из этой переменной, и запросы к нему запускаются. Однако, если соединение закрывается на стороне сервера (убито с помощью sysadmin, время ожидания ожидания истекло), состояние не обновляется.

Есть ли обходной путь для решения этой проблемы? Мой коллега allready представил для него отчет об ошибке (http://bugs.mysql.com/bug.php? >

Закрыть и открыть перед выполнением, очень плохо для производительности, поэтому нет опции.

Вы посмотрели метод соединения.Ping? Если это неверно, соединение закрывается. http://dev.mysql.com/doc/refman/5.0/en/connector-net-ref-mysqlclient.html#connector-net-ref-mysqlclient-mysqlconnection-ping Вы также можете подписаться на событие StateChange на соединение для проверки того, что происходит. Как общий совет, вы, вероятно, не должны кэшировать соединение как член статики; до тех пор, пока включен пул соединений, вы не должны видеть каких-либо значительных выигрышей в производительности, удерживая экземпляр соединения. Кроме того, что происходит, если происходит эрор? – dash 18 апр. 12 2012-04-18 09:44:30

Пул соединений в этом случае отключен, я рассмотрю метод Ping. Если соединение закрыто, я получаю сообщение «Неустранимая ошибка, возникающая во время выполнения команды» – Michiel van Vaardegem 18 апр. 12 2012-04-18 09:55:12

Метод Ping() работает, но занимает много времени (0,020 с каждого вызова). Событие StateChange запускается слишком поздно (при вызове execute reader). – Michiel van Vaardegem 20 апр. 12 2012-04-20 09:16:32

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих