Почему строка подключения для SQL Server Compact при использовании значения по умолчанию для режима файлов делает m_spInit в CDataSource нулевым - PullRequest
0 голосов
/ 24 февраля 2020

У меня следующий код со строкой соединения для открытия соединения с SQL Сервер CE.

conStr.Format(_RT("Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=%s;Persist Security Info=False;OLE DB Services=-2;ssce:max database size=4091"), dbName);
hr = conn.OpenFromInitializationString((LPCOLESTR)conStr.GetBuffer(), false);

Где conn - CDataSource.

Выше прекрасно работает отлично. (назначен m_spInit)

Однако, когда я добавляю следующее

File Mode=Read Write;

Сделав приведенный выше код для

conStr.Format(_RT("Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=%s;Persist Security Info=False;File Mode=Read Write;OLE DB Services=-2;ssce:max database size=4091"), dbName);
hr = conn.OpenFromInitializationString((LPCOLESTR)conStr.GetBuffer(), false);

внутри m_spInit conn становится нулевым.

В соответствии с определением Microsoft SqlCeConnection.ConnectionString «Чтение-запись» должно быть по умолчанию, поэтому технически первая и вторая строки подключения должны подразумевать одно и то же.

Кто-нибудь может подумать, по какой причине это может происходить?

РЕДАКТИРОВАТЬ:

Когда я изменил File Mode=Read Write на File Mode=Shared Read, я снова получил m_spInit как ноль. Даже если я использую ssce:mode= или mode=, результат будет таким же. Я очень смущен.

...