Отображение ошибки при вставке данных в таблицу
я работаю над dot net mvc, создаю веб-сервисы. он показывает мне такую ошибку:
System.Data.SqlClient.SqlException: Error converting data type varchar to numeric.
при вставке данных в таблицу
Что я уже пробовал:
моя хранимая процедура такова:
CREATE Proc [dbo].[Usp_EmployeeCheckLocation_Insert] @DeviceId nvarchar(50), @EmployeeCode nvarchar(50), @CallId nvarchar(50), @Latitude decimal(18,10), @Longitude decimal(18,10), @Status nvarchar(50), @Checkdate datetime, @Source nvarchar(25), @OtherVisitStatus nvarchar(50) AS IF @Status='CheckIn' BEGIN INSERT INTO EmployeeCheckLocation (DeviceId, EmployeeCode, CallId, Latitude, Longitude, Status, CreatedOnUtc, Source, OtherVisitStatus) values (@DeviceId, @EmployeeCode, @CallId, @Latitude, @Longitude, @Status, @Checkdate, @Source, @OtherVisitStatus ) END
а мой метод веб-сервисов таков:
[WebMethod] public string EmployeeAttendanceLocation(string lati, string longi, string status, string checkDate, string deviceId, string callId, string empCode, string Source, string ProjectName, string OtherVisitStatus) { SqlConnection myConnection = new SqlConnection(); var conString = System.Configuration. ConfigurationManager.ConnectionStrings["Server"]; string strConnString = conString.ConnectionString; myConnection.ConnectionString = strConnString; myConnection.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = myConnection; cmd.CommandType = CommandType.StoredProcedure; string msg = null; // DateTime date = DateTime.UtcNow; // date = DateTime.Parse(checkDate); cmd.CommandText = "Usp_EmployeeCheckLocation_Insert"; cmd.Parameters.AddWithValue("@DeviceId", deviceId.ToString()); cmd.Parameters.AddWithValue("@EmployeeCode", empCode.ToString()); cmd.Parameters.AddWithValue("@CallId",callId.ToString()); cmd.Parameters.AddWithValue("@Latitude", lati.ToString()); cmd.Parameters.AddWithValue("@Longitude", longi.ToString()); cmd.Parameters.AddWithValue("@Status", status.ToString()); cmd.Parameters.AddWithValue("@Checkdate", checkDate.ToString()); cmd.Parameters.AddWithValue("@Source", Source.ToString()); cmd.Parameters.AddWithValue("@OtherVisitStatus",SqlDbType.NVarChar).Value=DBNull.Value; int j = cmd.ExecuteNonQuery(); if (j > 0) { msg = "success"; } else { msg = "fail"; } cmd.Connection.Close(); return msg; }
Karthik_Mahalingam
проверьте значение lati и longi, оно должно быть в допустимом числовом формате.
Member 12300036
когда я ставлю callid=4776060423-471 вот так...тогда только покажите ошибку..
это не проблема Лати Лонг
Karthik_Mahalingam
Всегда использовать Ответить кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.
Member 12300036
ладно
Karthik_Mahalingam
что такое тип данных CallId в таблице sql ?
Member 12300036
его аргумент
Karthik_Mahalingam
попробуйте пройти только 4776060423
Member 12300036
я уже проверил его работу, но не работу с 4776060423-471
Karthik_Mahalingam
разместите схему таблицы
Member 12300036
Создайте таблицу [dbo].[EmployeeCheckLocation](
[Id] [int] IDENTITY (1,1) NOT NULL,
[DeviceId] [nvarchar](50) NULL,
[EmployeeCode] [nvarchar](50) NULL,
[CallId] [nvarchar] (50) NULL,
[Долгота] [десятичная дробь] (18, 10) ноль,
[Широта] [десятичная дробь] (18, 10) NULL,
[Status] [nvarchar](50) NULL,
[CreatedOnUtc] [datetime] NULL,
[Источник] [varchar] (25) NULL,
[IsFillExp] [бит] NULL,
[Exp_DocId] [nvarchar](50) NULL,
[ServerDate] [datetime] NULL,
[OtherVisitStatus] [nvarchar](50) NULL
) НА [ПЕРВИЧНОМ]
ГО
НАБОР ВЫБРАНО ЗНАЧЕНИЕ ВЫКЛ.
ГО
ALTER TABLE [dbo].[EmployeeCheckLocation] добавить значение по умолчанию (getdate()) Для [ServerDate]
ГО
Karthik_Mahalingam
протестировали ваш код, он отлично работает..
может быть, вы что-то упускаете
Member 12300036
он работает с 4776562271471
Karthik_Mahalingam
ладно в чем была проблема
Member 12300036
нет, я прошу у..это работа с 4776562271-471
Karthik_Mahalingam
да
Bryian Tan
Вы на 100% уверены, что проблема не вызвана Лати и лонги?
Member 12300036
да...потому что, когда я ввел другой идентификатор вызова,он работал.
но не работать с этим идентификатором
Karthik_Mahalingam
я удивлен
Member 12300036
я 2
Karthik_Mahalingam
:)
Member 12300036
могу я задать вам еще один вопрос?
Karthik_Mahalingam
да
Member 12300036
я работаю на 3 слоя архитектурный, где у меня уровень данных,бизнес-логики и бизнес-объекта..эти слоя способ вызова в контроллер...БТ когда я нажимаю на них метод в контроллер, как перейти к конфигурируемой..его не собираюсь эти способ развертк...показывает все метаданные..я уже добавить ссылку
Karthik_Mahalingam
извините за задержку, опубликуйте скриншот