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中的数据读出来保存到一个字符串里,然后分解字符串成一个数组。这样可能效率会更高一点。