Поддержка типов данных в ColdFusion querynew () - PullRequest
2 голосов
/ 11 ноября 2008

Кто-нибудь знает способ сохранить значения как NVARCHAR в запросе, созданном вручную в ColdFusion, с помощью функции querynew ()? У меня есть несколько частей крупной программы, использующей запрос в качестве входной точки для построения листа Excel (используя POI Бена), поэтому очень важно, чтобы я мог продолжать использовать его как запрос, чтобы избежать относительно большого переписывания.

Проблема возникла, когда пользователь пытался сохранить что-то, находящееся за пределами диапазона VARCHAR, некоторые японские символы и тому подобное.

Редактировать: Если это невозможно, и вы на 100% уверены, я бы тоже хотел это знать:)

Ответы [ 5 ]

1 голос
/ 07 февраля 2009

При создании запроса ColdFusion с помощью queryNew () вы можете передать список типов данных в качестве второго аргумента. Например:

<cfset x = queryNew("foo,bar","integer,varchar") />

Кроме того, вы можете использовать cf_sql_varchar (который вы будете использовать в тегах queryparam). Согласно liveocs, nvarchar принимается за тип данных CF varchar.

QueryParam aliveoc (для типа данных nvarchar)

QueryNew aliveoc (ссылка на определение типа данных)

Управление типами данных aliveoc (используется для использования cf_sql_datatype)

1 голос
/ 12 ноября 2008

Вы можете попробовать использовать JavaCast () для установки значений, как показано здесь: Kinky Solutions (Бен Надель) на JavaCast ()

1 голос
/ 14 ноября 2008

Убедитесь, что вы используете сквозной Unicode .

1 голос
/ 12 ноября 2008

Единственное, что я смог придумать, так это:

<cfset x = QueryNew("foobar")/>
<cfset queryAddRow(x) />
<cfset querySetCell(x, "foobar", chr(163)) />
<cfdump var="#x#">

При сбросе этот запрос содержит символ британского фунта.

Я не пробовал это с помощью утилиты Бена POI, но, надеюсь, она вам поможет.

0 голосов
/ 11 февраля 2009

Это почти все, что вам нужно:

<cfprocessingdirective pageEncoding="utf-8"> 

ColdFusion (& java) сохраняет строку в UTF-8 по умолчанию. Все, что вам нужно, это сообщить CF, что кодировка страницы - UTF8. Альтернативный способ - сохранить метку порядка байтов (BOM), но Eclipse / CFEclipse этого не делает.

...