我使用一个C#数据库类读取数据库,首先数据库里面有数据并且读取条件没有问题
dbopt opt= new dbopt();
TreeNode tr = this.treeView1.SelectedNode;
SqlDataReader dr;
string PatternTypeID;
string sql;sql = "select id from Ocean_PatternTypeTree where PatternTypeID = '2000'";
SqlParameter[] myparm = { new SqlParameter("@PatternTypeID", SqlDbType.VarChar, 50) };
myparm[0].Value = this.treeView1.SelectedNode.ToString();
dr = opt.ExecuteReader(sql);
            
            
common.ShowInfo(dr[0].ToString());总是说在"dr[0].ToString(" 这个地方"在没有任何数据时进行无效的读取尝试。" 这是怎么回事?
数据库查询函数
public  SqlDataReader ExecuteReader(string strSQL)
  {
   SqlConnection connection = new SqlConnection(connectionString);   
   SqlCommand cmd = new SqlCommand(strSQL,connection);    
   try
   {
    connection.Open(); 
    SqlDataReader myReader = cmd.ExecuteReader();
    return myReader;
   }
   catch(System.Data.SqlClient.SqlException e)
   {        
    throw new Exception(e.Message);
       
   }   
   
  }  

解决方案 »

  1.   

    要先调用dr.Read();读取数据才能dr[0].ToString()
      

  2.   

    我使用一个C#数据库类读取数据库,首先数据库里面有数据并且读取条件没有问题 
    dbopt opt= new dbopt(); 
    TreeNode tr = this.treeView1.SelectedNode; 
    SqlDataReader dr; 
    string PatternTypeID; 
    string sql; sql = "select id from Ocean_PatternTypeTree where PatternTypeID = '2000'"; 
    SqlParameter[] myparm = { new SqlParameter("@PatternTypeID", SqlDbType.VarChar, 50) }; 
    myparm[0].Value = this.treeView1.SelectedNode.ToString(); 
    dr = opt.ExecuteReader(sql); if(dr.Read())
    {          
      common.ShowInfo(dr[0].ToString()); 
    }
    总是说在"dr[0].ToString(" 这个地方"在没有任何数据时进行无效的读取尝试。" 这是怎么回事? 
    数据库查询函数 
    public  SqlDataReader ExecuteReader(string strSQL) 
      { 
      SqlConnection connection = new SqlConnection(connectionString);  
      SqlCommand cmd = new SqlCommand(strSQL,connection);    
      try 
      { 
        connection.Open(); 
        SqlDataReader myReader = cmd.ExecuteReader(); 
        return myReader; 
      } 
      catch(System.Data.SqlClient.SqlException e) 
      {        
        throw new Exception(e.Message); 
          
      }  
      
      }