private void button1_Click(object sender, EventArgs e)
        {
            List<float> dataa = new List<float>(16);
            List<float> datab = new List<float>(16);
            SqlConnection conn=new SqlConnection (@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\dss.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
            conn.Open();
            SqlCommand cmd = new SqlCommand("select * from cbyc",conn);
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                dataa.Add((float)reader["X"]);
                datab.Add ((float)reader["Y"]);
            }
        }
如上代码,cbyc表的定义是int ID, float X,float Y,就这三列,为什么我添加到LIST数组里,然后点击按钮,总是提示指定的转换无效??为什么啊我觉得没错啊。。

解决方案 »

  1.   

    是不是读出来的数据为DbNull哦?
      

  2.   

    while (reader.Read())
      {
      dataa.Add(reader["X"]==null?0:Convert.ToSingle(reader["X"]));
      datab.Add (reader["X"]==null?0:Convert.ToSingle(reader["Y"]));
      }
      

  3.   

    int,decimal等类型,直接使用(int)reader,(decimal)reader,转换会提示转换无效,应该使用Convert.ToXX转换
      

  4.   

    检查数据值
    reader["X"]==DBNull.Value?0:Convert.ToSingle(reader["X"]);
      

  5.   

    数组定义是<float>(16),看看你的数据reader["X"],跟踪一下看看是什么
      

  6.   

    int,decimal等类型,直接使用(int)reader,(decimal)reader,转换会提示转换无效,应该使用Convert.ToXX转换
      

  7.   

    好了为什么呢?我的数据类型不是INT 也不是DECIMAL。是FLOAT啊
      

  8.   

    reader["X"]这样拿出来是object类型,