我无法从DD / MM / YYYY格式的文本框中插入日期。 我在Windows 7上使用Visual Studio 2008。
我的语言和地区设置为“ENGLISH(英国)”,我的系统显示今天的日期,如2013年12月12日。我通过表单On load event在文本框中输入的日期相同。
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = DateTime.Now.ToShortDateString();
}
导致12/12/2013。
我在表“Table1”中放置了一个按钮来存储日期,其中只包含一个字段Date,其数据类型为DATETIME。单击事件包含以下行。
SqlConnection c = new SqlConnection();
c.ConnectionString ="Data Source=.\\SQLEXPRESS;AttachDbFilename='D:\\Documents\\Visual Studio 2008\\Projects\\test\\test\\Database1.mdf';Integrated Security=True;User Instance=True";
c.Open();
DateTime d;
d = Convert.ToDateTime(textBox1.Text);
string q = "insert into table1 values('" + d + "')";
SqlCommand cmd = new SqlCommand(q, c);
cmd.ExecuteNonQuery();
MessageBox.Show("record inserted");
每当我编辑日期时说今天是12/12/2013(DD / MM / YYYY)并且我输入了13/12/2013,它显示错误Sql异常是unhandeled。
将char数据类型转换为datetime数据类型会导致日期时间值超出范围。 声明已经终止。
当我输入12/13/2013(MM / DD / YYYY)时
它显示String未被识别为有效的DateTime。
任何建议朋友.. ???
答案 0 :(得分:3)
您应该使用适当的参数而不是连接字符串:
string q = "insert into table1 values (@dateparam)";
SqlCommand cmd = new SqlCommand(q, c);
cmd.Parameters.AddWithValue("@dataparam", d);
cmd.ExecuteNonQuery();
这将帮助您进行类型转换以及减轻SQL注入。
答案 1 :(得分:0)
使用此
d=DateTime.ParseExact(text, "dd/MM/yyyy hh:mm", CultureInfo.InvariantCulture);
Parse string to DateTime in C#
希望这有帮助
答案 2 :(得分:-1)
您的代码:
d = Convert.ToDateTime(textBox1.Text);
将d作为System.DateTime数据类型。如果您希望格式为mm / dd / yyyy - 您必须将其转换回格式为
的字符串代表:
string q = "insert into table1 values('" + d.ToString("MM/dd/yyyy") + "')";
在我看来 - 您不必将文本框转换为日期时间,尤其是当您的sql数据类型是日期时间时。如果你这样做进行验证 - 那么你应该在文本框中验证文本的格式。
答案 3 :(得分:-1)
只需更改您的代码,
Convert.ToDateTime(textbox.text, CultureInfo.InvarientCulture);
或在“site.Master.cs”页面加载事件中添加此内容。
//将日期时间格式覆盖为“dd-MM-yyyy”(在Site Master中)
CultureInfo cl = (CultureInfo)CultureInfo.CurrentCulture.Clone();
cl.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
cl.DateTimeFormat.LongTimePattern = "";
Thread.CurrentThread.CurrentCulture = cl;
现在您可以像这样使用您的代码..
Convert.ToDateTime(textbox.text, CultureInfo.CurrentCulture);
现在,如果您在任何本地服务器上发布代码,它将超过日期格式“dd-MM-yyyy”。