SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 29.12.2014 11:42:42

Тигран
Участник
Зарегистрирован: 14.08.2014
Сообщений: 10

Recordset не записывает данные в MySQL.

Добрый день, у меня проблема с рекордсетом. Рекордсет отказывается записывать данные в БД. Может быть у меня неправильно подключение настроено или настройки курсора?Хелп плз.
Пробовал сменить провайдера:

"Provider=MSDASQL.1; Persist Security Info=False;User ID=root;Data Source=KAFPserver;Initial Catalog=test"


результат такой же, рекордсет не делает запись в базу и locktype=4 всегда.
Само подключение устанавливается и запрос работает.

P.S.  если убираю строку adodbconn.CurorLocation=3,то рекордсет начинает делать записи в БД, но при этом перестает работать recordcount ( он всегда равен -1). Locktype при этом всегда равен 2.

set adodbconn=createobject("adodb.connection")
adodbconn.CurorLocation=3

set smbtbl=createobject("adodb.recordset")
smbtbl.loctype=3
smbtbl.cursortype=3
adodbconn.connectionstring=
"driver={MYSQL ODBC 5.3 UNICODE Driver}; server=localhost;Database=test;user=root;Password=1q2w3e;option=3"

adodbconn.open

'tablename и phone это переменные, в которые записываются соответствующие данные.
smbtbl.open
"SELECT * FROM" & tablename & "WHERE PHONENO=" & chr(39) & phone & chr(39)
, adodbconn


'Проверяем количество записей в рекордсете, если меньше 1, то делаем запись в БД результата запроса.
IF smbtbl.recordcount < 1 THEN
msgbox smbtbl.locktype ' здесь почему-то locktype = 4, не смотря на то, что в настройках указывал 3.
   smbtbl.addnew
   smbtbl.fields("PHONENO")=phone
   smbtbl.update
END IF

Неактивен

 

#2 29.12.2014 15:19:30

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Recordset не записывает данные в MySQL.

А текст ошибки покажите?

LockType роли не играет, 4 — это batchoptimistic, вполне ок. Пробовали переоткрывать
RecordSet?

P.S. И ссылка для себя, чтобы потом не искать еще раз:
http://msdn.microsoft.com/ru-ru/library … p/ms675841(v=vs.85).aspx

Неактивен

 

#3 29.12.2014 16:18:16

Тигран
Участник
Зарегистрирован: 14.08.2014
Сообщений: 10

Re: Recordset не записывает данные в MySQL.

В том то и дело что ошибок нет никаких, addnew....update проходит без ошибок, но в базу ничего не добавляется.

Переоткрывать не пробовал....

Может строка подключения не правильная?Есть ли разница между ANSI и UNICODE драйвером?
Кроме MySQL и MSDASQL какие драйвера можно еще использовать?

Отредактированно Тигран (29.12.2014 16:20:00)

Неактивен

 

#4 29.12.2014 17:10:09

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Recordset не записывает данные в MySQL.

Эмм... очень странно sad

Смотрите, на этом форуме очень мало людей, которые пишут с использованием
ASPX, поэтому давайте двигаться итеративно smile

Я бы начал с того, что попробовал UpdateBatch вместо Update (косвенно на это
указывает и LockType).

Что касается драйвера, у MySQL есть нативный драйвер Connector/.NET, вот тут
есть пример на C#, думаю, его реально переделать на VB.

Неактивен

 

#5 30.12.2014 11:03:58

Тигран
Участник
Зарегистрирован: 14.08.2014
Сообщений: 10

Re: Recordset не записывает данные в MySQL.

Пробовал вместо recordcount еще вот такую строку для подсчета строк в рекордсете:
    Ubound(smbtbl.GetRows(),2)+1
Но она как и recordcount тоже работает только вместе с параметром CursorLocation=3.

Рекодсет как и не записывал данные в MySQL, так и не записывает.

Сейчас попробую UpdateBatch и качаю нативный драйвер.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson