如何解决从字符串转换日期和/或时间时转换失败?

时间:2018-02-06 07:03:27

标签: c# asp.net sql-server-2005

  

从字符转换日期和/或时间时转换失败   串

我是Asp.net的新手。我想上传图像并将记录保存在它捕获的Sql数据库中"转换失败时转换日期和/或时间来自字符串"。我不知道为什么在运行时遇到此错误。任何人都知道帮助我。它非常有用我的项目

 protected void Add_Click(object sender, EventArgs e)
            {
                if (!FileUpload1.HasFile)
                {
                    Label2.Visible = true;
                    Label2.Text = "Please Select Image File";    //checking if file uploader has no file selected


                }
                else
                {
                    int length = FileUpload1.PostedFile.ContentLength;
                    byte[] pic = new byte[length];


                    FileUpload1.PostedFile.InputStream.Read(pic, 0, length);
                    string constr = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
                    SqlConnection con = new SqlConnection(constr);
                    SqlCommand cmd1 = new SqlCommand("insert into Student" + "(RegNo,Name,DOB,Gender,Address,Country,CreatedTime,Picture) values(@RegNo,@Name,@DOB,@Gender,@Address,@Country,@date,@photo)", con);
                    con.Open();
                    cmd1.Parameters.AddWithValue("@RegNo", RegNo.Text);
                    cmd1.Parameters.AddWithValue("@Name", Name.Text);
                    cmd1.Parameters.AddWithValue("@DOB", Dob.Text);
                    cmd1.Parameters.AddWithValue("@gender", Gender.SelectedValue);
                    cmd1.Parameters.AddWithValue("@Address", Address.Text);
                    cmd1.Parameters.AddWithValue("@Country", Country.Text);
                    cmd1.Parameters.AddWithValue("@date", DateTime.Now);
                    cmd1.Parameters.AddWithValue("@photo", pic);

                    try
                    {
                        cmd1.ExecuteNonQuery();
                        Label2.Visible = true;
                        Label2.Text = "Image Uploaded Sucessfully";
                        con.Close();//after Sucessfully uploaded image
                    }
                    catch
                    {
                    }
                }


                Response.Redirect("~/WebForm1.aspx");
            }

5 个答案:

答案 0 :(得分:0)

MS SQl的默认日期时间格式为年 - 月 - 日 您需要将日期时间格式解析为此格式 以下代码是

DateTime.Now.ToString("yyyy-MM-dd");

答案 1 :(得分:0)

DOB可能是您代码中的问题,执行

cmd1.Parameters.AddWithValue("@DOB", Convert.ToDateTime(Dob.Text));

确保Dob.Text是一个合适的日期。

答案 2 :(得分:0)

我认为错误就在这一行:

cmd1.Parameters.AddWithValue("@DOB", Dob.Text);

如果格式正确

,您可以使用Convert.ToDateTime()进行转换
cmd1.Parameters.AddWithValue("@DOB", Convert.ToDateTime(Dob.Text));

但是,如果不是,则会有一个名为DateTime.ParseExact()的函数,它将使用指定的格式转换指定的日期和时间字符串表示。

例如,您的日期格式为dd/MM/yy - 31/01/18

string strDob = Dob.Text; // 31/01/18
DateTime dtDob = DateTime.ParseExact(strDob , "dd/MM/yy", CultureInfo.InvariantCulture);
cmd1.Parameters.AddWithValue("@DOB", dtDob );

答案 3 :(得分:0)

您可以尝试此操作,因为它需要转换为格式

cmd.Parameters.AddWithValue("@DOB",Convert.ToDateTime(emp.DOB).ToString("yyyy-MM-dd"));

答案 4 :(得分:0)

尝试:

 cmd1.Parameters.AddWithValue("@date",Convert.ToDateTime(DateTime.Now.ToLongTimeString()));

在数据库中看起来像这样:

11/12/2020 5:32:49 PM