Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: как получить true/false от SQL запроса ?? Добавлено: 14.09.10 12:22  

Автор вопроса:  qtronix | Web-сайт: hkmeteor.ru
Господа день добрый!!!
Прошу сильно не пинать, я в програмировании ньюб, но вопрос вот в чем
есть некая БД на MySQL, в БД есть таблица users в таблице поля с логинами и паролями
подскажите плз как мне сделать проверку на существование некой записи ??
я делаю запрос
Dim MySQLcmd As String = "SELECT login, password FROM users WHERE login = " & Login & " AND password = " & Passwd & ""

но как мне получить был ли этот запрос rtue или false ??
либо есть какойто другой способ проверки наличия записи??
заранее благодарен за ответы.!!

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 Сергей



ICQ: 558230345 

Вопросов: 7
Ответов: 91
 Профиль | | #1 Добавлено: 14.09.10 12:46
я бы сделал так....
"SELECT COUNT(*) FROM users WHERE login = " & Login & " AND password = " & Passwd & ""

тогда тебе вернется количество записей. и результат всегда будет возвращаться.
Если = 0 , то нет такого соответствия(или FASE)
Если = 1 , то все нормально(или TRUE)
иначе надо смотреть в программе, почему больше 1 совпадения.

Ответить

Номер ответа: 2
Автор ответа:
 qtronix



Вопросов: 4
Ответов: 5
 Web-сайт: hkmeteor.ru
 Профиль | | #2
Добавлено: 14.09.10 13:08
Ок спасибо большое
еще вопросик, а то чтото я совсем запутался
вот
  1. Public Sub Mysqldb(ByVal Login As String, ByVal Passwd As String) 'передаем в функцию переменные логина и пароля для запроса
  2.         Try
  3.             Dim ConnectionString As String = "Driver={MySQL ODBC 5.1 Driver};SERVER=192.168.0.250;DATABASE=balisage;UID=dbowner;Password=somepass;Option=3"
  4.             Dim MySQLconnection As New OdbcConnection(ConnectionString)
  5.             MySQLconnection.Open()
  6.             Dim MySQLcmd As String = "SELECT COUNT(*) FROM users WHERE login = " & Login & " AND password = " & Passwd & "" 'вставляем в SQL запрос имя пользователя и пароль полученные с формы
  7.             Dim DtAdap As New OdbcDataAdapter(MySQLcmd, MySQLconnection)
  8.             Dim DtSet As New System.Data.DataSet
  9.             'DtAdap.Fill(DtSet)
  10.             'DataGridView1.DataSource = DtSet.Tables(0)
  11.             'MySQLconnection.Close()
  12.         Catch ex As Exception
  13.             MsgBox(ex.ToString)
  14.         End Try
  15.  
  16.     End Sub

как мне получить 0 или 1 ??
я чтото никак не допру ??
если несложно конечно....
Просто не доконца еще разобрался со всеми этими датасетами, датаадаптерами, и прочей датахренью :(

Ответить

Номер ответа: 3
Автор ответа:
 Сергей



ICQ: 558230345 

Вопросов: 7
Ответов: 91
 Профиль | | #3 Добавлено: 14.09.10 13:37
не могу написать точно код. Может напишут те, кто работает с MySQL. Я работаю с ORACLE, FIREBIRD...
Но судя по всему надо юзать DATASET, в который возвращаются записи. В данном случае вернется одна запись.

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 14.09.10 14:51
  1. MySQLcmd.ExecuteScalar()


Вернет по-моему object, тебе нужно будет привести к числу и все.

Ответить

Номер ответа: 5
Автор ответа:
 qtronix



Вопросов: 4
Ответов: 5
 Web-сайт: hkmeteor.ru
 Профиль | | #5
Добавлено: 15.09.10 13:36
вобщем то разобрался :)
если комуто поможет
вот что у меня получилось
  1.   Public Sub Mysqldb(ByVal Login As String, ByVal Passwd As String) 'передаем в функцию переменные логина и пароля для запроса
  2.         Try
  3.             Dim wrfy As String
  4.             Dim ConnectionString As String = "Driver={MySQL ODBC 5.1 Driver};SERVER=192.168.0.250;DATABASE=balisage;UID=some_user;Password=some_password;Option=3"
  5.             Dim MySQLconnection As New OdbcConnection(ConnectionString)
  6.             MySQLconnection.Open()
  7.             Dim MySQLcmd As String = "SELECT COUNT(*) FROM users WHERE login = '" & Login & "' AND password = '" & Passwd & "'" 'передаем логин и пр=ароль из формы в строку подключения
  8.             Dim Command As New OdbcCommand(MySQLcmd, MySQLconnection)
  9.             Dim DtRdr As OdbcDataReader = Command.ExecuteReader()
  10.             While DtRdr.Read()
  11.                 wrfy = (DtRdr(0).ToString) 'возвращаем переменной результат запроса 1 - если запрос выполнен успешно, 0 - если искомя комбинация не найдена
  12.             End While
  13.             DtRdr.Close()
  14.             MySQLconnection.Close()
  15.             Debug.WriteLine(wrfy)
  16.         Catch ex As Exception
  17.             MsgBox(ex.ToString)
  18.         End Try
  19.  
  20.     End Sub

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 15.09.10 13:56
Мда, а ExecuteScalar все же чем не угодил?

Ответить

Номер ответа: 7
Автор ответа:
 Сергей



ICQ: 558230345 

Вопросов: 7
Ответов: 91
 Профиль | | #7 Добавлено: 15.09.10 14:27
Здесь, чтобы упростить, вместо
  1. While DtRdr.Read()
  2.          wrfy = (DtRdr(0).ToString) 'возвращаем переменной результат запроса 1 - если запрос выполнен успешно, 0 - если искомя комбинация не найдена
  3.             End While


можно просто написать

  1.  
  2.  
  3. DtRdr.Read()
  4.  wrfy = (DtRdr(0).ToString)



так как строка в ответе придет одна.

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 15.09.10 17:16
Artyom пишет:
Мда, а ExecuteScalar все же чем не угодил?

Ответить

Номер ответа: 9
Автор ответа:
 Сергей



ICQ: 558230345 

Вопросов: 7
Ответов: 91
 Профиль | | #9 Добавлено: 16.09.10 09:48
лично я просто ни разу не использовал ExecuteScalar. Наверное это тоже хорошо!!!!

Ответить

Номер ответа: 10
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #10
Добавлено: 16.09.10 10:23
ExecuteReader используется там, где результатом запроса ожидается табличные данные, а ExecuteScalar удобно использовать там, где результат запроса - единственное значение. Как раз твой случай. И не надо вот этого громадья:
  1. While DtRdr.Read()
Вот, например:
  1. Friend Function GetCount(ByVal descr As String) As Integer
  2.         Dim MyConn As New SqlClient.SqlConnection
  3.         Dim count As Integer = 0
  4.         MyConn.ConnectionString = Me.CS
  5.         Dim query As String = "SELECT COUNT (Descr) FROM " & Me.selTab & " WHERE Descr='" & descr & "'"
  6.         Dim command As SqlCommand = New SqlCommand(query, MyConn)
  7.         MyConn.Open()
  8.         Count = command.ExecuteScalar
  9.         MyConn.Close()
  10.         Return count
  11.     End Function

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам