这是我的代码
Establish_Connection con = new Establish_Connection();
string Fname = TxtFirstName.Text;
string Lname = TxtLastName.Text;
string Email = TxtEmailSingUp.Text;
string Password = TxtPasswordSignUp.Text;
string DOBDay = DDLDay.SelectedValue;
string DOBMonth = DDLMonth.SelectedValue;
string DOBYear = DDLYear.SelectedValue;
string DOB= DOBYear +"/"+ DOBMonth +"/"+ DOBDay;
string Gender = LblGender.SelectedValue;
string UserName = txtUserName.Text;
string connStr = ConfigurationManager.ConnectionStrings["Database"].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
try
{
string constr = "INSERT INTO USERS (UserName,FName,LName,DOB,Gender,Email,Password) VALUES (@UserName,@FName,@LName,@DOB,@Gender,@Email,@Password);";
SqlCommand cmd = new SqlCommand(constr,conn);
cmd.Parameters.AddWithValue("@Password", Password);
cmd.Parameters.AddWithValue("@UserName",UserName);
cmd.Parameters.AddWithValue("@DOB",DOB);
cmd.Parameters.AddWithValue("@Gender", Gender);
cmd.Parameters.AddWithValue("@Email", Email);
cmd.Parameters.AddWithValue("@LName", Lname);
cmd.Parameters.AddWithValue("@FName", Fname);
int affectrows = cmd.ExecuteNonQuery();
Response.Write("connection established");
}
catch (Exception ex)
{
Response.Write("error" + ex.Message.ToString());
}
}
它一直告诉我DOB中的错误,我需要将其转换为日期时间类型,但是当我使用Convert.ToDateTime()
转换它时,它仍然会给我错误。在数据库中类型为DateTime
,任何人都可以帮助我吗?
答案 0 :(得分:3)
你应该这样做:
DateTime DOB= new DateTime(Convert.ToInt32(DOBYear), Convert.ToInt32(DOBMonth), Convert.ToInt32(DOBDay));
然后 AddWithValue
将正常运行,因为该值是有效的DateTime
。
答案 1 :(得分:0)
Kamal的代码是正确的。
数据库通常将日期/时间存储为数字,其整数部分是自某个开始日期以来的天数,小数是自当天开始以来的毫秒数/微秒数。对于使用它的人来说,这通常是完全透明的,不应该被依赖。
根据数据库的不同,可能会识别出许多字符串格式。例如,SQL Server可能无法识别您提供的格式,但会识别YYYY-MM-DD。各种形式的DD / MM / YYYY和MM / DD / YYYY可能是一个问题,我宁愿永远不要使用它们。我通常使用DD MMM YYYY(例如' 2015年3月28日')当我使用字符串来表示日期时,但是在C#中,因为它具有完美的DateTime类型,其中AFAIK所有数据库驱动程序都了解我用它。