C# 在sql server中插入日期值并使用c将其检索到文本框中#
我正在尝试将datetimepicker中的日期值插入sql server数据库,并使用select命令将其检索到文本框中。我正在使用c#作为前端语言。请为我解决此问题。 这是我写的代码C# 在sql server中插入日期值并使用c将其检索到文本框中#,c#,sql-server,windows,c#-3.0,C#,Sql Server,Windows,C# 3.0,我正在尝试将datetimepicker中的日期值插入sql server数据库,并使用select命令将其检索到文本框中。我正在使用c#作为前端语言。请为我解决此问题。 这是我写的代码 private void save_Click(object sender, EventArgs e) { try { SqlCommand cmd = new SqlCommand("insert into xt1 values('" + t
private void save_Click(object sender, EventArgs e)
{
try
{
SqlCommand cmd = new SqlCommand("insert into xt1 values('" + textBox1.Text + "'," + int.Parse(textBox2.Text) + ")", cnn);
cnn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("saved");
cnn.Close();
}
catch (Exception x)
{
MessageBox.Show(x.Message);
cnn.Close();
}
}
private void button3_Click(object sender, EventArgs e)
{
this.Dispose();
}
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
dateTimePicker1.Text = DateTime.Now.ToShortDateString();
textBox1.Text = dateTimePicker1.Text;
}
private void button2_Click(object sender, EventArgs e)
{
try
{
cnn.Open();
SqlCommand ad = new SqlCommand ("select * from xt1 where id=" + int.Parse(textBox2.Text), cnn);
SqlDataReader dr = ad.ExecuteReader();
dr.Read();
while (dr.HasRows)
{
textBox1.Text = dr[0].ToString();
textBox2.Text = DateTime .Parse ( dr[1].ToString());
}
cnn.Close();
}
catch (Exception x)
{
MessageBox.Show(x.Message);
}
插入数据库成功,但检索对我来说是一场噩梦
SqlDataReader dr = ad.ExecuteReader();
dr.Read();
while (dr.HasRows) {
textBox2.Text = dr.GetDateTime(1).ToString(/* Pass suitable format and CultureInfo */);
…
}
每次其值更改时,似乎都会重置
日期时间选择器1
。如果我记得正确设置该值,将触发事件:无限循环。但它似乎也没有意义:您想在表单加载时而不是在更改时进行初始化吗?您能说明您遇到了什么错误/异常吗?首先要做的是:停止像那样将值直接放入SQL中。这在很多方面都是不好的做法,最令人担忧的是,你容易受到攻击,但也因为你把日期/时间表示为文本,而没有必要。此外,您还没有告诉我们您给我们的代码有什么问题-“检索是一场噩梦”不是一个明确的问题描述。(您可能只需要转换到DateTime
,但至少要告诉我们现在出了什么问题。)请更详细地描述您遇到的错误以及它们在代码中发生的位置。作为一个社区,我们在这里测试您的代码,所以请更加精确。使用参数化SQL。始终,无论它是否“只是一个Windows窗体应用程序”。那么您根本不需要担心日期/时间的格式。@user1932583:作为Windows窗体应用程序并不会自动使其安全。您仍然应该使用更好的数据库查询实践。好的,我在sql server中指定了日期作为我的数据类型,在datepicker控件中选择的日期将转到textbox,然后textbox中的文本将保存到数据库中。现在我的问题是我没有将保存的日期保存到textbox中@richard@user1932583代码中没有任何内容这是显而易见的。您是否尝试过调试:在按钮2\u单击的开始处设置断点。首先确保正在调用它(您确实设置了事件处理程序?),然后确定它正在做什么(例如,您是否正在获取任何记录?。@user1932583:获取什么?我没有获取任何记录。@user1932583如果在SQL Server Management Studio(或其他类似工具)中运行相同的查询(手动替换id),会发生什么情况:可能您没有预期的数据。
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
dateTimePicker1.Text = DateTime.Now.ToShortDateString();
textBox1.Text = dateTimePicker1.Text;
}