2010-07-26 4 views
2

Je souhaite insérer info.NativeName dans un champ nvarchar de la base de données. Ça ne marche pas, tout ce que j'ai c'est ??????? où l'encodage n'est pas western/latin.Comment insérer unicode dans MS-SQL?

Sortir listcultures directement dans un site Web asp.net sur page_onload a bien fonctionné, mais il semble ne pas fonctionner via la base de données.

Public Sub listcultures() 
    'Dim x As System.DateTime = DateTime.Now 
    'Response.Write(x.ToString("HH':'mm':'ss MMM d', 'yyy 'PST'", New System.Globalization.CultureInfo("zh-CN", False))) 
    Dim info As System.Globalization.CultureInfo 
    For Each info In System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures) 
     'Response.Write("Deutsch: " + info.DisplayName + " English: " + info.EnglishName + " Native: " + info.NativeName + " Name: " + info.Name + " Codepage: " + info.TextInfo.ANSICodePage.ToString() + "<br />") 

     'InsertData(info.DisplayName, info.EnglishName, info.NativeName, info.Name, info.TextInfo.ANSICodePage.ToString(), info.IsNeutralCulture.ToString()) 

     If Not info.IsNeutralCulture Then 
      'item.SubItems.Add(amount.ToString("C", info.NumberFormat)) 
      'item.SubItems.Add(dateNow.ToString("d", info.DateTimeFormat)) 
     End If 
    Next 

End Sub 

Qu'est-ce que je fais mal? Je suppose que quelque chose avec l'encodage?

+0

Ce code contient uniquement des commentaires en boucle. Que fait InsertData? S'il vous plaît montrer l'instruction CREATE TABLE – devio

Répondre

3
+0

Aaaaaaaaaaaaaaaaaargh. INSERT N'MyString 'au lieu de INSERT' MyString '. N comme dans u-Nicode. Merci ! –

+1

Pour que cela ait corrigé le problème indique que l'OP ne paramétrise pas le TSQL; ce qui indique (IMO) un problème ** far ** * bigger * ... –

+0

@Marc Gravell: C'est vrai, mais je ne l'utilise que localement pour créer une base de données de chaînes localisées. Il ne sera dans aucun code public, donc il n'y a pas de risque d'injection SQL, et d'ailleurs, je remplace toujours le 'avec'. J'ai déjà vu le N ', mais je ne savais pas que c'était unicode. –

0

Que se passe-t-il exactement? En fin de compte, vous construisez juste une chaîne ici et le stockage dans nvarchar, il devrait beau travail, à condition:

  • vous avez correctement paramétré l'entrée à la commande
  • vous n'avez pas survolée la largeur de la la colonne

Nous ne pouvons pas vraiment dire plus sans voir InsertData, que je suppose parle à la base de données. Je ne suis pas non plus assez sûr pourquoi une méthode de "liste" ferait des insertions en premier lieu, bien sûr. De plus puisque tout est commenté en ce moment, je attendre rien ne se passe ...

+0

Eh bien, la liste est juste la boucle, l'insertion se produit dans InsertData, qui est commentée ici, mais je l'ai bien sûr couru sans le commenter. Je n'aurais pas eu ???? valeurs, en combinaison avec des valeurs anglaises correctes, si l'insertion n'aurait pas fonctionné. –

Questions connexes