powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Авторизация с помощью процедуры
12 сообщений из 12, страница 1 из 1
Авторизация с помощью процедуры
    #37283948
ilovemylol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Как обычно хочу заранее поблагодарить форум который спасал меня уже раз пять. Большое спасибо всем и к счастью я не составлю вам конкуренцию в дальнейшем :) Прошу помочь решить следующую задачу.... спасибо !



Таблица
dbo.users (login char(10), pass char(10), dol int)

Есть процедура
ALTER PROCEDURE [dbo].[FindUser]
(@NK char(15)
,@P char(15)
,@n tinyint output)
AS
BEGIN
select @n=dol
From dbo.users
Where (login=@NK) AND (pass=@P)
IF (@n is null) SET @n=0
END


Далее есть страничка на которой два текстбокса и кнопочка

Как мне по нажатии кнопочки вызвать процедуру, передать в нее логин и пароль, получить параметр "dol" на выходе и сравнить его если 1 - то одну ссылку открыть если 2 то другую.
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37283961
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilovemylol,
А не подскажете на каком языке приведенное выше заклинание? Я сомневаюсь в том, что знаю этот программный язык...
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284014
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Pristilovemylol,
А не подскажете на каком языке приведенное выше заклинание? Я сомневаюсь в том, что знаю этот программный язык...На языке TSQL.


Автор: Способов множество, но зависит от того, каким способом ты подключаешься к СУБД. Если через ADODB - самым логичным будет использование объекта Command - почитай по нему хелп или посмотри примеры на форуме.
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284119
ilovemylol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поискал написал что-то такое.... не понял где прописать саму процедуру вызова, подскажите пожалуйста.

Dim Conn As ADODB.Connection
Dim strConn As String
Dim oCmd As ADODB.Command
Dim oPara As ADODB.Parameter
Conn = New ADODB.Connection
Conn.ConnectionString = "Data Source=PETKA-1948B9B7C\LOLKA;Initial Catalog=vove;Persist Security Info=True;User ID=sa;Password=123"
GetConnectOLEDB()
Conn.Open()

oCmd = CreateObject("adodb.command")
oCmd.ActiveConnection = Conn.ConnectionString

oPara = oCmd.CreateParameter("@NK", nChar, adParamInput, TextBox1)
oCmd.Parameters.Append(oPara)

oPara = oCmd.CreateParameter("@P", nChar, adParamInput, TextBox2)
oCmd.Parameters.Append(oPara)
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284125
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
ilovemylol,

oCmd.execute
10557067
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284127
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
или вопрос был об этом ... ?
ilovemylol
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 Dim Conn As ADODB.Connection
        Dim strConn As String
        Dim oCmd As ADODB.Command
        Dim oPara As ADODB.Parameter
        Conn = New ADODB.Connection
        Conn.ConnectionString = "Data Source=PETKA-1948B9B7C\LOLKA;Initial Catalog=vove;Persist Security Info=True;User ID=sa;Password=123"
        GetConnectOLEDB()
        Conn.Open()

        oCmd = CreateObject("adodb.command")
        oCmd.ActiveConnection = Conn.ConnectionString

oCmd.CommandText = "FindUser"
oCmd.CommandType = adCmdStoredProc


        oPara = oCmd.CreateParameter("@NK", nChar, adParamInput, TextBox1)
        oCmd.Parameters.Append(oPara)

        oPara = oCmd.CreateParameter("@P", nChar, adParamInput, TextBox2)
        oCmd.Parameters.Append(oPara)
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284254
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, так, по ходу дела... вроде из контекста следует, что в процедуре надо использовать varchar, а не char в качестве входных параметров.
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284297
ilovemylol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ругается на строчку oPara = oCmd.CreateParameter("@NK", char, adParamInput, TextBox1)
А именно на тип данных "char" :( что делать?





Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click


        Dim Conn As ADODB.Connection
        Dim strConn As String
        Dim oCmd As ADODB.Command
        Dim oPara As ADODB.Parameter
        Dim f As int
        Conn = New ADODB.Connection
        Conn.ConnectionString = "Data Source=PETKA-1948B9B7C\LOLKA;Initial Catalog=vove;Persist Security Info=True;User ID=sa;Password=123"
        GetConnectOLEDB()
        Conn.Open()

        oCmd = CreateObject("adodb.command")
        oCmd.ActiveConnection = Conn.ConnectionString

        oCmd.CommandText = "FindUser"
        oCmd.CommandType = adCmdStoredProc()

        oPara = oCmd.CreateParameter("@NK", char, adParamInput, TextBox1)
        oCmd.Parameters.Append(oPara)

        oPara = oCmd.CreateParameter("@P", char, adParamInput, TextBox2)
        oCmd.Parameters.Append(oPara)

        oCmd.Parameters.Refresh()
        oCmd.Execute()
        f = oCmd.Parameters( 0 ).Value

        If f =  1  Then Response.Redirect("Default.aspx", True)
        If f =  2  Then Response.Redirect("About.aspx", True)

    End Sub


ALTER PROCEDURE [dbo].[FindUser]
(@NK char( 15 )
,@P char( 15 )
,@n tinyint output)
AS
BEGIN
select @n=dol
From dbo.users
Where (login=@NK) AND (pass=@P)
IF (@n is null) SET @n= 0 
return @n
END
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284302
ilovemylol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ilovemylol,

и еще type int is not defined
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284432
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilovemylolРугается на строчку oPara = oCmd.CreateParameter("@NK", char, adParamInput, TextBox1)
А именно на тип данных "char" :( что делать?
Хелп по CreateParameter внимательно читать:
Settings and Return Values

Sets or returns one of the following DataTypeEnum values. The corresponding OLE DB type indicator is shown in parentheses in the description column of the following table. For more information about OLE DB data types, see Chapter 10 and Appendix A of the OLE DB Programmer's Reference.

Constant Description
adArray Joined in a logical OR together with another type to indicate that the data is a safe-array of that type (DBTYPE_ARRAY).
adBigInt An 8-byte signed integer (DBTYPE_I8).
adBinary A binary value (DBTYPE_BYTES).
adBoolean A Boolean value (DBTYPE_BOOL).
adByRef Joined in a logical OR together with another type to indicate that the data is a pointer to data of the other type (DBTYPE_BYREF).
adBSTR A null-terminated character string (Unicode) (DBTYPE_BSTR).
adChar A String value (DBTYPE_STR).
adCurrency A currency value (DBTYPE_CY). Currency is a fixed-point number with four digits to the right of the decimal point. It is stored in an 8-byte signed integer scaled by 10,000.
adDate A Date value (DBTYPE_DATE). A date is stored as a Double, the whole part of which is the number of days since December 30, 1899, and the fractional part of which is the fraction of a day.
adDBDate A date value (yyyymmdd) (DBTYPE_DBDATE).
adDBTime A time value (hhmmss) (DBTYPE_DBTIME).
adDBTimeStamp A date-time stamp (yyyymmddhhmmss plus a fraction in billionths) (DBTYPE_DBTIMESTAMP).
adDecimal An exact numeric value with a fixed precision and scale (DBTYPE_DECIMAL).
adDouble A double-precision floating point value (DBTYPE_R8).
adEmpty No value was specified (DBTYPE_EMPTY).
adError A 32-bit error code (DBTYPE_ERROR).
adGUID A globally unique identifier (GUID) (DBTYPE_GUID).
adIDispatch A pointer to an IDispatch interface on an OLE object (DBTYPE_IDISPATCH).
adInteger A 4-byte signed integer (DBTYPE_I4).
adIUnknown A pointer to an IUnknown interface on an OLE object (DBTYPE_IUNKNOWN).
adLongVarBinary A long binary value (Parameter object only).
adLongVarChar A long String value (Parameter object only).
adLongVarWChar A long null-terminated string value (Parameter object only).
adNumeric An exact numeric value with a fixed precision and scale (DBTYPE_NUMERIC).
adSingle A single-precision floating point value (DBTYPE_R4).
adSmallInt A 2-byte signed integer (DBTYPE_I2).
adTinyInt A 1-byte signed integer (DBTYPE_I1).
adUnsignedBigInt An 8-byte unsigned integer (DBTYPE_UI8).
adUnsignedInt A 4-byte unsigned integer (DBTYPE_UI4).
adUnsignedSmallInt A 2-byte unsigned integer (DBTYPE_UI2).
adUnsignedTinyInt A 1-byte unsigned integer (DBTYPE_UI1).
adUserDefined A user-defined variable (DBTYPE_UDT).
adVarBinary A binary value (Parameter object only).
adVarChar A String value (Parameter object only).
adVariant An Automation Variant (DBTYPE_VARIANT).
adVector Joined in a logical OR together with another type to indicate that the data is a DBVECTOR structure, as defined by OLE DB, that contains a count of elements and a pointer to data of the other type (DBTYPE_VECTOR).
adVarWChar A null-terminated Unicode character string (Parameter object only).
adWChar A null-terminated Unicode character string (DBTYPE_WSTR).
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284446
ilovemylol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честно не понимаю :( adChar A String value (DBTYPE_STR). По идее можно использовать
...
Рейтинг: 0 / 0
Авторизация с помощью процедуры
    #37284456
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
ilovemylolЧестно не понимаю :( adChar A String value (DBTYPE_STR). По идее можно использовать
что не понимаеш ?
второй параметр в CreateParameter - число, определяющее тип параметра
если библиотека АДО подключена, то можно использовать именованные константы задающие типы
Код: plaintext
1.
Const adChar =  129  (&H81)
    Member of ADODB.DataTypeEnum


...и если используеш oCmd.Parameters.Refresh(), то CreateParameter - вообще не нужен,

это код для Акцессовского адп, родточиш под себя
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
' Выполнение хранимой процедуры
Public Function RunStoredProc(ByVal ProcName As String, ParamArray ProcParam()) As Variant
On Error GoTo ErrExit
  Dim cn As ADODB.Connection
  Dim cmd As ADODB.Command
  Dim i As Integer
  Set cn = CurrentProject.Connection
  Set cmd = New ADODB.Command
  ' Настройка объекта команды для работы с хранимой процедурой
  With cmd
    .CommandText = ProcName
    .CommandType = adCmdStoredProc
    .ActiveConnection = cn
    .Parameters.Refresh
    If IsArray(ProcParam) Then
      If (UBound(ProcParam) - LBound(ProcParam) +  1  >  0 ) Then
        i =  0 
        Do While (UBound(ProcParam) - LBound(ProcParam) +  1  - i) >  0 
          .Parameters(i +  1 ).Value = ProcParam(LBound(ProcParam) + i)
          i = i +  1 
        Loop
      End If
    End If
  End With
  cmd.Execute
  RunStoredProc = cmd.Parameters( 0 ).Value
FreeExit:
  Exit Function
ErrExit:
  RunStoredProc = Null
  MsgBox Err.Description, vbCritical, ProcName
  Resume FreeExit
End Function
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Авторизация с помощью процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]