|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 29, 2003 03:01:41 Кто знает, как при помощи ODBC записать в базу данных Access'a (*.mdb)? Примеров и описаний в Инете много, но во всех их идет чтение, а не запись. Может кто подкинет пару ссылок на подобные статьи (желательно на русском) или исходники? Заранее благодарен. |
|
|
Дата: Авг 29, 2003 03:06:32 Разницы ведь никакой! Просто вместо "SELECT * FROM myTable" подсуньте "INSERT INTO myTable VALUES (paarm1,param2,...paramN)" в SQLExecDirect и всего делов. |
|
|
Дата: Авг 29, 2003 03:30:38 2 Quantum Пытался - не получается. Проверял в Access'e - работает, а в программе почему-то не хочет. Может есть подходящий исходник? |
|
|
Дата: Авг 29, 2003 04:07:51 У меня работает именно так (с mySQL, правда). Возьмите тут на сайте пример с ODBC для Access и поменяйте SELECT на INSERT. |
|
|
Дата: Авг 29, 2003 04:52:49 · Поправил: Sk. Inc. 2 Quantum Странно, но не работает. Вот исходник: .386 .model flat, stdcall ;--------------------------------------------------------------------- ----------- include kernel32.inc include odbc32.inc include windows.inc includelib kernel32.lib includelib odbc32.lib ;--------------------------------------------------------------------- ----------- .const szConn db 'DBQ=c:\1\db1.mdb;DRIVER={Microsoft Access Driver (*.mdb)};', 0 szStmt db 'insert into myTable (myField) values ("text")', 0 ;--------------------------------------------------------------------- ----------- .data? hEnv dd ? hConn dd ? hStmt dd ? OutStringLength dd ? szBuffer db 1024 dup(?) szConnect db 1024 dup(?) ;--------------------------------------------------------------------- ----------- .code start: ; Подключение к базе invoke SQLAllocHandle, SQL_HANDLE_ENV, NULL, offset hEnv invoke SQLSetEnvAttr, hEnv, SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3, NULL invoke SQLAllocHandle, SQL_HANDLE_DBC, hEnv, offset hConn invoke SQLDriverConnect, hConn, NULL, addr szConn, sizeof szConn -1, addr szBuffer, sizeof szBuffer -1, addr OutStringLength, SQL_DRIVER_NOPROMPT ; Запрос invoke SQLAllocHandle, SQL_HANDLE_STMT, hConn, offset hStmt invoke SQLExecDirect, hStmt, offset szStmt, sizeof szStmt ; Отключение от базы invoke SQLFreeHandle, SQL_HANDLE_STMT, hStmt invoke SQLDisconnect, hConn invoke SQLFreeHandle, SQL_HANDLE_DBC, hConn invoke SQLFreeHandle, SQL_HANDLE_ENV, hEnv ; закрытие программы invoke ExitProcess, NULL end start А вот архив с исходником |
|
|
Дата: Авг 29, 2003 05:05:34 |
|
|
Дата: Авг 29, 2003 05:43:58 Значение попало в базу с пятой попытки. Мистика. ЗЫ: Проверил этот код под mySQL и всё сработало на ура! |
|
|
Дата: Авг 29, 2003 19:15:30 А у меня чего-то работать не хочет. Кто-нибудь имеет хоть какие-то предположения? |
|
|
Дата: Авг 29, 2003 20:49:57 · Поправил: Sk. Inc. Ура, работает!!! Большое тебе, Quantum, спасибо за помощь. Вся проблема заключалась в кавычках при передаче строки. Вместо insert into myTable (myField) values ("text") надо было просто написать insert into myTable (myField) values ('text') и все благополучно заработало. Торжествено объявляю, что проблема наконец-то разрешена, и по сему закрываю тему. |