C # возвращаемые данные отличаются форматированием от T-SQL exec для десятичного и DateTime - PullRequest
0 голосов
/ 30 октября 2019

Я использую следующий код для вызова хранимой процедуры для вставки данных в DataTable:

 DataTable dt = new DataTable();

 SqlConnection scConn = new SqlConnection("ConnectionString");

 SqlDataAdapter sd = new SqlDataAdapter("Store_Procedure_Name", scConn);
 sd.SelectCommand.CommandType = CommandType.StoredProcedure;
 sd.Fill(dt); 

Выполнение набора результатов через T-SQL выглядит следующим образом:

UserId is int , PurchaseDate is DateTime and Amount is Decimal(20,2)

| UserId | PurchaseDate             | Amount
| 1      | 2019-10-31 00:00:57.617  | 35.00

В некоторых случаях, когда после вызова C # с помощью кода выше, я проверяю DataTable C #, данные отличаются.

| UserId | PurchaseDate            | Amount
| 1      | 2019-10-31 00:00:57 SA  | 35,00

Я проверил, что и мой SQL Server, и мой локальный компьютерный регион совпадают с США.

Код применяется в веб-приложении, я понятия не имею, какSA был добавлен к DataTable PurchaseDate, а также почему значение Amount от (точка). Станьте (запятая), я думаю, что это может быть проблема культуры, но я прошёл и машинный регион, и настройка культуры одинакова.

Хотите знать, сталкивался ли кто-то с такой же проблемой раньше?

1 Ответ

0 голосов
/ 30 октября 2019

Я не уверен, что вызывает эту проблему. Но чтобы избавиться от этой проблемы, вы можете (как вторичное / временное решение) преобразовать ее в тип данных «nvarchar» в вашей хранимой процедуре. Строковый тип данных является одним из наиболее совместимых типов данных для обмена данными между различными средами, а также не имеет проблем с перехватом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...