Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2012, 13:16   #1
Wiktor591
Пользователь
 
Регистрация: 24.07.2012
Сообщений: 10
Восклицание С# sql сервер, возникла проблема

Добрый день уважаемые программисты форума.

У меня проблема

Создал 2 формы

форма авторизация a.cs
login и password + 2 кнопки (выход и ок)

форма программы APM.cs

создал БД и в ней таблицу user где имеются логин и пароль для формы авторизации. Ввожу логин и пароль мне пишет, что нет такого логина и пароля. Хотя он в БД присутствует.

Должно работать если пароль верный, то переходит на следующею форму, если нет то пишет ошибку.


Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace APM
{
    public partial class a : Form
    {
        public a()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close ();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            SqlConnection connection = new SqlConnection();
            SqlCommand comand = new SqlCommand();
            SqlDataAdapter adaptor = new SqlDataAdapter();
            DataSet dataset = new DataSet();
 
            connection.ConnectionString = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\db_APM.mdf;Integrated Security=True;User Instance=True");
            comand.CommandText = @"SELECT * FROM [User] WHERE user=admin'" + textBox1.Text + "'AND password=123456'" + textBox2.Text + "';";
            connection.Open();
 
            comand.Connection = connection;
 
            adaptor.SelectCommand = comand;
            adaptor.Fill(dataset, "0");
            int count = dataset.Tables[0].Rows.Count;
 
            if (count > 0)
            {
                APM f2 = new APM();
                this.Hide();
            }
            else
            {
                
                MessageBox.Show("Не коректный логен или пароль","", MessageBoxButtons.OK, MessageBoxIcon.Error);
                textBox1.Clear();
                textBox2.Clear();
            }
        }
    }
}
Wiktor591 вне форума Ответить с цитированием
Старый 24.07.2012, 14:39   #2
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Код:
user=admin'" + textBox1.Text + "'AND password=123456'" + textBox2.Text + "';";
если учесть что в текст боксах логин и пароль то должно быть так
Код:
user='" + textBox1.Text + "' AND password='" + textBox2.Text + "'"
wm_leviathan вне форума Ответить с цитированием
Старый 24.07.2012, 14:45   #3
Wiktor591
Пользователь
 
Регистрация: 24.07.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от wm_leviathan Посмотреть сообщение
Код:
user=admin'" + textBox1.Text + "'AND password=123456'" + textBox2.Text + "';";
если учесть что в текст боксах логин и пароль то должно быть так
Код:
user='" + textBox1.Text + "' AND password='" + textBox2.Text + "'"
исправил


Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace APM
{
    public partial class a : Form
    {
        public a()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close ();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            SqlConnection connection = new SqlConnection();
            SqlCommand comand = new SqlCommand();
            SqlDataAdapter adaptor = new SqlDataAdapter();
            DataSet dataset = new DataSet();
 
            connection.ConnectionString = (@"Data Source=prodenis\SQLEXPRESS;AttachDbFilename=|DataDirectory|\db_APM.mdf;Integrated Security=True;User Instance=True");
            comand.CommandText = @"SELECT * FROM [User] WHERE user='" + textBox1.Text + "'AND password='" + textBox2.Text + "';";
            connection.Open();

            comand.Connection = connection;
            connection.Close();

            adaptor.SelectCommand = comand;
            adaptor.Fill(dataset, "user");
            int count = dataset.Tables.Add("user").Rows.Count;
 
            if (count > 0)
            {
                APM f2 = new APM();
                this.Hide();
            }
            else
            {
                
                MessageBox.Show("Не коректный логен или пароль","", MessageBoxButtons.OK, MessageBoxIcon.Error);
                textBox1.Clear();
                textBox2.Clear();
            }
        }
    }
}
теперь выдает ошибку

Необработанное исключение типа "System.Data.DuplicateNameException " произошло в System.Data.dll

Дополнительные сведения: DataTable с именем "user" уже принадлежит этому DataSet.
Wiktor591 вне форума Ответить с цитированием
Старый 24.07.2012, 18:01   #4
Wiktor591
Пользователь
 
Регистрация: 24.07.2012
Сообщений: 10
По умолчанию

сделал так, результат один и тот же

не хочет считывать с БД логин и пароль

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace APM
{
    public partial class a : Form
    {
        public a()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int count = 0;
            using (SqlConnection connection = new SqlConnection(@"Data Source=prodenis\SQLEXPRESS;AttachDbFilename=|DataDirectory|\db_APM.mdf;Integrated Security=True;user Instance=True"))
            using (SqlCommand command = new SqlCommand("select * from [user] where user=@par1 and password=@par2", connection))
            {
                command.Parameters.AddWithValue("@par1", textBox1.Text);
                command.Parameters.AddWithValue("@par2", textBox2.Text);
                connection.Open();
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                        count += 1;
                }
                connection.Close();
            }
            if (count == 0)
            {
                MessageBox.Show("Пароль неверен!");
                return;
            }
            this.Hide();
            APM frm2 = new APM();
            frm2.Show();
        }
    }
}
Wiktor591 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возникла проблема... ycropp HTML и CSS 4 16.11.2011 18:43
возникла проблема dvarv Общие вопросы C/C++ 7 19.04.2011 21:03
Возникла проблема! Файзулка Помощь студентам 1 22.11.2009 21:42
Возникла проблема в программировании SQL запроса с помощью компонента TQuery Herly БД в Delphi 23 07.11.2009 18:16