Domanda

Qualcuno sa come memorizzare valori come NVARCHAR in una query creata manualmente in ColdFusion usando la funzione querynew ()? Ho più parti di un programma di grandi dimensioni che si basano sull'utilizzo di una query come punto di input per costruire un foglio di lavoro Excel (utilizzando il POI di Ben), quindi è un po 'importante che possa continuare a usarlo come query per evitare una riscrittura relativamente grande.

Il problema si è presentato quando un utente ha provato a memorizzare qualcosa che è al di fuori dell'intervallo VARCHAR, alcuni caratteri giapponesi e simili.

Modifica: se ciò non è possibile e ne sei sicuro al 100%, vorrei saperlo anche io :)

È stato utile?

Soluzione

Quando si crea una query ColdFusion con queryNew (), è possibile passare un elenco di tipi di dati come secondo argomento. Ad esempio:

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

In alternativa, puoi usare cf_sql_varchar (che useresti nei tag queryparam). Secondo gli autori, nvarchar è accettato per il tipo di dati CF varchar.

QueryParamivedoc (referenziato per il tipo di dati nvarchar)

QueryNewivedoc (referenziato per la definizione del tipo di dati)

Gestione dei tipi di dati vissuti (referenziati per l'utilizzo di cf_sql_datatype)

Altri suggerimenti

L'unica cosa che sono stato in grado di inventare finora è questa:

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

Una volta scaricato, questa query contiene il simbolo della sterlina inglese.

Non ho provato questo con l'utilità POI di Ben, ma spero che ti aiuti un po '.

Potresti provare a usare JavaCast () per impostare i valori, come mostrato qui: Kinky Solutions (Ben Nadel) su JavaCast ()

Questo è praticamente tutto ciò di cui hai bisogno:

<cfprocessingdirective pageEncoding="utf-8"> 

ColdFusion (& amp; java) memorizza la stringa in UTF-8 per impostazione predefinita. Tutto ciò che serve è dire a CF che la codifica della pagina è UTF8. Il modo alternativo è di salvare il segno di byte-order (BOM), ma Eclipse / CFEclipse non lo fa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top