2012-05-15 4 views
0

Мой запрос выглядит так:Вставка русский язык данных в базу данных из массива

string str = string.Format("Insert into [MyDB].[dbo].[tlb1] ([file_path],[CONTENT1],[CONTENT2]) values ('{0}','{1}','{2}');", fullpath, _val[0], _val[1]); 

Теперь, когда я вставить данные в базу данных, если array _val[] содержит данные на английском языке это вставить правильно, но если массив содержит данные на русском языке в база данных это шоу, как ??????????????????????? Есть ли способ вставить данные на русском языке из массива.

+0

Какой тип полей базы данных вы вставляете? – phg

+0

Какая база данных вы используете? Какую кодировку выбрали для этих полей? – gabba

+0

Версия базы данных: Microsoft SQL Server 2005 и поля имеют nvarchar (max) – Manish

ответ

1

Прежде всего, вы должны использовать подготовленные заявления, и пусть драйвер базы данных вставить заполнители правильно (т.е. SqlCommand с параметрами). Тогда проблема должна исчезнуть (как и любые потенциальные проблемы с SQL-инъекциями).

Как быстро исправить в вашем случае: Префикс строковых литералов вы вставляя с N:

... values (N'{0}',N'{1}',N'{2}') 

Это приводит к тому, литералам быть Unicode литералов, а не произвольные унаследованными-кодовыми них и, таким образом, предотвращая преобразование из Unicode в устаревшую кодовую страницу (что приводит к вопросительным знакам для символов, которые не могут быть представлены).

+0

спасибо за ответ :) – Manish

0

Похоже, что тип данных столбцов [Content1] и [Content2] - nchar. Вы должны преобразовать столбцы в nvarchar, который используется для хранения данных в Юникоде.

+0

Тип данных столбцов: nvarchar not nchar – Manish

+0

Затем попробуйте проверить сортировку вашего сервера/базы данных. Больше информации здесь http://msdn.microsoft.com/en-us/library/ms143726(v=sql.90).aspx – RePierre

0

Прежде всего, вы должны увидеть кодовую страницу базы данных на сервере. Может быть не-Unicode CP в базе данных, но данные из вашего приложения поступают в формате Unicode.

+1

Нет кодовой страницы для столбцов nvarchar. – Joey

Смежные вопросы