Ошибка, когда Server сохраняет данные в SQL

Я провожу несколько дней сражаясь с этой проблемой посмотрим они могли бы давать мне маленькую помощь.

У меня есть эта ошибка:

"Не возможно вводить стоимость NULL в колонне 'КОДЕ', таблице 'C:\USERS\MAICOLODALIS\DOCUMENTS\VISUAL STUDIO 2010\PROJECTS\SCXP\SCXP\BIN\DEBUG\SCXP.MDF.dbo.PROVEEDORES'. Колонна не допускает стоимость NULL. Ошибка INSERT. Закончилась инструкция."

это мой код:

    Public Shared Sub AGREGARPROVEEDOR(ByVal codigo As String,
                                   ByVal nombres As String,
                                   ByVal apellidos As String,
                                   ByVal direccion As String,
                                   ByVal ciudad As String,
                                   ByVal telefono As String)
    Using BD As New SCXPEntities1
        BD.PROVEEDORES.AddObject(New PROVEEDORE() With {.CODIGO = codigo,
                                                        .NOMBRES = nombres,
                                                        .APELLIDOS = apellidos,
                                                        .DIRECCION = direccion,
                                                        .CIUDAD = ciudad,
                                                        .TELEFONO = telefono})
        BD.SaveChanges()
    End Using
End Sub

я нуждаюсь в Вашей помощи: (

2
задан 19.04.2016, 00:57
3 ответа

Проблема состоит в том, что колонна código не допускает стоимость null, самое вероятное состоит в том, чтобы эта колонна была первичным ключом твоей таблицы или ключа Гєnica.

, что tendrГ-эксперт, что делать, чтобы это решать значит распределять стоимость в эту колонну.

Или лучше aГєn, перед тем, как пробовать вводить стоимость в базе данных, подтверждать, - правильные ли распределенная стоимость, и если он не состоит asГ - в том, чтобы показывать уместные сообщения пользователю.

ActualizaciГіn:

Как decГ - в, ты должен убеждаться, что у свойства Código есть стоимость перед тем, как реализовывать призыв к базе данных, чтобы получать две вещи:

  1. Избегать того, чтобы случилась ошибка базы данных (и на ocultarseloal пользователь, потому что ты можешь раскрывать детали podrГ-an компрометировать безопасность тебя aplicaciГіn)
  2. Показывать "дружеское" сообщение для того, чтобы пользователь понял то, что происходит, и смог упорядочивать это.

Это может быть осуществленным многих способов. Простой способ это делать podrГ, - когда ты состоять в том, чтобы конвертировать mГ©todo в одной funciГіn, что он возвратил один booleano, если сохраняли данные и список с ошибками, которые должны показывать пользователя.

cГіdigo podrГ, - чтобы быть чем-то asГ - (забота, которая я C # и использовал конвертер Telerik для этого cГіdigo)

Public Shared Function AGREGARPROVEEDOR(codigo As String, _
    nombres As String, _
    apellidos As String, _
    direccion As String, _
    ciudad As String, _
    telefono As String, _
    ByRef errores As String()) As Boolean

    errors = New List(Of String)()

    ' Comprobar 
    If String.IsNullOrEmpty(codigo) Then
        errors.Add("Debe establecer el código del proveedor.")
    End If

    'TODO: Realizar otras comprobaciones

    ' Salir en caso de no pasar las validaciones
    If errors.Count > 0 Then
        Return False
    End If

    Using BD As New SCXPEntities1()
        BD.PROVEEDORES.AddObject(New PROVEEDORE() With { _
            Key .CODIGO = codigo, _
            Key .NOMBRES = nombres, _
            Key .APELLIDOS = apellidos, _
            Key .DIRECCION = direccion, _
            Key .CIUDAD = ciudad, _
            Key .TELEFONO = telefono _
        })
        BD.SaveChanges()
    End Using
    Return True
End Function

Другой способ это решать serГ - в используя механизм утверждений, которые предоставляет сам Энтити Фрамеворк как объясняется в этот artГ-зад (в inglГ©s)

4
ответ дан 24.11.2019, 14:34
  • 1
    эти во всем разуме это первичный ключ, но nose, из-за которого он дает мне ошибку стоимости, ты можешь объяснять мне хорошо, как решать это – Maicol Odalis 18.04.2016, 17:28
  • 2
    Привет @MaicolOdalis я обновил мой ответ, надеюсь довести до сведения твои сомнения. Привет – rsciriano 19.04.2016, 00:54
  • 3
    БОЛЬШОЕ СПАСИБО ПРОБЛЕМА БЫЛА ЕСТЬ И В ФОРМУЛЯРЕ ДОБАВЛЕНИЯ, НО СПАСИБО ATI ЭТО РЕШИЛ, Я ХОТЕЛ БЫ, ЧТОБЫ ТЫ ДАЛ МНЕ ТВОЙ SKYPE ИЛИ WHATSAPP, И ТАК ТЫ ОБЪЯСНЯЕШЬ МНЕ НЕСКОЛЬКО ВЕЩЕЙ, КОТОРЫЕ ОН ХОТЕЛ ИЗУЧИТЬ – Maicol Odalis 20.04.2016, 23:50
  • 4
    Ничего @MaicolOdalis. Относительно твоего petici и # 243; n, я сожалею о том, что говорю тебе, что я не могу обслуживать тебя этой такой индивидуализированной формы, потому что я не располагаю необходимым временем, хотя ты можешь находить мне в Twitter как rsciriano . Adem и # 225; s я думаю, что лучше, делать это в платформах как эта, потому что благодетельствует в сообщество . S.O. - хороший сайт, чтобы изучать и с большим количеством людей, как и мной, подготовленная помогать. Мой recomendaci и # 243; n дело в том, что ты группировал эти сомнения и спрашивал из-за aqu и # 237;. очень важен, чтобы твои вопросы были конкретными, и что est и # 233; n работаемые, потому что быть и # 225; м и # 225; s f и # 225; cil помогать . Привет – rsciriano 21.04.2016, 19:14

То же сообщение ошибки описывает ее situaciГіn:

"не могут вводить стоимость NULL в колонне 'КОДЕ', таблице dbo. ПОСТАВЩИКИ"

ты Можешь изменять колонну 'КОД' твоей таблицы ПОСТАВЩИКИ для того, чтобы он принял недействительную стоимость посредством рукописного шрифта посредством Альтер Табле .

Или изменяет прямо в SQL Server свойство, чтобы принимать недействительные твоего поля Вґ'CODIGOВґВґ выбирая признак" Allow Nulls":

introducir la descripción de la imagen aquí

2
ответ дан 24.11.2019, 14:34

PodrГ-схвати использовать пример для того, чтобы у тебя была также идея для, когда он не позволит тебе использовать стоимость NULL, я делаю их всегда в консультации; aquГ - я оставляю пример, как я это сделал:

верьте procedure SP_MANTENIMIENTO_RUTA @OPERACION в INT, @CODIGO INT, @Localidad_Rt varchar (150), @Descripcion_Rt varchar (150), @SubRuta бит, @Estado_Rt бит, @LimiteCreditRuta десятичный (18,2) СХВАТИ BEGIN

SET NOCOUNT ON;
-- INSERT
IF @OPERACION = 1
BEGIN
DECLARE @MAXIMO INT
SET @MAXIMO = (SELECT MAX(ISNULL(Ruta_ID,0)) + 1 AS MAXIMO FROM Logic_Ruta)
    INSERT INTO Logic_Ruta(Ruta_ID,Localidad_Rt, Descripciòn_Rt, SubRuta, Estado_Rt, LimiteCreditRuta)
        values (@MAXIMO,@Localidad_Rt,@Descripcion_Rt,@SubRuta,@Estado_Rt, @LimiteCreditRuta )
END
--Actualiza
IF @OPERACION = 2
BEGIN
    UPDATE Logic_Ruta SET Localidad_Rt = @Localidad_Rt, Descripciòn_Rt = @Descripcion_Rt,SubRuta =@SubRuta, Estado_Rt = @Estado_Rt, LimiteCreditRuta= @LimiteCreditRuta
        WHERE Ruta_ID = @CODIGO
END
--CARGA GRID
IF @OPERACION = 3
BEGIN
SELECT Ruta_ID AS CODIGO,Localidad_Rt AS Localidad_Rt, Descripciòn_Rt AS Descripcion_Rt, SubRuta AS SubRuta, Estado_Rt as Estado_Rt, LimiteCreditRuta AS LimiteCreditRuta
     FROM Logic_Ruta
END

END

0
ответ дан 24.11.2019, 14:34

Теги

Похожие вопросы