请问我这个怎么解决啊?下面是我的代码
string sqlstr = "select [Tip],[Tdate] from tongji where [Tip]='" + serverip + "' and [Tdd]='" + dd + "'";
        System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sqlstr, con);
        try
        {
            con.Open();
            System.Data.SqlClient.SqlDataReader reader;
            reader = cmd.ExecuteReader();
            if (reader.Read())
            {            }
            else
            {
                System.Data.SqlClient.SqlCommand cmd2 = new System.Data.SqlClient.SqlCommand("insert into tongji (Tip,Tdate,Thh,Tmm,Tadd,Tdd,TY) values (@Tip,@Tdate,@Thh,@Tmm,@Tadd,@Tdd,@TY)", con);
                cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tip", System.Data.SqlDbType.VarChar, 20));
                cmd2.Parameters["@Tip"].Value = serverip;
                cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tdate", System.Data.SqlDbType.VarChar, 20));
                cmd2.Parameters["@Tdate"].Value = time;
                cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Thh", System.Data.SqlDbType.VarChar, 20));
                cmd2.Parameters["@Thh"].Value = hh;
                cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tmm", System.Data.SqlDbType.VarChar, 20));
                cmd2.Parameters["@Tmm"].Value = mm;
                cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tadd", System.Data.SqlDbType.VarChar, 100));
                cmd2.Parameters["@Tadd"].Value = add;
                cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tdd", System.Data.SqlDbType.VarChar, 100));
                cmd2.Parameters["@Tdd"].Value = dd;
                cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@TY", System.Data.SqlDbType.VarChar, 100));
                cmd2.Parameters["@TY"].Value = yy;
                cmd2.ExecuteNonQuery();
                reader.Close();
            }
        }
        catch (Exception ex)
        {
            throw (ex);
        }
        finally
        {
            con.Close();
        }

解决方案 »

  1.   

    使用DataReader没有关闭前,不能再调用数据库。你把DataReader换成别的就可以了
      

  2.   

        finally 
            { 
                con.Close(); 
            } 
     
    ` `   用泛型集合做吧·
      

  3.   

    已有打开的与此命令相关联的 DataReader,必须首先将它关闭  
      

  4.   

    reader = cmd.ExecuteReader();
                if (reader.Read())
                {              // 完成你应该完成的功能
                  reader.Close();

                }
                else
                {
                    reader.Close();
                    System.Data.SqlClient.SqlCommand cmd2 = new System.Data.SqlClient.SqlCommand("insert into tongji (Tip,Tdate,Thh,Tmm,Tadd,Tdd,TY) values (@Tip,@Tdate,@Thh,@Tmm,@Tadd,@Tdd,@TY)", con);
                    cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tip", System.Data.SqlDbType.VarChar, 20));
                    cmd2.Parameters["@Tip"].Value = serverip;
                    cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tdate", System.Data.SqlDbType.VarChar, 20));
                    cmd2.Parameters["@Tdate"].Value = time;
                    cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Thh", System.Data.SqlDbType.VarChar, 20));
                    cmd2.Parameters["@Thh"].Value = hh;
                    cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tmm", System.Data.SqlDbType.VarChar, 20));
                    cmd2.Parameters["@Tmm"].Value = mm;
                    cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tadd", System.Data.SqlDbType.VarChar, 100));
                    cmd2.Parameters["@Tadd"].Value = add;
                    cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tdd", System.Data.SqlDbType.VarChar, 100));
                    cmd2.Parameters["@Tdd"].Value = dd;
                    cmd2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@TY", System.Data.SqlDbType.VarChar, 100));
                    cmd2.Parameters["@TY"].Value = yy;
                    cmd2.ExecuteNonQuery();
                    reader.Close();
                }