How to insert NULL into database if form field is empty

前端 未结 7 782
花落未央
花落未央 2021-01-01 17:56

I have a form and stored procedure that inserts the data from the form. It works fine except that if a field isn\'t filled in it doesn\'t insert a NULL into SQL

相关标签:
7条回答
  • 2021-01-01 18:37

    I think you problem is that frmFirstName is a string and a string cannot represent DBNull.

    I think this will solve your problem (I've just commented out your code):

    Dim rdr As SqlDataReader
                Dim cmdInsert As SqlCommand = New SqlCommand()
                cmdInsert.CommandText = "spPersonalDetailsInsert"
                cmdInsert.CommandType = CommandType.StoredProcedure
                cmdInsert.Connection = connSQL
    
    
                Dim firstname, lastname, address, address1, town, county, postcode As SqlParameter
                'convert to null if ""
                Dim frmFirstName As String
                'If pd_first_name.Text = "" Then
                '    frmFirstName = Convert.DBNull
                'Else
                '    frmFirstName = pd_first_name.Text
                'End If
    
                firstname = New SqlParameter()
                firstname.ParameterName = "@firstname"
                firstname.SqlDbType = SqlDbType.NVarChar
                firstname.Size = 50
                firstname.Direction = ParameterDirection.Input
                If pd_first_name.Text = "" Then
                      firstname.Value = DBNull.Value
                Else
                      firstname.Value = frmFirstName
                End If
    
    0 讨论(0)
  • 2021-01-01 18:41

    While creating stored procedure make those columns as null which can be null.. like

    CREATE PROCEDURE [dbo].[USP_TDS_SaveRecod]
    
    @ID INT,
    
    @CODE  INT,
    
    @FIRSTNAME VARCHAR(8)=NULL,
    
    @CITY VARCHAR(15)=NULL
    
    AS
    
    BEGIN
    
        .........................
    
        .........................
    
        .........................
    END
    

    and then in code don't add those parameters which are null..

    cmd.Parameters.Add("@ID", SqlDbType.Int).Value = obj.ID;
    cmd.Parameters.Add("@CODE", SqlDbType.Int).Value = obj.CODE;
    if(pd_first_name.Text != "")
    {
        cmd.Parameters.Add("@FIRSTNAME", SqlDbType.VarChar).Value = pd_first_name.Text;
    }
    if(city.Text != "")
    {
        cmd.Parameters.Add("@CITY", SqlDbType.VarChar).Value = pd_first_name.Text;
    }
    
    0 讨论(0)
  • 2021-01-01 18:45
    If RdFree.Checked = True Then
        Dim nu As String = "NULL"
        UpdPolicys.Append(", AccIDFree = " & nu & " , AccTypeIDFree = " & nu & " ")
    End If
    
    0 讨论(0)
  • 2021-01-01 18:46

    why you even set it if it is null?

            If pd_first_name.Text <> "" Then
              frmFirstName = pd_first_name.Text
              firstname = New SqlParameter()
              firstname.ParameterName = "@firstname"
              firstname.SqlDbType = SqlDbType.NVarChar
              firstname.Size = 50
              firstname.Direction = ParameterDirection.Input
              firstname.Value = frmFirstName
            End If
    
    0 讨论(0)
  • 2021-01-01 18:50

    You need to use DBNull.Value

                If String.IsNullOrEmpty(pd_first_name.Text.ToString().Trim) = true Then
                    frmFirstName = DBNull.Value
                Else
                    frmFirstName = pd_first_name.Text
                End If
    
    0 讨论(0)
  • 2021-01-01 18:51
    Dim TempStr As String
    TempStr= "spPersonalDetailsInsert"
    TempStr = TempStr.Replace("''", "null")
    cmdInsert.CommandText = TempStr
    

    Now No Need to use

    If pd_first_name.Text = "" Then
       Response.Write("NULL")
       address1.Value = DBNull.Value
    Else
       Response.Write("NOT NULL")
       address1.Value = pd_address1.Text
    End If 
    

    Hope this might be Helpful

    0 讨论(0)
提交回复
热议问题