有两个文本框,分别为tbxmintime,tbxmaxtime,现在我想把这两个文本框中的内容(如2005-11-1)写如数据表中,但是程序总是报错如:该字符串未被识别为有效的日期时间。有一个从索引 0 处开始的未知字请问如何解决??代码如下:
 string strconn= ConfigurationSettings.AppSettings["vote"];
  SqlConnection cn1= new SqlConnection (strconn);
cn1.Open ();
SqlCommand cm1=new SqlCommand  ("TimeAdd",cn1);
cm1.CommandType =CommandType.StoredProcedure ;
cm1.Parameters .Add ("@mintime",SqlDbType.DateTime );
cm1.Parameters .Add ("@maxtime",SqlDbType.DateTime );
cm1.Parameters ["@mintime"].Value =mintime.Text.ToString();
 cm1.Parameters ["@maxtime"].Value =maxtime.Text.ToString();
 cm1.ExecuteNonQuery ();
          cn1.Close ();
其中采用cm1.Parameters ["@mintime"].Value =Convert.ToDateTime(mintime.Text.Trim());或cm1.Parameters ["@mintime"].Value = DateTime.Parse(mintime.Text.ToString());进行调试,均未成功,所报的错误都如上所写,请问该如何修改???
存储过程如下:
CREATE PROCEDURE [TimeAdd]

( @mintime  [datetime],
 @maxtime    [datetime])
AS INSERT INTO [NewsVote].[dbo].[Time] 
( [mintime],
 [maxtime]) 
VALUES 
 (@mintime,
 @maxtime)
GO

解决方案 »

  1.   

    有一点小错误要说明一下,就是上面的tbxmintime,tbxmaxtime,应该为mintime,maxtime
      

  2.   

    经测试,只有在mintime,maxtime为空的时候才会有你那种错误,所以需要做如下修改
    cm1.Parameters ["@mintime"].Value =mintime.Text.ToString();
    cm1.Parameters ["@maxtime"].Value =maxtime.Text.ToString();
    改成这样
    if(mintime.Text!="")
    {
        cm1.Parameters ["@mintime"].Value =Convert.ToDateTime(mintime.Text);
    }
    else
    {
        cm1.Parameters ["@mintime"].Value =System.DBNull.Value;
    }
    if(maxtime.Text!="")
    {
        cm1.Parameters ["@maxtime"].Value =Convert.ToDateTime(maxtime.Text);
    }
    else
    {
        cm1.Parameters ["@maxtime"].Value =System.DBNull.Value;
    }
      

  3.   

    另外,注意时间字符串的格式****-**-**,用ToDateTime应该没错