не вставляйте нулевые данные в форму c# - PullRequest
0 голосов
/ 01 апреля 2020

Я сделал базу данных SQL и форму C#. Форма работает правильно. Когда я отправляю данные из формы, данные вставляются в таблицу правильно. Но я пытался, если форма только одно поле или пусто, не отправлять данные в таблицу. Я подготовил не допускаются нулевые данные в полях таблицы. Но кроме первичного ключа, я могу вставить нулевые данные для других полей.

Это мой основной код формы. Пожалуйста, исправьте это

    private void Form1_Load(object sender, EventArgs e)
    {
        txtPassword.PasswordChar = '*';
        txtPasswordNew.PasswordChar = '*';
        gboxSignup.Visible = false;
    }

    private void btnOrSignup_Click(object sender, EventArgs e)
    {
        gboxSignup.Visible = true;

    }

    private void btnSignupNew_Click(object sender, EventArgs e)
    {
        if (txtFirstNameNew.Text != null && txtLasyNameNew.Text != null && txtUserNameNew.Text != null && txtPasswordNew.Text != null && txtEmailNew.Text != null)
        {
            try
            {
                Connect obj = new Connect();
                obj.conn.ConnectionString = obj.locate;
                obj.conn.Open();
                String insertUser = "insert into userTable values ('"+txtFirstNameNew.Text+ "','" +txtLasyNameNew.Text+ "','" +txtEmailNew.Text+ "','" +txtUserNameNew.Text+ "','" +txtPasswordNew.Text+"')";
                obj.cmd.Connection = obj.conn;
                obj.cmd.CommandText = insertUser;
                obj.cmd.ExecuteNonQuery();
                MessageBox.Show("Signup has been completed");
                gboxSignup.Visible = false;
                txtFirstNameNew.Text = "";
                txtLasyNameNew.Text = "";
                txtEmailNew.Text = "";
                txtPasswordNew.Text = "";
                txtUserNameNew.Text = "";



            }   
            catch (Exception ex)
            {
                MessageBox.Show("ERROR" + ex);
            }
        }
        else
        {
            MessageBox.Show("ERROR!!!  Fill in the All Fields");
        }
    }

    private void btnLogin_Click(object sender, EventArgs e)
    {
        if(txtUserName.Text != null && txtPassword.Text != null)
        {
            try
            {
                Connect obj = new Connect();
                obj.conn.ConnectionString = obj.locate;

                obj.conn.Open();
                SqlDataAdapter adapter = new SqlDataAdapter ("SELECT COUNT (*) FROM userTable where UserName = '" +txtUserName.Text+"' and Password = '"+txtPassword.Text+"' ", selectConnection: obj.conn );
                DataTable dt = new DataTable();
                adapter.Fill(dt);
                if (dt.Rows[0][0].ToString() == "1")
                {
                    frmWelcome meLoad = new frmWelcome();
                    meLoad.Visible = true;
                    this.Hide();
                    MessageBox.Show("Sucessfully Login");
                }
                else
                {
                    MessageBox.Show("User Name Or Password is incorrect - Try it");
                }
                obj.conn.Close();

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        else
        {
            MessageBox.Show("No Empty Field Allowed");
        }
    }
}

}

это код класса соединения

class Connect
{
    public SqlConnection conn = new SqlConnection();
    public SqlCommand cmd = new SqlCommand();
    public string locate = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename='J:\D Drive\Excersize\C#\Windowsform\WindowsFormsApp1\UserDB.mdf';Integrated Security=True";

}

это мой дизайн таблицы (userTable) enter image description here

это после вставки данных. enter image description here

это мой дизайн формы enter image description here

вставка может обнулять данные enter image description here

вставка данных без первичного ключа enter image description here

Ответы [ 3 ]

2 голосов
/ 01 апреля 2020

Строка текстового поля не нулевая, она просто пустая. Таким образом, база данных может вставить его. Используйте !string.IsNullOrEmpty(text) вместо text != null

1 голос
/ 01 апреля 2020

Я бы использовал

if (!string.IsNullOrWhitespace(txtFirstNameNew.Text) && !string.IsNullOrWhitespace(txtLasyNameNew.Text) && !string.IsNullOrWhitespace(txtUserNameNew.Text) && !string.IsNullOrWhitespace(txtPasswordNew.Text) && !string.IsNullOrWhitespace(txtEmailNew.Text))

string.IsNullOrEmpty не обрабатывает регистр, если в текстовых полях есть пробельные символы.

0 голосов
/ 01 апреля 2020

Этот ответ указывает c на ваши данные:

Ваш первичный ключ - столбец «Имя»

В вашей первой строке есть кто-то с пустым «Имя», с фамилия "tharaka".

Поскольку вы не можете повторить первичный ключ, это означает, что у вас не может быть другой строки с пустым «именем»

Так на вашем изображении, которое показывает ошибку , вы пытаетесь ввести пустое «Имя», что запрещено.

Итак, чтобы решить вашу проблему, просто убедитесь, что «Имя» всегда имеет значение. В противном случае вам придется удалить его как столбец первичного ключа.

Это также означает, что у вас не может быть двух строк с одинаковым «именем». Я бы предложил вам добавить поле ID с автоинкрементным целым числом в качестве вашего первичного ключа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...