ARTICLE

Enter Null Values for DateTime Column of SQL Server

Posted by Sushila Patel Articles | WebForms Controls September 26, 2003
Inserting a null value to the DateTime Field in SQL Server is one of the most common issues giving various errors. Even if one enters null values the value in the database is some default value as 1/1/1900 12:00:00 AM.
Reader Level:

Introduction:

Inserting a null value to the DateTime Field in SQL Server is one of the most common issues giving various errors. Even if one enters null values the value in the database is some default value as 1/1/1900 12:00:00 AM.

The Output of entering the null DateTime based on the code would in most cases have errors as:

  • String was not recognized as a valid DateTime.
  • Value of type 'System.DBNull' cannot be converted to 'String'.

Or No Error but DataTime entered in Database would be as 1/1/1900 12:00:00 AM
So lets write the code to enter null values in the DataBase.

The User Interface is as follows:

To begin with Code:

Namespaces used

  • System.Data.SqlClient/ System.Data.OleDb
  • System.Data.SqlTypes
  • Code for System.Data.SqlClient

C#

string
sqlStmt ;
string conString ;
SqlConnection cn =
null;
SqlCommand cmd =
null;
SqlDateTime sqldatenull ;
try
{
sqlStmt = "insert into Emp (FirstName,LastName,Date) Values (@FirstName,@LastName,@Date) ";
conString = "server=localhost;database=Northwind;uid=sa;pwd=;";
cn =
new SqlConnection(conString);
cmd =
new SqlCommand(sqlStmt, cn);
cmd.Parameters.Add(
new SqlParameter("@FirstName", SqlDbType.NVarChar, 11));
cmd.Parameters.Add(
new SqlParameter("@LastName", SqlDbType.NVarChar, 40));
cmd.Parameters.Add(
new SqlParameter("@Date", SqlDbType.DateTime));
sqldatenull = SqlDateTime.Null;
cmd.Parameters["@FirstName"].Value = txtFirstName.Text;
cmd.Parameters["@LastName"].Value = txtLastName.Text;
if (txtDate.Text == "")
{
cmd.Parameters ["@Date"].Value =sqldatenull ;
//cmd.Parameters["@Date"].Value = DBNull.Value;
}
else
{
cmd.Parameters["@Date"].Value = DateTime.Parse(txtDate.Text);
}
cn.Open();
cmd.ExecuteNonQuery();
Label1.Text = "Record Inserted Succesfully";
}
catch (Exception ex)
{
Label1.Text = ex.Message;
}
finally
{
cn.Close();
}

VB.NET

Dim sqlStmt As String
Dim
conString As String
Dim
cn As SqlConnection
Dim cmd As SqlCommand
Dim sqldatenull As SqlDateTime
Try
sqlStmt = "insert into Emp (FirstName,LastName,Date) Values (@FirstName,@LastName,@Date) "
conString = "server=localhost;database=Northwind;uid=sa;pwd=;"
cn =
New SqlConnection(conString)
cmd =
New SqlCommand(sqlStmt, cn)
cmd.Parameters.Add(
New SqlParameter("@FirstName", SqlDbType.NVarChar, 11))
cmd.Parameters.Add(
New SqlParameter("@LastName", SqlDbType.NVarChar, 40))cmd.Parameters.Add(New SqlParameter("@Date", SqlDbType.DateTime))
sqldatenull = SqlDateTime.Null
cmd.Parameters("@FirstName").Value = txtFirstName.Text
cmd.Parameters("@LastName").Value = txtLastName.Text
If (txtDate.Text = "") Then
cmd.Parameters("@Date").Value = sqldatenull
'cmd.Parameters("@Date").Value = DBNull.Value
Else
cmd.Parameters("@Date").Value = DateTime.Parse(txtDate.Text)
End If
cn.Open()
cmd.ExecuteNonQuery()
Label1.Text = "Record Inserted Succesfully"
Catch ex As Exception
Label1.Text = ex.Message
Finally
cn.Close()
End Try

Code for System.Data.SqlClient.

C#

string sqlStmt;
string conString ;
OleDbConnection cn =
null ;
OleDbCommand cmd =
null ;
try
{
sqlStmt = "insert into Emp (FirstName,LastName,Date) Values (?,?,?) ";
conString = "Provider=sqloledb.1;user id=sa;pwd=;database=northwind;data source=localhost";
cn =
new OleDbConnection(conString);
cmd =
new OleDbCommand(sqlStmt, cn) ;
cmd.Parameters.Add(
new OleDbParameter("@FirstName", OleDbType.VarChar, 40));
cmd.Parameters.Add(
new OleDbParameter("@LastName", OleDbType.VarChar, 40));
cmd.Parameters.Add(
new OleDbParameter("@Date", OleDbType.Date));
cmd.Parameters["@FirstName"].Value = txtFirstName.Text;
cmd.Parameters["@LastName"].Value = txtLastName.Text;
if ((txtDate.Text == "") )
{
cmd.Parameters["@Date"].Value = DBNull.Value;
}
else
{
cmd.Parameters["@Date"].Value = DateTime.Parse(txtDate.Text);
}
cn.Open();
cmd.ExecuteNonQuery();
Label1.Text = "Record Inserted Succesfully";
}
catch (Exception ex)
{
Label1.Text = ex.Message;
}
finally
{
cn.Close();


VB.NET

Dim
sqlStmt As String
Dim
conString As String
Dim
cn As OleDbConnection
Dim cmd As OleDbCommand
Try
sqlStmt = "insert into Emp (FirstName,LastName,Date) Values (?,?,?) "
conString = "Provider=sqloledb.1;user id=sa;pwd=;database=northwind;data source=localhost"
cn =
New OleDbConnection(conString)
cmd =
New OleDbCommand(sqlStmt, cn)
cmd.Parameters.Add(
New OleDbParameter("@FirstName", OleDbType.VarChar, 40))cmd.Parameters.Add(New OleDbParameter("@LastName", OleDbType.VarChar, 40))cmd.Parameters.Add(New OleDbParameter("@Date", OleDbType.Date))cmd.Parameters("@FirstName").Value = txtFirstName.Text
cmd.Parameters("@LastName").Value = txtLastName.Text
If (txtDate.Text = "") Then
cmd.Parameters("@Date").Value = DBNull.Value
Else
cmd.Parameters("@Date").Value = DateTime.Parse(txtDate.Text)
End If
cn.Open()
cmd.ExecuteNonQuery()
Label1.Text = "Record Inserted Succesfully"
Catch ex As Exception
Label1.Text = ex.Message
Finally
cn.Close()
End Try

The Data Entered in DataBase:

Login to add your contents and source code to this article
post comment
     

thanks a lot dear

Posted by Amir Chabok Mar 17, 2012

I am unable to add null or Insert record using this code..Please, help... Lettle help would much appreciate. I am new to asp.net also... Dim sqlStmt As String Dim conString As String Dim cn As OracleConnection Dim cmd As OracleCommand Dim sqldatenull As OracleDate Try sqlStmt = "insert into temp (startdate, enddate) Values (@startdate, @enddate)" 'conString = "server=localhost;database=Northwind;uid=sa;pwd=;" conString = "Data Source=abc; User Id=abc;Password=ab" cn = New OracleConnection(conString) cmd = New OracleCommand(sqlStmt, cn) 'cmd.Parameters.Add(New sqlParameter("@FirstName", SqlDbType.NVarChar, 11)) 'cmd.Parameters.Add(New SqlParameter("@LastName", SqlDbType.NVarChar, 40)) 'cmd.Parameters.Add(New SqlParameter("@Date", SqlDbType.DateTime)) cmd.Parameters.Add(New OracleParameter("@startdate", OracleDbType.TimeStamp)) cmd.Parameters.Add(New OracleParameter("@enddate", OracleDbType.TimeStamp)) sqldatenull = OracleDate.Null 'cmd.Parameters("@FirstName").Value = txtFirstName.Text 'cmd.Parameters("@LastName").Value = txtLastName.Text If (txtEndDate.Text = "") Then cmd.Parameters("@EndDate").Value = sqldatenull 'cmd.Parameters("@Date").Value = DBNull.Value Else cmd.Parameters("@EndDate").Value = DateTime.Parse(txtEndDate.Text) End If cn.Open() cmd.ExecuteNonQuery() 'Label1.Text = "Record Inserted Succesfully" Catch ex As Exception 'Label1.Text = ex.Message Finally 'cn.Close() End Try

Posted by jimmy shown Mar 05, 2011

Hello Sushila Patel
Thx for share his knowledge which is very helpful for me to solve his problem after lot time to wast to search about that.

Sajjad Ahmed
Software Developer
ITBeams(Pvt) Ltd. Lahore
Pakistan

Posted by Sajjad Ahmed Aug 25, 2010

It's handy.

Posted by Vijay Nov 26, 2009

Hi This article helped me alot. I was trying to update the details by passing parameters to a stored procedure. I couldn't find a solution to pass null value to a stored procedure.
This code helped in solving my problem. Thanks.

Posted by rajitha Oct 22, 2009
COMMENT USING
PREMIUM SPONSORS
Over-C is a holistic consortium of communications and technology specialists. We build, deploy and market both business as well as consumer products and solutions.
Get Career Advice from Experts
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Get Career Advice from Experts