Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
проблема с кодировкой при вызове функции (Бо) 09/08/2008 - 20:53:45



From: Бо - 09/08/2008 - 20:53:45
Subject:проблема с кодировкой при вызове функции
-----------------
Здравствуйте, если кто сталкивался с такой проблемой.
Написал процедуру в мускуле. процедура в параметрах принимает некоторый текст. после чего вставляет его в таблицу. только кирилица почему то не проходит, в базе остается "????????? ???????" интересно почему? клиентская программа написана на QT. процедура вызывается через QSqlQuery::exec("CALL procedura (параметры)"); может надо в процедуре както указать что она работает с юникодом? т.к. кодировка базы UTF8.

вот код процедуры:
#############################################################
CREATE DEFINER=`root`@`localhost` PROCEDURE `createControl`(IN controlType INTEGER UNSIGNED, controlTitle TEXT, controlAddress TEXT, controlComment TEXT, kontainerTitle TEXT, cellTitle TEXT)
BEGIN
DECLARE firstCell, firstSubCell INTEGER;
DECLARE cellss, subcellss INTEGER UNSIGNED;
DECLARE count1, count2 INTEGER;
DECLARE controlId INTEGER UNSIGNED;
DECLARE cellId INTEGER UNSIGNED;
#параметры пульта
SELECT `cells`, `subCells`, `firstCellNumber`, `firstSubCellNumber`
INTO cellss, subcellss, firstCell, firstSubCell FROM `controlType` WHERE `id` = controlType;
#ячейка пульта
INSERT INTO `cells` (`title`,`type`,`status`,`comment`,`parentCell`,`localNumber`,`owner`,`address`,`globalNumber`,`remain`)
VALUES (controlTitle,controlType,1,controlComment,0,0,"",controlAddress,0,0);
SELECT max( last_insert_id()) INTO controlId FROM `cells`; #id ячейки
SET count1=0;
IF subcellss > 0 THEN
WHILE count1 < cellss DO
INSERT INTO `cells` (`title`,`type`,`status`,`localNumber`,`parentCell`,`owner`,`address`,`globalNumber`,`comment`,`remain`)
VALUES(kontainerTitle,2,1,count1+firstCell,controlId,"","",0,"",0);
SELECT MAX(last_insert_id()) INTO cellId FROM `cells`; #id ячейки
SET count2=0;
WHILE count2 < subcellss DO
INSERT INTO `cells` (`title`, `type`, `status`, `localNumber`, `parentCell`,`owner`,`address`,`globalNumber`,`comment`,`remain`)
VALUES(cellTitle,1,1,count2+firstSubCell,cellId,"","",0,"",0);
SET count2=count2+1;
END WHILE;
SET count1=count1+1;
END WHILE;
ELSE
WHILE count1 < cellss DO
INSERT INTO `cells` (`title`,`type`,`status`,`localNumber`,`parentCell`,`owner`,`address`,`globalNumber`,`comment`,`remain`)
VALUES(cellTitle,1,1,count1+firstCell,controlId,"","",0,"",0);
SET count1=count1+1;
END WHILE;
END IF;
END
###############################################################

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


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
33860



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |