从类中的函数返回数组值(ASP.net C#)

时间:2015-08-11 06:55:44

标签: c# asp.net arrays function class

服务类

public string[] loadSecretQues(string email)
{
    string[] ques= new string[3];

    dbConn = new OdbcConnection(dbConnString);
    dbConn.Open();
    cmd = new OdbcCommand();
    cmd.Connection = dbConn;

    cmd = new OdbcCommand("SELECT q1, q2, q3 FROM Information WHERE EmailAdd = '" + email + "'", dbConn);
    dRead = cmd.ExecuteReader();

    while (dRead.Read())
    {
        if (dRead.HasRows)
        {
            for (int i = 1; i <= 3; i++)
            {
                for (int j = 0; j <= 3; j++)
                {
                    ques[j] = dRead["q" + i].ToString();
                }
                return ques[i];
            }
        }
    }
}

Page.aspx

protected void btnCheck_Click(object sender, EventArgs e)
{
    cmbQues.Items.Add(srvc.loadSecretQues(txtEmail.Text));
}

大家好。我正在寻求帮助。我想从类中的函数返回数组值。过程是,我想从我的数据库中检索3个问题(字符串数据类型)并将其存储在组合框中。有任何建议如何检索这三个问题?还有其他方法吗?提前致谢! :)

2 个答案:

答案 0 :(得分:0)

您正在从内部loop返回,以便取消其余的迭代,并且您也错过了Dispose命令以及关闭打开的连接。所以我建议你在返回之前处理命令以及连接,因此代码将如下所示:

  

无需检查dvc_mst_tdeposit,因为它没有行控制   从而出来。因为,不需要外部for Loop(i循环)   (j循环足以处理这种情况。

dRead = cmd.ExecuteReader();
while (dRead.Read())
{
    for (int j = 0; j < 3; j++)
      {
         ques[j] = dRead["q" + i].ToString();
      }              
}
dRead.Close();
cmd.Dispose();
dbConn.Close();
return ques;

答案 1 :(得分:0)

使用List而不是string array.check link以获得优势

public List<string> loadSecretQues(string email)
{
    List<string> ques=new List<string>();

    dbConn = new OdbcConnection(dbConnString);
    dbConn.Open();
    cmd = new OdbcCommand();
    cmd.Connection = dbConn;

    cmd = new OdbcCommand("SELECT q1, q2, q3 FROM Information WHERE EmailAdd = '" + email + "'", dbConn);
    dRead = cmd.ExecuteReader();

 if (dRead.HasRows)
  {
    while (dRead.Read())
    {
      ques.Add(dRead["yourColumnName"].ToString());
    }
  }
return ques;
}