2015-08-11 2 views
1

Класс обслуживанияВозвращение значения массива из функции внутри класса (ASP.net C#)

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 вопроса (которые являются строковыми типами данных) из моей базы данных и сохранить их в поле со списком. Любые предложения, как получить эти три вопроса? Любые другие способы? Заранее спасибо! :)

+0

Ваш for i loop обработает только первое значение 1, так как вы вернетесь из своей функции. Вам нужно создать массив массивов и вернуть все это? – BugFinder

+0

@BugFinder извините, я не понимаю, что вы пытаетесь скажите, можете ли вы показать мне, как это сделать, вы не против? ») – paulooooo

ответ

0

Вы возвращаетесь из внутреннего loop, чтобы отменить оставшуюся часть итераций, а также пропустить команду УДАЛИТЬ команду, а также закрыть открытое соединение. поэтому я предлагаю вам расположить команду, а также соединение перед возвращением, следовательно, код будет иметь следующий вид:

нет необходимости проверять dvc_mst_tdeposit, потому что если он имеет ни одной строки управления выходит из времени. нет необходимости внешнего for Loop (цикл I), так как (J Loop не достаточно, чтобы справиться с этим сценарием.

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; 
+0

благодаря! Сначала я попробую, а затем сообщу вам – paulooooo

+0

У меня ошибка при захвате элементов в combobox - Лучшее перегруженное совпадение методов для 'System.Web.UI.WebControls.ListItemCollection.Add (System.Web. UI.WebControls.ListItem) 'имеет некоторые недопустимые аргументы - невозможно преобразовать из' string [] 'в' System.Web.UI.WebControls.ListItem ' – paulooooo

+0

, поэтому вам нужно вернуть List из функции –

0

Использование списка вместо строки 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; 
} 
+0

Oh. .! Список может быть напрямую преобразован в 'System.Web.UI.WebControls.ListItem' –

Смежные вопросы