2015-10-19 2 views
0

Рассмотрим следующий кодСохранение нескольких значений из заявления сервера SQL

Dim cmd As New SqlCommand("SELECT * FROM [UserDetail].[User] where UserName = @username and UserPass = @password", con) 
cmd.Parameters.AddWithValue("@username", login_username.Text) 
cmd.Parameters.AddWithValue("@password", hash_pass) 

Dim da As New SqlDataAdapter(cmd) 

Предположим, что существует имя столбца status Я хочу, чтобы сохранить результат status в переменной.

P.S Я новичок в VB.NET так, пожалуйста, медведь со мной

ответ

1

Вы можете выполнить оператор на SqlDataReader или заполнить DataTable. Пример с SqlDataReader является

Dim reader As SqlDataReader 
Dim cmd As New SqlCommand("SELECT * FROM [UserDetail].[User] where UserName [email protected] and [email protected]", con) 
cmd.Parameters.AddWithValue("@username", login_username.Text) 
cmd.Parameters.AddWithValue("@password", hash_pass) 
reader = cmd.ExecuteReader() 
Dim strStatus as String = "" 
If reader.HasRows Then 
    reader.Read() 
    strStatus = reader.Item("status").ToString 
End If 

Здесь DataTable версия

Dim cmd As New SqlCommand("SELECT * FROM [UserDetail].[User] where UserName [email protected] and [email protected]", con) 
cmd.Parameters.AddWithValue("@username", login_username.Text) 
cmd.Parameters.AddWithValue("@password", hash_pass) 
Dim da As SqlDataAdapter = New SqlDataAdapter() 
Dim dt As DataTable = New DataTable("TableA") 
da.SelectCommand = cmd 
da.Fill(dt) 
Dim strStatus as String = "" 
'you can process the DataTable in a for/for each loop or process a single row as follows 
If dt.Rows.Count > 0 Then 
    strStatus = dt.Rows(0).Item("status").ToString() 
End If 
+0

Спасибо .... поэтому я использую Data reader, когда хочу получить данные столбца и таблицу данных, когда я хочу проверить, возвращаются ли строки? – user2650277

+0

Нет, это не так, как поддержка поиска, так и подсчет. Использование зависит от требования. Для получения дополнительной информации вы можете обратиться http://www.c-sharpcorner.com/Blogs/12509/difference-between-datareader-dataset-dataadapter-and-data.aspx и http://www.mindfiresolutions.com/Choosing- между-DataTable-vs-DataReader-in-ADONET-270.php – haraman

+0

Спасибо за статью, но вы можете отредактировать свой ответ, чтобы добавить эквивалент, используя таблицу данных – user2650277

0

Если status возвращает единственное значение ячейки (однорядные в колонке статуса), то вы можете использовать следующий метод

Dim cmd As New SqlCommand("SELECT * FROM [UserDetail].[User] where UserName = @username and UserPass = @password", con) 
cmd.Parameters.AddWithValue("@username", login_username.Text) 
cmd.Parameters.AddWithValue("@password", hash_pass) 
Dim status As String 
status = IIf(IsDBNull(cmd.ExecuteScalar), "Not Available", cmd.ExecuteScalar) 
     'IsDBNull is used tocheck whether cmd.ExecuteScalar is null or what 
     'IIF() is used to handle null here, You can assign custom value for status variable if 
     'select returns null value 
     'If you dont need to use them its possible to write 
     ' status = cmd.ExecuteScalar 

Дополнительная информация о ExecuteScalar()

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