Member 12300036 Ответов: 1

Отображение ошибки при вставке данных в таблицу


я работаю над 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

извините за задержку, опубликуйте скриншот

1 Ответов

Рейтинг:
1

Surjyakanta

Привет,

используйте sqldbtype при каждом параметре, как это сделал u при последнем параметре


Member 12300036

все еще не работает