private void timer1_Tick(object sender, EventArgs e)
        {
            int a=0;//  为了符合数据库类型 ,可空类型;
            
            Form4 mm = new Form4();
            SqlConnection sqlconn = new SqlConnection(@"server=(local);database=xmgl;uid=sa;pwd=;Connection Timeout=30");
            sqlconn.Open();
            
            SqlCommand sqlcomm = new SqlCommand("select * from money",sqlconn);            SqlDataReader sqlread = sqlcomm.ExecuteReader();
            while(sqlread.Read())
            {
                //a = (int)sqlread.GetValue(4);
                a = Convert.ToInt32(sqlread[4].ToString());                       /这里显示输入字符串格式不对
                if(a==0)
                {
                   DateTime b=Convert.ToDateTime(sqlread[5].ToString());
                    if(DateTime.Now>b)
                    {
                        mm.Show();
                    }
                }
                if(a==1)
                {
                    DateTime b = Convert.ToDateTime(sqlread[6].ToString());
                     if(DateTime.Now>b)
                    {
                        mm.Show();
                    }
                }
                if (a == 2)
                {
                    DateTime b = Convert.ToDateTime(sqlread[7].ToString());
                     if(DateTime.Now>b)
                    {
                        mm.Show();
                    }
                }
                if (a > 2 && a <= 4)
                {
                    DateTime b = Convert.ToDateTime(sqlread[8].ToString());
                     if(DateTime.Now>b)
                    {
                        mm.Show();
                    }
                }
              
            }
}

解决方案 »

  1.   

    添加对VB.NET运行时的引用(在引用里添加“Microsoft Visual Basic ...”),然后做如下处理:
    if( Microsoft.VisualBasic.Information.IsNumeric(a)){
    a = Convert.ToInt32(sqlread[4].ToString());                      /这里显示输入字符串格式不对 
    ...
    }
      

  2.   

      a = (strint)sqlread[4].ToString());                      /这里显示输入字符串格式不对 
      

  3.   

      a = (string)sqlread[4].ToString());                      /这里显示输入字符串格式不对 
      

  4.   

    更正一下:应该是if( Microsoft.VisualBasic.Information.IsNumeric(sqlread[4])){
      

  5.   

    a = Convert.ToInt32(sqlread.GetValue(4));
      

  6.   

    你是说数据库字段可以为空吧?
    为空的的话Convert方法肯定出錯了。加个判断,为空的话赋为0:
    a = (sqlread[4].ToString()=="" ? 0 : Convert.ToInt32(sqlread[4]));