Insert date time value into SQL Server database

I'm trying to insert date time picker value into a DATETIME column in my database.

Here's my code..

 myconstr = "Data Source=wind;Initial Catalog=TestDB;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";
 myquery = "INSERT INTO DateTimeTB(MyDate) VALUES (@mydate)";

 using (SqlConnection connection = new SqlConnection(myconstr))
 {
     SqlCommand cmd = new SqlCommand(myquery);
     cmd.CommandType = CommandType.Text;
     cmd.Connection = connection;
     cmd.Parameters.Add(new SqlParameter("@mydate", SqlDbType.DateTime).Value = MyDTP01.Value);
     connection.Open();
     cmd.ExecuteNonQuery();
     connection.Close();
 }

It gives me the following error..

The SQL parameter collection only accepts non-null SqlParameter type objects, not date time objects.

How can I fix this..?

Jon Skeet
people
quotationmark

Your code is equivalent to:

var parameter = new SqlParameter("@mydate", SqlDbType.DateTime);
var value = MyDTP01.Value;
parameter.Value = value;
cmd.Parameters.Add(value);

You want to add the parameter, not the value. So:

cmd.Parameters.Add(new SqlParameter("@mydate", SqlDbType.DateTime)).Value = MyDTP01.Value;

Note the location of the brackets.

This can be simplified, however - you don't need to call the SqlParameter constructor yourself - you can just pass the name and the type to Add:

cmd.Parameters.Add("@mydate", SqlDbType.DateTime).Value = MyDTP01.Value;

people

See more on this question at Stackoverflow