none
Создание регистрации RRS feed

  • Вопрос

  • Делаю регистрацию в базе данных на языке программирования VisualBasic. Как сделать что бы данные с Textbox передавались в базы данных Slq server 2008 (т.е пользователь написал имя пользователя "User" и это добавилось в базу данных) за ранее спасибо.
    • Перемещено Abolmasov Dmitry 17 апреля 2012 г. 21:41 (От:Веб)
    17 апреля 2012 г. 14:16

Ответы

  • Вот простейший пример. Строка подключения, имя таблиц и бд должно быть Ваше.

    Imports System.Data.SqlClient
    
    Public Class Form1
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim connectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True"
            Dim textValue As String = TextBox1.Text
            Dim queryString As String = "INSERT INTO Table_1 (Column1) Values( '" & textValue & "');"
    
            Using connection As New SqlConnection(connectionString)
                Dim command As New SqlCommand(queryString, connection)
                connection.Open()
                Dim rowChanges As Int32 = command.ExecuteNonQuery()
            End Using
        End S

    • Предложено в качестве ответа Abolmasov Dmitry 17 апреля 2012 г. 21:42
    • Помечено в качестве ответа Fastm0use 18 апреля 2012 г. 4:46
    17 апреля 2012 г. 16:00
    Модератор
  • Нужно их сделать в виде одног запроса.

    Dim queryString As String = "INSERT INTO Mytable ([User],[Password],[Email],[VIP]) Values( '" & textValue & "','" & textValue1 & и т.д "');"

    • Помечено в качестве ответа Fastm0use 18 апреля 2012 г. 6:22
    18 апреля 2012 г. 5:39
    Модератор
  • Примерно так.

    Imports System.Data.SqlClient
    
    Public Class Form1
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim connectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True"
            Dim textValue As String = TextBox1.Text 'Поле user name, оно должно быть в базе уникальным ключём
            Dim queryString As String = "SELECT * FROM Table_1 WHERE [User]='" & textValue & "';"
    
            Using connection As New SqlConnection(connectionString)
                Dim command As New SqlCommand(queryString, connection)
                connection.Open()
                Dim reader As SqlDataReader = command.ExecuteReader()
                If reader.HasRows Then
                    While reader.Read()
                        If TextBox1.Text = reader("User").ToString() And TextBox2.Text = reader("Password").ToString() Then
                            MessageBox.Show("Зарегистрированный пользователь !")
                            Exit While
                        Else
                            MessageBox.Show("Нет такого пользователя !")
                        End If
                    End While
                Else
                    MessageBox.Show("Нет такого пользователя !")
                End If
            End Using
        End Sub
    End Class
    

    • Помечено в качестве ответа Fastm0use 18 апреля 2012 г. 8:07
    18 апреля 2012 г. 7:58
    Модератор

Все ответы

  • Если речь идёт о ASP.NET то для аутентификации, авторизации и управления пользователями лучше использовать готовый провайдер. Например Membership API, подробности тут и тут.
    17 апреля 2012 г. 14:45
    Модератор
  • не  делаю в приложение Windows Form
    17 апреля 2012 г. 14:54
  • Ну тогда нужно было задать вопрос в ветке "Настольные ПК", думаю модератор перенесёт этот пост. Вам нужно использовать библиотеку ADO.NET, подробности  тут.
    17 апреля 2012 г. 15:21
    Модератор
  • Вот простейший пример. Строка подключения, имя таблиц и бд должно быть Ваше.

    Imports System.Data.SqlClient
    
    Public Class Form1
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim connectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True"
            Dim textValue As String = TextBox1.Text
            Dim queryString As String = "INSERT INTO Table_1 (Column1) Values( '" & textValue & "');"
    
            Using connection As New SqlConnection(connectionString)
                Dim command As New SqlCommand(queryString, connection)
                connection.Open()
                Dim rowChanges As Int32 = command.ExecuteNonQuery()
            End Using
        End S

    • Предложено в качестве ответа Abolmasov Dmitry 17 апреля 2012 г. 21:42
    • Помечено в качестве ответа Fastm0use 18 апреля 2012 г. 4:46
    17 апреля 2012 г. 16:00
    Модератор
  • Исключение из-за конфликтного имени User, не используйте его.  Можете назвать столбец, например, что-то наподобие UserName.
     Или возьмите его в скобки так ([User]).
    17 апреля 2012 г. 18:12
    Модератор
  • Здравствуйте,

    Пожалуйста, не забудьте отметить ответ, который содержит решение вашей проблемы (если она решена). Для этого под каждым сообщением есть кнопка 'Пометить как ответ', которая собственно и сделает сообщение ответом. Тем самым вы отблагодарите пользователя, который помог вам и закроете тему.

    Спасибо.


    Для связи [mail]


    17 апреля 2012 г. 21:44
  • Появилась проблема у меня там 4 поля которые нужно заполнить но он заполняет их в разные строки 

    Dim connectionString = "Data Source=РУСЛАН-ПК\SQLEXPRESS;Initial Catalog=Database;Integrated Security=True"
            Dim textValue As String = TextBox1.Text
            Dim queryString As String = "INSERT INTO Mytable ([User]) Values( '" & textValue & "');"
            Dim textValue1 As String = TextBox2.Text
            Dim queryString1 As String = "INSERT INTO Mytable ([Password]) Values( '" & textValue1 & "');"
            Dim textValue2 As String = TextBox3.Text
            Dim queryString2 As String = "INSERT INTO Mytable ([Email]) Values( '" & textValue2 & "');"
            Dim textValue3 As String = TextBox4.Text
            Dim queryString3 As String = "INSERT INTO Mytable ([VIP]) Values( '" & textValue3 & "');"
    
            Using connection As New SqlConnection(connectionString)
                Dim command As New SqlCommand(queryString, connection)
                Dim command1 As New SqlCommand(queryString1, connection)
                Dim command2 As New SqlCommand(queryString2, connection)
                Dim command3 As New SqlCommand(queryString3, connection)
                connection.Open()
    
            End Using
    



    • Изменено Fastm0use 18 апреля 2012 г. 5:32
    18 апреля 2012 г. 5:31
  • Нужно их сделать в виде одног запроса.

    Dim queryString As String = "INSERT INTO Mytable ([User],[Password],[Email],[VIP]) Values( '" & textValue & "','" & textValue1 & и т.д "');"

    • Помечено в качестве ответа Fastm0use 18 апреля 2012 г. 6:22
    18 апреля 2012 г. 5:39
    Модератор
  • А вообще лучше сразу научитесь использовать параметризованные запросы, подробности тут. Конкатенация строк не очень хороший вариант, чреватый множеством ошибок.
    18 апреля 2012 г. 5:42
    Модератор
  • Спасибо огромное! и еще 1 вопрос теперь как мне сделать форму авторизации т.е если в базе данных есть такой пользователь открывает форум 
    18 апреля 2012 г. 6:25
  • Можно выполнить SELECT запрос с условием WHERE в котором указать нужного юзера и пароль. Если запрос вернет запись - значит верный логин, если не вернет - значит ошибка.

    Для связи [mail]

    18 апреля 2012 г. 7:14
  • Можно выполнить SELECT запрос с условием WHERE в котором указать нужного юзера и пароль. Если запрос вернет запись - значит верный логин, если не вернет - значит ошибка.

    Для связи [mail]

    а можно на примере а то я не знаю как в slq работать с Textbox
    18 апреля 2012 г. 7:29
  • Сейчас будет пример.
    18 апреля 2012 г. 7:34
    Модератор
  • Примерно так.

    Imports System.Data.SqlClient
    
    Public Class Form1
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim connectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True"
            Dim textValue As String = TextBox1.Text 'Поле user name, оно должно быть в базе уникальным ключём
            Dim queryString As String = "SELECT * FROM Table_1 WHERE [User]='" & textValue & "';"
    
            Using connection As New SqlConnection(connectionString)
                Dim command As New SqlCommand(queryString, connection)
                connection.Open()
                Dim reader As SqlDataReader = command.ExecuteReader()
                If reader.HasRows Then
                    While reader.Read()
                        If TextBox1.Text = reader("User").ToString() And TextBox2.Text = reader("Password").ToString() Then
                            MessageBox.Show("Зарегистрированный пользователь !")
                            Exit While
                        Else
                            MessageBox.Show("Нет такого пользователя !")
                        End If
                    End While
                Else
                    MessageBox.Show("Нет такого пользователя !")
                End If
            End Using
        End Sub
    End Class
    

    • Помечено в качестве ответа Fastm0use 18 апреля 2012 г. 8:07
    18 апреля 2012 г. 7:58
    Модератор
  • Присылать и сверять пароль на клиенте - не верное решение. Это должно происходить на стороне сервера, иначе зная ник можно без проблем получить его пароль. Но впринципе если топикстартер просто учится работать с БД - то пойдет.


    Для связи [mail]

    18 апреля 2012 г. 8:06
  • Спасибо огромное еще раз )
    18 апреля 2012 г. 8:08