日期:2014-05-18  浏览次数:20374 次

asp.net中如何将一个select查询字符串的结果赋给字符串数组
string[]   function=new   string   [50];//定义字符数组
                int   i;
      SqlConnection   con=new   SqlConnection   (SqlDB.GetConnString   ());
//SqlDB.GetConnString   ()返回一个连接字符串
      string   cmd_text= "select   e_function.*   from   e_rolefunction   inner   join   e_function "+ "on   e_function.func_id=e_rolefunction.func_id   where   role_id= ' "+role_id   .ToString   ()+ " '   order   by   e_function.func_id ";
//注:查询结果不止一条记录
                SqlCommand   cmd=new   SqlCommand   (cmd_text,con);
                con.Open();
                SqlDataReader   sdr   =   cmd.ExecuteReader();
                if   (sdr.Read())
                {
                        function[]   =   (string)sdr[ "func_ename "];

                }
                for   (i   =   0;   i   <   function   .Length   ;   i++)
                {
                        this.function[i].Visible   =   true;
                }

代码如上(编译出错,望高手指点),我的原意是从数据库中查询出字段 "func_ename "的内容,   然后将查询结果(即字段内的内容)赋给一个字符串数组,此字符串数组的内容与WEB页中的一部分Panel控件的的id属性相同,然后通过for循环把this.控件id名(   即字符数组内容).visible=true;

错误信息为:错误 1 应输入标识符
具体位置在这一行function[]   =   (string)sdr[ "func_ename "];  


------解决方案--------------------
用System.Collection.ArrayList
ArrayList arr = new ArrayList();
//...
while (sdr.Read())
{
arr.Add((string)sdr[ "func_ename "]);
}
//..
for (i = 0; i < arr.Count ; i++)
{
Response.Write((string)arr[i]);
}

或者也可以这样:
把rdr中的数据读出来保存到一个字符串里,然后分解字符串成一个数组。这样可能效率会更高一点。