各位大侠你们好:
我现在遇到一个问题如下描述:我把一个表中的  短信内容  发送时间(datetime)这两列在一个 dataGridView 控件中显示,我想以 发送时间 为条件来 单条删除 dataGridView 中的短信内容 。现自定义了一个id  string id = dataGridView1.CurrentRow.Cells[0].Value.ToString(); 再将id强制性转换为 日期型   DateTime id1 = Convert.ToDateTime(id);
 然后再在语句中写上  SqlCommand cmd = new SqlCommand("delete from SM_MSG where MSG_BEGTIME= '" + id1 + "'", connectionS); 运行的时候会出现 “该字符串未被识别为有效的 DateTime。有一个未知单词(从索引 0 处开始)。”这样的问题,不知该怎么解决,请大侠帮忙。

解决方案 »

  1. id1为DateTime 类型。不能和string类型相加的
      

  2. string id1 = Convert.ToDateTime(id).toString();
    试试
      

  3. 定义id的时候直接转换呢? 
    DateTime id1 = Convert.ToDateTime(dataGridView1.CurrentRow.Cells[0].Value.ToString());
    查询的时候  "delete from SM_MSG where MSG_BEGTIME= '" + id1.toString() + "'" ;
      

  4. 不是什么东西都能转化为时间格式的 如果必须这样实现那就直接以时间(yyyy-MM-dd HH:mm:ss xx.xxx)删除就是了  xx.xxx最好是带上  以减少时间重复引起的不必要的删除
     最好的做法 是弄个ID唯一的  根据ID删除 这样做1,准确 2,效率高
      

  5. 你取出id的值看看,看看id的值是多少!因为这样的原因很可能是在把string类型转换成id类型的时候出现的错误。
      

  6. delete from SM_MSG where convert(varchar(50),MSG_BEGTIME)='"+id+"'
      

  7. 直接把这句【delete from SM_MSG where MSG_BEGTIME= '" + id1 + "'"】放在sql中执行。
    出什么错误?id1写上正确的时间。如【2011-02-23】.
    如果再出错。【=】后加个N。
    如果出错,sql写错了。和c#无关。如果没出错。看看id1.toString()是否是正确的时间格式。另外【"delete from SM_MSG where MSG_BEGTIME= '" + id1 + "'"】和【DateTime id1 = Convert.ToDateTime(id)】我觉得肯定会出错。在c#中应该会提示类型相加不了啊。
      

类似问题 »