Sql Compact edition VB 2010 inserimento parole con accento

martedì 25 settembre 2012 - 12.31
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  SQL Server Express

alsa Profilo | Junior Member

Salve ragazzi,
ho un piccolo problema con una tabella di un database Sql CE, ho creato una piccola procedura che mi consente di inserire nella tabella i dati di tutti i comuni italiani (Cap, Nome, Provincia, Regione) tramite un file csv.
Tutto funziona ma quando trova comuni con l' accento (es. Arsiè) mi inserisce nella tabella il seguente valore: Arsi�.
Inoltre quando trova comuni al cui interno si trova un apostroso (es. Acquaviva d'Isernia) la procedura si interrompe; questo problema l' ho bypassato inserendo l' istruzione: comun = Replace(comune(1), "'", ""); che però mi elimina l' apostrofo.
Come posso fare per acquisire i dati correttamente senza questi problemi?

Grazie

algraps Profilo | Junior Member

ciao,
per quanto riguarda l'apostro il problema e' di SQL. Immagino che gli inserimenti siano delle INSERT o degli UPDATE nel database. Il problema e' che l'apostrofo e' un carattere speciale in sql. Per risolverlo semplicemente potresti o inserire due volte l'apostrofo per esempio ferre' diventa ferre'' in questo modo sql riconosce l'apostrofo come carattere normale e non come carattere speciale oppure per fare una cosa piu' pulita puoi parametrizzare le query
INSERT INTO XXX VALUES (@val1, @val2)

Dim sql As String = "INSERT INTO [result] (q1, q2, q3) VALUES (@q1, @q2, @q3)" Using cn As New SqlConnection("Your connection string here"), _ cmd As New SqlCommand(sql, cn) cmd.Parameters.Add("@q1", SqlDbType.VarChar, 50).Value = q1.Text cmd.Parameters.Add("@q2", SqlDbType.VarChar, 50).Value = q2.Text cmd.Parameters.Add("@q3", SqlDbType.VarChar, 50).Value = q3.Text cn.Open() cmd.ExecuteNonQuery() End Using

Per quanto riguarda invece il problema del carattere speciale lo dovresti risolvere tranquillamente con il parametro. Ma sulla tabella che tipo e' il campo?

Prova cosi e fammi sapere...

Ciao
A.G.

alsa Profilo | Junior Member

Ciao Algraps, ti ringrazio per la risposta rapida e precisa,
l' utilizzo dei parametri mi risolve il problema dell' apostrofo, ma non il problema degli accenti purtroppo.
C'è qualcos' altro che posso provare o è un problema di impostazione del database?
Il campo è di tipo NVarChar.

Grazie ancora.

algraps Profilo | Junior Member

il campo e' di tipo corretto. Il problema dovrebbe dipendere dalla codifica. Ho trovato questo link che ti puo' aiutare:

http://stackoverflow.com/questions/4144767/unicode-characters-in-sql-table

Fammi sapere
A.G.

alx_81 Profilo | Guru

>il campo e' di tipo corretto. Il problema dovrebbe dipendere
>dalla codifica. Ho trovato questo link che ti puo' aiutare:
>http://stackoverflow.com/questions/4144767/unicode-characters-in-sql-table
solo una cosa, ma hai provato a mettere il tipo di param a nvarchar?
e se non usi i parametri, hai provato a mettere una N davanti alla stringa?
Il carattere preciso qual è?
Di che lingua sarebbe?


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

algraps Profilo | Junior Member

>>il campo e' di tipo corretto. Il problema dovrebbe dipendere
>>dalla codifica. Ho trovato questo link che ti puo' aiutare:
>>http://stackoverflow.com/questions/4144767/unicode-characters-in-sql-table
>solo una cosa, ma hai provato a mettere il tipo di param a nvarchar?
>e se non usi i parametri, hai provato a mettere una N davanti
>alla stringa?
>Il carattere preciso qual è?

Nel parametro prova a cambiare la tipologia. da SqlDbType.VarChar ad SqlDbType.NVarChar.


alsa Profilo | Junior Member

Allora,
ho fatto queste prove:

1. Seguendo il post che mi avete taggato la query non viene eseguita.
2. impostando il tipo di param a NVarChar comunque non riconosce quel carattere
3. mettendo N davanti alla stringa la query non viene eseguita

Il carattere preciso è qualsiasi carattere accentato (à,è,ì,ò,ù)
Come lingua cosa intendi? Penso sia italiano.


Potrebbe influire il fatto che stia lavorando con SQL Compact e non con una versione di SQL Server?

alx_81 Profilo | Guru

>3. mettendo N davanti alla stringa la query non viene eseguita
puoi passare lo statement che viene generato?

>Il carattere preciso è qualsiasi carattere accentato (à,è,ì,ò,ù)
>Come lingua cosa intendi? Penso sia italiano.
a me sembrano caratteri standard.. che codepage ha quel csv?


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

alsa Profilo | Junior Member

Chiedo scusa, il file in questione di fatto non è un csv, ma è un semplice txt con questa struttura:

Cap;Città;Provincia;Regione

percui lo tratto come se fosse un csv.

Per quanto riguarda lo statement ho riprovato inserendo la N davanti alla stringa e il comando viene eseguito ma il problema rimane purtroppo.

alx_81 Profilo | Guru

>Chiedo scusa, il file in questione di fatto non è un csv, ma
>è un semplice txt con questa struttura:
>Cap;Città;Provincia;Regione

>Per quanto riguarda lo statement ho riprovato inserendo la N
>davanti alla stringa e il comando viene eseguito ma il problema
>rimane purtroppo.
a me sembra proprio strano, vuoi provare a passarmi parte del csv?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

alsa Profilo | Junior Member

Ciao Alx, scusa il ritardo, ora non ho il file sotto mano, appena rientro ti passo una parte del file,
Grazie ancora
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5