2010-11-18 8 views
3

Я делаю переход от DataTableAdapters в MSVS к созданию хранимых процедур в MS SQL Server.ASP.NET C# и хранимые процедуры

Это то, что у меня есть до сих пор.

protected void Submit_Click(object sender, EventArgs e) 
    { 
     var conString = ConfigurationManager.AppSettings["ConnectionString"].ToString(); 
     using (SqlConnection con = new SqlConnection(conString)) 
     { 
      using (SqlCommand cmd = new SqlCommand("getAdministrators", con)) 
      { 
       cmd.Parameters.Add("@userName", SqlDbType.VarChar).Value = userNameTB.Text; 
       cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = passwordTB.Text; 
       cmd.CommandType = CommandType.StoredProcedure; 
       using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
       { 
        DataSet ds = new DataSet(); 
        da.Fill(ds); 
       } 
      } 
     } 
    } 

Я хочу, чтобы захватить все строки/столбцы и хранить их в DataSet и использовать значение, возвращаемое в моей воле для все, что хочет. Что мне не хватает для этого. Или если у кого-то есть статья, которая может помочь?

Я обновил код для использования using.

Я думаю, что код медленно попасть туда ...

+2

Примечание: вы должны, вероятно, получить в привычку использовать 'using' для вещей, как' 'SqlCommand', SqlConnection' и т.д. –

+0

определенно. «открыть поздно, закрыть рано». также - вы уверены, что эти поля являются «VarChar», а не «NVarChar»? – RPM1984

+0

Прямо в начале On_Click я бросаю туда использование? Любые фрагменты кода или статьи? – balexander

ответ

2

Этот фрагмент кода работает:

public static DataSet GetAll(int id) 
    { 
     using (SqlConnection con = new SqlConnection(Database.ConnectionString)) 
     { 
      using (SqlCommand cmd = new SqlCommand("sp_ContactGetAll", con)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
       { 
        DataSet dsData = new DataSet(); 
        da.Fill(dsData); 
        return dsData; 
       } 
      } 
     } 
    } 
+0

У меня есть код, когда нажата кнопка, так что я должен заменить RETURN? – balexander

+0

ничего не возвращайте, замените мое объявление функции на объявление объявления submit_click и отпустите оператор return. –

0

Я могу ошибаться, но я ожидаю, что следующие работы:

using(var reader = cmd.ExecuteReader()) { 
    ds.Tables[0].Load(reader); 
} 

(если вы хотите, чтобы заполнить таблицу нулевого)

+0

Я хочу вернуть все в хороший организованный набор и использовать наименьшее количество кода для ссылки на него. – balexander

+0

@ Bry4n прекрасная цель - я не понимаю, что это означает с точки зрения моего ответа. –

+0

Не знаю. Вероятно, я не знаю правильного вопроса. Я никогда не работал с SP в C#. Я в основном использую ColdFusion на работе, который сильно отличается. Как я использую DataSets и ExecuteReader? Который должен быть в или из связи? ha – balexander