C# 根据日期字段删除一行信息怎么编程?

2017-05-06 12:23
刚开始学c#,不是很懂,求指教!!!
如图,删除按钮编程是根据Alarm_Time来删除一行信息的,但是我写的删除语句一直有错,求大神告诉一下正确的语句。
C# 根据日期字段删除一行信息怎么编程?0

回复讨论(解决方案)

我建议你学C#之前 先学习一下 如何提问
谁知道你的表名 谁知道你是怎么写的语句 又有谁知道是保什么错
我不知道是网的问题还是我不会发这个论坛,刚上传完图片整个网页都打不开了,这次先发代码吧。
 if (this.dataGridView1.CurrentCell.ColumnIndex == 0)
                {
                    string st = this.dataGridView1[0,

                    this.dataGridView1.CurrentCell.RowIndex].Value.ToString();
               
                    SqlConnection conn = new SqlConnection();
                    string str = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\参考资料\video\database\database\video.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                    conn.ConnectionString = str;
                    conn.Open();

                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandText = "delete from Alarm_Pic where Alarm_Time='" + st + "'";
                    cmd.Connection = conn;
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }
C# 根据日期字段删除一行信息怎么编程?1
不建议使用时间来删除。建议用主键 或者ID来删除。如果用时间 str需要转换为时间类型
这个是个报警图片查询表,ID都是其他表的外键,没选择了,你能告诉我下怎么把str转换成时间吗?谢谢
不建议使用时间来删除。建议用主键 或者ID来删除。如果用时间 str需要转换为时间类型

这个是个报警图片查询表,ID都是其他表的外键,没选择了,你能告诉我下怎么把str转换成时间吗?谢谢
cmd.CommandText = "delete from Alarm_Pic where Alarm_Time='" + convert.todatetime(st )+ "'";
cmd.CommandText = "delete from Alarm_Pic where Alarm_Time='" + convert.todatetime(st )+ "'";

还是这个错误~为啥?
C# 根据日期字段删除一行信息怎么编程?2
得看看这个语句中日期的值格式是否与数据库中一致吧。
var dt=DateTime.parse(st);
cmd.CommandText = "delete from Alarm_Pic where Alarm_Time='" + dt.ToString("yyyy-MM-dd HH:mm:ss")+ "'";
第一,楼上说的,尽量使用主键或组合主键来删除记录;
第二,不改变其他内容的情况,将你的语句改为如下试试:
SqlCommand cmd=new SqlCommand();
cmd.CommandText="delete from Alarm_Pic where Alarm_Time=@a";
cmd.Connection=conn;
cmd.Parameters.AddWithValues("@a",st);
cmd.ExcecuteNonQuery();
conn.Close();
第一,楼上说的,尽量使用主键或组合主键来删除记录;
第二,不改变其他内容的情况,将你的语句改为如下试试:
SqlCommand cmd=new SqlCommand();
cmd.CommandText="delete from Alarm_Pic where Alarm_Time=@a";
cmd.Connection=conn;
cmd.Parameters.AddWithValues("@a",st);
if(conn.State!=ConnectionState.Open)
{
conn.Open();
}
cmd.ExcecuteNonQuery();
if(conn.State!=ConnectionState.Closed)
{
conn.Close();
}
把st打印出来,问题就好找了