Драйвер ODBC

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Драйвер ODBC

Сообщение Алексей- Софт-Центр »

Есть прога на С6, через ODBC общается с MySQL. Все работает.
Вопрос: Можно ли как-нибудь встроить драйвер ODBC в программу? ЧТобы не создавать источник ODBC, и т.д.

Спасибо за ответы)))
Аватара пользователя
Andrew Listiev
Активист
Сообщения: 166
Зарегистрирован: 07 Июль 2005, 11:16
Откуда: Латвия, Рига

Re: Драйвер ODBC

Сообщение Andrew Listiev »

Использовать connection string:

Например:

В описании файла OWNER(ConnectionString)

Код: Выделить всё

ConnectionString = 'Driver={{SQL Native Client}; Server=sql-server; Database=MyDB; Trusted_Connection=yes'
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Драйвер ODBC

Сообщение Алексей- Софт-Центр »

Спасибо)
Буду пробовать.
George
Активист
Сообщения: 100
Зарегистрирован: 04 Август 2009, 10:48

Re: Драйвер ODBC

Сообщение George »

Я попробовал. Все прекрасно работает.
БАИ
Посетитель
Сообщения: 25
Зарегистрирован: 09 Октябрь 2009, 13:05

Re: Драйвер ODBC

Сообщение БАИ »

Во-первых здравствуйте. Я ,вообще говоря, начинающий программист, а в clarion тем более, но вот есть чем поделиться.

Также пользуюсь connection string-работает :). Но вообще-то я не об этом хочу рассказать.
У меня версия mysql 5.1, драйвер myodbc 5.1. Версия Сlarion 6.3 9059-хотя в данном вопросе это не важно-судя по форумам подобная проблема и у 1с ников есть.
Так вот, если в такой связке сделать некую базу данных, то первое во что выльется компиляция простого примера с доступом к текстовому полю-это gpf.Опытным путем было установлено, что приложение создается лишь при установке всех текстовых полей в мускуле в кодировку utf8.(Как вариант можно перегнать и всю базу в utf-тоже помогает). Однако при таком решении есть один минус- сортировка русских слов становится чуть более чем странной, тем не менее кракозябр нет, гпф пропадает. В драйвере myodbc 3 была возможность послать после подключения команду set names, которая решала все проблемы с кодировками, в myodbc 5 ее убрали, однако если в коннекшене прописывать самостоятельно, то вроде бы даже работает(можно добиться возвращения кракозябр :) ) Но проблемы сортировки это не решает. Конвертация базы в ср1251 и вписывание в коннекшн ср1251 возвращает гпф.

Довольно долго я с этим жил, а потом зачем-то(читайте "от безысходности") попробовал следующее:
Удалил свой коннекшн стринг, сделал самый "умолчательный" источник данных и сконвертил базу в дефолтный для мускуля чарсет latin1 и выставил коллейшн latin1_bin. Теперь в базе лежат кракозябры, но из клариона всё видно очень симпатично, сортировка заработала. (Вобщем это как бы первое решение проблемы подключения через myodbc 5- в инернетах глядел-люди просто советуют переходить на myodbc 3).
Собственно вопрос: есть ли такое решенеие, чтобы база оставалась в ср1251 или "это фантастика"?
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Re: Драйвер ODBC

Сообщение kreator »

А можно поподробнее об 'Driver={{SQL Native Client}'. Надо ставить SQL Native Client для определенного SQL сервака?
We are hard at work… for you. :)
Аватара пользователя
Andrew Listiev
Активист
Сообщения: 166
Зарегистрирован: 07 Июль 2005, 11:16
Откуда: Латвия, Рига

Re: Драйвер ODBC

Сообщение Andrew Listiev »

Зависит от драйвера

например для MS SQL 2005 'Driver={{SQL Native Client}'
для MS SQL 2000 'Driver={{SQL Server}'
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Re: Драйвер ODBC

Сообщение kreator »

То есть драйвер ODBC все равно приходиться ставить?
We are hard at work… for you. :)
Аватара пользователя
Andrew Listiev
Активист
Сообщения: 166
Зарегистрирован: 07 Июль 2005, 11:16
Откуда: Латвия, Рига

Re: Драйвер ODBC

Сообщение Andrew Listiev »

конечно
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Re: Драйвер ODBC

Сообщение kreator »

А вот бы обойтись без установки драйвера. Приходится обойти все компы. А если их 100? Поэтому прописать источник ODBC - это уже ерунда по времени.
We are hard at work… for you. :)
Аватара пользователя
Andrew Listiev
Активист
Сообщения: 166
Зарегистрирован: 07 Июль 2005, 11:16
Откуда: Латвия, Рига

Re: Драйвер ODBC

Сообщение Andrew Listiev »

Если вы админ в сети, то можно использовать vbs-скрипт, который регистрирует необходимые ODBC. Вот например скрипт регистритующий ODBC запись MSSQL сервера:

В качестве аргумента имя машины, куда хотим поставить

Код: Выделить всё

On Error Resume Next
const HKEY_LOCAL_MACHINE = &H80000002

Set Registry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & WScript.Arguments(0) & "\root\default:StdRegProv")

Call CreateValue("SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", "MySQLServer", "SQL Server")

DSNName = "SOFTWARE\ODBC\ODBC.INI\MySQLServer"
Call CreateKey  (DSNName)

Call CreateValue(DSNName, "Driver", GetSystemDirectory(WScript.Arguments(0)) & "\SQLSRV32.dll")
Call CreateValue(DSNName, "Server", "MySQLServer")
Call CreateValue(DSNName, "UseProcForPrepare", "0")
Call CreateValue(DSNName, "QuotedId", "No")
Call CreateValue(DSNName, "AnsiNPW", "No")
Call CreateValue(DSNName, "LastUser", "Rescue")
Call CreateValue(DSNName, "AutoTranslate", "No")

DSNName = "SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo"
Call CreateKey  (DSNName)
Call CreateValue(DSNName, "MySQLServer", "DBMSSOCN,MySQLServer,1433")

Sub CreateValue(KeyPath, ValueName, Value)
   Return = Registry.SetStringValue(HKEY_LOCAL_MACHINE, KeyPath, ValueName, Value)
   If (Return <> 0) And (Err.Number <> 0) Then 
       WriteOutput("SetValue failed. Error = " & Err.Number & " Key: " & Keypath & " Name: " & ValueName & " Value: " & Value)
   End If
End Sub 

Sub CreateKey(KeyPath)
   Return = Registry.CreateKey(HKEY_LOCAL_MACHINE, KeyPath)
   If (Return <> 0) And (Err.Number <> 0) Then 
       WriteOutput("SetValue failed. Error = " & Err.Number & " Key: " & Keypath)
   End If
End Sub 

Function GetSystemDirectory(Computer)
   Set objWMIService = GetObject("winmgmts:\\" & Computer & "\root\CIMV2")
   Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
   For Each objItem In colItems
      GetSystemDirectory = objItem.SystemDirectory
   Next
End Function

Sub WriteOutput(InputString)
  Dim FileSystemObject, OutputFile
  Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
  Set OutputFile = FileSystemObject.OpenTextFile("Install.log", ForAppending, True)
  OutputFile.WriteLine Date & " - " & Time & ": " & InputString
  OutputFile.Close
End Sub
Ну и как вариант могу предложить использовать ADO, но придется переписывать приложение.
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: Драйвер ODBC

Сообщение StillZero »

апример для MS SQL 2005 'Driver={{SQL Native Client}'
для MS SQL 2000 'Driver={{SQL Server}'
можно для 2005 и 2008 писать Driver={{SQL Server}
Все сайты закрыты...
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Драйвер ODBC

Сообщение Алексей- Софт-Центр »

Вопрос изначально звучал в смысле : как НЕ устанавливая ODBC на комп , работать с MySql.
Задача тревиальная - есть прога, лежащая на сайте, которую скачивает и запускает пользователь.
Для ее решения и ставился вопрос. Собственно вывод: невозможно?

Для БАИ : С 5-м драйвером тоже не сраслось, поэтому спокойно использую 3. Там есть где определить set names... :)
Ответить