2017-01-22 19 views
1

ALL,SQLBindCol()/SQLFetch() возвращает завершающие пробелы

Я пытаюсь создать программу, которая подключается к MS SQL Server (2012). Программа выполнит несколько запросов SELECT.

При попытке использовать такой код:

ret = SQLBindCol(stmt_tableProp, 25, SQL_C_WCHAR, &comments, 225, &cbComment); 
ret = SQLFetch(stmt_tableProp); 

значение в "комментарий" переменной будет:

"This is a comment   " 

, тогда как я ожидаю, что это будет:

"This is a comment" 

Предполагаю, что мне нужно установить какой-либо параметр в соединении.

Удивительно, но попытка выполнить этот же код на mySQL и PostgreSQL не дает этого результата. Я получаю то, чего можно ожидать как с unixODBC, так и с iODBC.

Я прав? Если да, то какой и как это сделать?

ответ

2

Это выглядит как случай, когда базовый столбец является или обрабатывает столбец как char vs varchar. Char всегда будет дополняться шириной столбца

+0

Да, поле определяется как «char (254)» в инструкции CREATE TABLE(). Так что я должен использовать varchar (254)? – Igor

+0

Я попытался изменить тип поля на varchar (254), но код все равно возвращает строку с конечными пробелами. – Igor

+1

@Igor: Вы удалили значение и повторно вставили значение без пробелов после изменения типа столбца? – erg